目标
分析师请求包含邮箱与电话的数据集,这些原始值不能离开受信区。本配方先用正则在各列上统计 PII 模式占比以定位疑似 PII 列,再用带盐哈希把直接标识符替换为稳定且不可逆的假名,使其既能跨表关联又不泄露原值;提醒正则扫描会漏掉非典型格式与自由文本中的 PII。
步骤要点
- 用正则在各列统计 PII 模式占比,定位疑似列。
- 用带盐哈希把标识符替换为稳定假名。
- 对自由文本列使用专门的 PII 检测而非仅看列名。
- 扫描输出确认无原始邮箱与电话。
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 容易被漏掉。
- 假名化不等于匿名化。
适用边界
- 正则扫描会漏掉非典型格式。
- 假名化不是匿名化。