Python数据脱敏案例
时间: 2025-05-12 07:42:36 浏览: 32
### Python 数据脱敏实现方法
数据脱敏是一种保护敏感信息的技术,在实际开发过程中尤为重要。以下是基于 `openpyxl` 和 `pandas` 的一种常见数据脱敏方式。
#### 使用 Pandas 进行字符串替换的数据脱敏
Pandas 提供了强大的数据操作功能,可以通过简单的函数调用来完成数据脱敏工作。例如,对于姓名字段可以采用部分隐藏的方式:
```python
import pandas as pd
# 创建示例 DataFrame
data = {'name': ['张三', '李四', '王五'], 'age': [25, 30, 35], 'phone': ['13812345678', '13987654321', '13711122233']}
df = pd.DataFrame(data)
# 对电话号码进行脱敏处理 (仅显示前三位和后四位)
def desensitize_phone(phone):
return phone[:3] + '****' + phone[-4:]
df['desensitized_phone'] = df['phone'].apply(desensitize_phone)
print(df[['name', 'desensitized_phone']])
```
上述代码实现了对电话号码的部分隐藏[^1]。
#### 基于正则表达式的复杂脱敏逻辑
如果需要更复杂的脱敏规则,可以结合正则表达式来实现。例如,身份证号的中间几位可以用星号替代:
```python
import re
def desensitize_id_card(id_card):
pattern = r'^(\d{4})\d+(\d{4})$'
match = re.match(pattern, id_card)
if match:
return f"{match.group(1)}{'*' * len(re.findall(r'\d+', match.group(0))[1])}{match.group(2)}"
return id_card
id_cards = ['123456789012345678']
result = list(map(desensitize_id_card, id_cards))
print(result)
```
此代码片段展示了如何通过正则表达式匹配并修改特定模式的内容。
#### 结合 PyEcharts 可视化分析脱敏后的数据分布
除了单纯的数据脱敏外,还可以利用可视化工具进一步理解数据特性。比如在房地产领域中,通过对房价、面积等维度做适当模糊化后再绘图展示其趋势[^2]:
```python
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 构造模拟数据集
house_prices = {"区域A": 5000, "区域B": 7000}
bar_chart = (
Bar()
.add_xaxis(list(house_prices.keys()))
.add_yaxis("平均单价", list(house_prices.values()), label_opts=LabelOpts(is_show=False))
.set_global_opts(title_opts={"text":"各地区房产均价"})
)
bar_chart.render_notebook() # 如果是在 Jupyter Notebook 中运行,则使用 render_notebook 方法;否则保存为 HTML 文件即可。
```
以上实例说明了不仅限于数值型变量也可以应用于类别型特征上的简单变换从而达到隐私保护目的的同时保留一定业务价值的信息量.
阅读全文
相关推荐




