← 中文资源

简体中文版本

用 pandas 清洗数据集中的 PII

在与分析师共享前检测并假名化数据框中的直接标识符。

阅读英文原文

目标

分析师请求包含邮箱与电话的数据集,这些原始值不能离开受信区。本配方先用正则在各列上统计 PII 模式占比以定位疑似 PII 列,再用带盐哈希把直接标识符替换为稳定且不可逆的假名,使其既能跨表关联又不泄露原值;提醒正则扫描会漏掉非典型格式与自由文本中的 PII。

步骤要点

  1. 用正则在各列统计 PII 模式占比,定位疑似列。
  2. 用带盐哈希把标识符替换为稳定假名。
  3. 对自由文本列使用专门的 PII 检测而非仅看列名。
  4. 扫描输出确认无原始邮箱与电话。
import re, pandas as pd
patterns = {'email': r'[^@\s]+@[^@\s]+', 'phone': r'\+?\d{7,15}'}
for name, pat in patterns.items():
    hits = df.astype(str).apply(lambda c: c.str.match(pat).mean())
    print(name, hits[hits > 0.5].index.tolist())

排错提示

  • 假名可通过对表反推,需用密钥盐且不发布映射。
  • 自由文本中的 PII 容易被漏掉。
  • 假名化不等于匿名化。

适用边界

  • 正则扫描会漏掉非典型格式。
  • 假名化不是匿名化。