AI News HubLIVE
站内改写3 分钟阅读

使用Mimesis对生产数据进行匿名化处理以用于数据科学

本文介绍如何使用Python的Mimesis库对敏感的生产数据进行匿名化处理,通过一个可操作的示例逐步演示,确保数据隐私合规的同时保持数据集结构完整。

来源KDnuggets作者: Iván Palomares Carrascosa

在数据科学项目中,生产数据通常受到严格的隐私和合规约束。因此,匿名化处理成为几乎所有涉及数据驱动产品、服务或解决方案的现实项目中的关键步骤。Mimesis是一个开源的Python库,以其高性能生成逼真“假”数据的能力而脱颖而出。它本地运行,提供免费且稳健的数据管道解决方案。本文将展示如何利用此库对敏感生产数据进行匿名化,并提供一个可轻松在IDE或笔记本环境中尝试的逐步示例。

逐步过程

假设您初次接触Mimesis,可能需要使用如下命令在Python环境中安装:

pip install mimesis

如果在Google Colab或类似环境中,记得在pip命令前添加感叹号。

现在开始!我们将考虑一个围绕软件产品基于层级订阅系统的场景。为简化,我们合成生成一个包含客户及其订阅类型的数据集。如下所示,某些变量包含高度敏感数据:

import pandas as pd

# 创建模拟“生产”客户数据集
production_data = {
'user_id': [101, 102, 103, 104],
'real_name': ['Alice Smith', 'Bob Jones', 'Charlie Brown', 'Diana Prince'],
'email': ['[email protected]', '[email protected]', '[email protected]', '[email protected]'],
'phone': ['555-0100', '555-0101', '555-0102', '555-0103'],
'subscription_tier': ['Premium', 'Basic', 'Basic', 'Enterprise']
}

df = pd.DataFrame(production_data)
print("--- 原始敏感数据 ---")
print(df.head())

虽然订阅层级本身不一定敏感,但用户名、邮箱和电话号码是敏感的。借助Mimesis,我们可以初始化一个提供程序(provider):一种针对数据类型定制的数据匿名化模板。由于我们的数据与人员相关,我们可以导入并使用Person类——该提供程序在指定语言(如英语)并辅以随机种子后,可用于生成真实敏感个人数据的假替代品:

from mimesis import Person
from mimesis.locales import Locale

# 初始化英语区域的Person提供程序
person = Person(locale=Locale.EN, seed=42)

此后,匿名化个人标识信息(PII)的过程非常简单。只需将我们指定的敏感列替换为Mimesis的person区域生成器生成的新数据。通过遍历包含整个数据集的DataFrame对象,并调用合适的Mimesis函数来根据每个属性创建逼真的数据替代品:

# 1. 将真实姓名替换为假名
df['real_name'] = [person.full_name() for _ in range(len(df))]

# 2. 替换真实邮箱
df['email'] = [person.email() for _ in range(len(df))]

# 3. 替换真实电话号码
df['phone'] = [person.telephone() for _ in range(len(df))]

# 4. 重命名列以反映其不再是真实姓名
df.rename(columns={'real_name': 'anon_name'}, inplace=True)
```\n注意,Mimesis的Person类提供了专用函数来生成全名、邮箱和电话号码等。此外,将名列重命名以表明更新后的数据集中的名称不再是真实的,而是匿名化的。

现在通过查看转换后的DataFrame来验证结果。敏感的PII字段已完全改变:它们被覆盖为看起来合法的合成数据,同时保持整体数据集结构完整,并且对下游分析重要的信息(如subscription_tier)完全保留。

print("\n--- 用于数据科学分析的匿名化数据 ---") print(df.head())

输出:

--- 用于数据科学分析的匿名化数据 --- user_id anon_name email phone subscription_tier 0 101 Anthony Reilly [email protected] +13312271333 Premium 1 102 Kai Day [email protected] +1-205-759-3586 Basic 2 103 Cleveland Osborn [email protected] +13691067988 Basic 3 104 Zack Holder [email protected] +1-574-481-3676 Enterprise

太棒了!我们通过几个简单步骤匿名化了现实世界生产数据科学项目中常见的多个敏感数据字段——而且完全免费,得益于Mimesis的开源特性。

最后,一些最佳实践和观察:我们直接在DataFrame中替换了列。根据您的上下文,考虑这是否合适,或者如果存在丢失原始数据的风险,是否应将新信息存储在单独的DataFrame中。Mimesis以数据一致的方式运行,生成的数据与预期数据类型匹配。种子设置有助于在多次运行中保持生成信息的一致性,并促进可重复性。

### 总结
本文展示了如何使用Mimesis(一个强大的Python库,用于匿名化和假数据生成)将敏感的生产数据集转换为可安全用于进一步分析的版本,而不泄露真实人员的PII等隐私信息。

Iván Palomares Carrascosa 是AI、机器学习、深度学习和LLM领域的领导者、作家、演讲者和顾问。他培训和指导他人如何在现实世界中利用AI。