Anonympy——使用Python进行数据匿名化
目录
介绍
背景
使用代码
兴趣点
- GitHub存储库
介绍
我们的世界充斥着数字数据。2.5万亿字节是每天产生的数据量。大多数时候,数据是个人的和敏感的,与它相关的人不想透露它。个人和敏感数据的一些示例是姓名、身份证号码、种族等。但是,数据还包含有价值的业务洞察力。那么,我们如何平衡隐私与收集和共享有价值信息的需求?这就是数据匿名化的用武之地。
背景
随着Python包对数据匿名化和可扩展性的需求不断增长,我认为创建一个可以提供多种数据匿名化技术且易于使用的库会很好。请看看,我的第一个包——anonympy,希望为开源社区做出贡献并帮助其他用户处理敏感数据。就目前而言,该包提供了匿名化表格(pd.DataFrame)和图像数据的功能。
使用代码
作为使用示例,让我们匿名化以下数据集——sample.csv。
让我们从安装包开始。可以分两步实现:
pip install anonympy
pip install cape-privacy==0.3.0 --no-deps
接下来,加载我们将尝试匿名化的示例数据集:
import pandas as pdurl = r'https://raw.githubusercontent.com/ArtLabss/open-data-anonimizer/0287f675a535101f145cb975baf361a96ff71ed3/examples/files/new.csv'
df = pd.read_csv(url, parse_dates=['birthdate'])
df.head()
通过查看专栏,我们可以看到所有内容都是个人和敏感的。因此,我们必须将相关技术应用于每一列。我们需要初始化我们的dfAnonymizer对象。
from anonympy.pandas import dfAnonymizer anonym = dfAnonymizer(df)
在应用任何函数之前,了解列是什么数据类型很重要。让我们检查一下数据类型,看看我们可以使用哪些方法。
# check dtypes
print(anonym.numeric_columns)
print(anonym.categorical_columns)
print(anonym.datetime_columns) ... ['salary', 'age']
... ['first_name', 'address', 'city', 'phone', 'email', 'web']
... ['birthdate']# available methods for each data type
from anonympy.pandas.utils import available_methodsprint(available_methods())... `numeric`: * Perturbation - "numeric_noise" * Binning - "numeric_binning" * PCA Masking - "numeric_masking" * Rounding - "numeric_rounding"
`categorical`: * Synthetic Data - "categorical_fake" * Synthetic Data Auto - "categorical_fake_auto" * Resampling from same Distribution - "categorical_resampling" * Tokenazation - "categorical_tokenization" * Email Masking - "categorical_email_masking"
`datetime`: * Synthetic Date - "datetime_fake" * Perturbation - "datetime_noise"
`general`: * Drop Column - "column_suppression"
在我们的dataset中,我们有6个分类列,2个数字列和1个datetime类型列。此外,从返回的available_methods列表中,我们可以找到每种数据类型的函数。
让我们在age列中添加一些随机噪声,将salary列中的值四舍五入并部分屏蔽email列。
anonym.numeric_noise('age')
anonym.numeric_rounding('salary')
anonym.categorical_email_masking('email') # or with a single line
# anonym.anonymize({'age':'numeric_noise', 'salary':'numeric_rounding', 'email':'categorical_email_masking'})
调用to_df()以查看更改,或者为了简短的摘要,请调用info()方法。
anonym.info()
现在我们想用假名字替换first_name列中的名字。为此,我们首先必须检查Faker是否有相应的方法。
from anonympy.pandas.utils import fake_methods print(fake_methods('f')) # agrs: None / 'all' / any letter ... factories, file_extension, file_name, file_path, firefox, first_name,
first_name_female, first_name_male, first_name_nonbinary, fixed_width,
format, free_email, free_email_domain, future_date, future_datetime
很好,Faker有一个方法叫做first_name,让我们排列列。
anonym.categorical_fake('first_name') # passing a dictionary is also valid -> {column_name: method_name}
# anonym.categorical_fake({'first_name': 'first_name_female'}
事实证明,检查fake_methods其他列名,Faker 也有address和city的方法。该web列可以用url方法代替,phone可以用phone_number代替。
anonym.categorical_fake_auto() # this will change `address` and `city` # because column names correspond to method names
anonym.categorical_fake({'web': 'url', 'phone': 'phone_number'}) # here we need to specify, # because column names differs from method name
剩下要匿名化的最后一列是birthdate。由于我们有包含相同信息的age列,我们可以使用column_supression方法删除此列。但是,为了清楚起见,让我们添加一些噪音。
anonym.datetime_noise('birthdate')
仅此而已。现在让我们比较匿名化前后的数据集。
前:
后:
现在,您的数据集可以安全地公开发布。
兴趣点
数据隐私和保护是数据处理的重要组成部分,应引起重视。每个人都希望他的个人和敏感数据受到保护和安全。因此,在本文中,我向您展示了如何使用anonympy进行简单的匿名化和python的伪匿名化。这个库不应该用作万能的魔杖,您仍然必须彻底了解您的数据和正在应用的技术,并始终牢记您的最终目标。
这是包的GitHub存储库——anonympy。
https://www.codeproject.com/Articles/5324569/anonympy-Data-Anonymization-with-Python
Anonympy——使用Python进行数据匿名化相关推荐
- 使用 OpenCV 和 Python 模糊和匿名化人脸
方法 首先,我们使用内置的人脸检测算法,从实时视频或图像中检测人脸.在这里,我们将使用级联分类器方法从实时视频(使用网络摄像头)中检测人脸. 然后,读取来自实时视频的帧.存储最新的帧并转换为灰度,以更 ...
- Python之数据规整化:清理、转换、合并、重塑
Python之数据规整化:清理.转换.合并.重塑 1. 合并数据集 pandas.merge可根据一个或者多个不同DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象 ...
- 数据匿名化的几种技术手段
原文链接:https://blog.csdn.net/weixin_43586667/article/details/123427376 技术1: 遮蔽 Masking 数据掩蔽指的是披露具有修改过的 ...
- Python中将数据矢量化运算所带来的时间加快
➤01 矢量化运算 在<PaddlePaddle深度学习实战>一书中,介绍了在Python中利用Numpy中的矩阵(矢量)运算所带来的速度增加. ▲ PaddlePaddle深度学习实战 ...
- 《英国ICO:匿名化、假名化及隐私增强技术指南草案》解读
英国ICO<匿名化.假名化及隐私增强技术指南草案>解读 英国信息专员办公室ICO发布了<匿名化.假名化及隐私增强技术指南草案>(Draft Anonymisation, Pse ...
- 【Python】merge:数据规整化:清理、转换、合并、重塑
merge:数据规整化:清理.转换.合并.重塑 目录: 文章目录 @[toc] 一 合并数据集 1 数据库风格的DataFrame合并 2 索引上的合并 3 轴向连接 4 合并重叠数据 二 重塑和轴向 ...
- 类的应用python平均分_【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算...
本篇内容为整理<利用Python进行数据分析>,博主使用代码为 Python3,部分内容和书本有出入. 在前几篇中我们介绍了 NumPy.pandas.matplotlib 三个库的基本操 ...
- 用python对数据进行主成分分析、类概念描述及特征化分析-实验报告
数据挖掘课程的期中实验,仅供参考.完成时间:2022.10.29 基本要求:利用python对数据集中的数据进行主成分分析.类概念描述及特征化分析.要有相关结果的可视化结果.比如数据的分布情况. 数据 ...
- 隐私计算:数据脱敏、匿名化、假名化、差分隐私和同态加密
随着数据挖掘技术的普遍应用,一些厂商通过发布用户数据集的方式鼓励研究人员进一步深入挖掘数据的内在价值,在数据集发布的过程中,就存在安全隐患,可能导致用户隐私的泄露.2016年欧盟通过< ...
最新文章
- 中国的“Databricks”们:打造AI基础架构,我们是认真的
- Android 中的 Service 全面总结(转)
- Oracle原理:11g中的网络配置
- SpringBoot基础篇Bean之条件注入之注解使用
- MVC常见的控制器,接口,数据层之间的操作
- linux 串口命令
- web前端学习笔记(二)---Django
- Python vs Cpython
- vim globle
- SIM900A更改波特率
- 如何用PS缩小图片而清晰度不变?
- bsc全节点搭建(币安智能链)
- 网络定位、A-GPS和GPS的关系
- QQ-360大战影响恶劣
- 再来!使用frida框架hook来获取APP的加密算法的参数
- win10 以太网消失了
- 参考文献格式要首行缩进吗_参考文献第二行缩进论文范文 有关毕业论文格式明毕业论文写作资料...
- 20220905 buffer overflow detected
- Python程序设计 大作业 简化的PS
- VSPD+XCOM+Proteus仿真stm32串口通信