问题描述:
所谓数据脱敏,是指对个人的学号、姓名、身份证号、银行账号、电话号码、家庭住址、工商注册号、纳税人识别号等敏感信息进行隐藏、随机化或删除,防止在数据交换或公开场合演示时泄露隐私信息,是数据处理时经常谈到的一个概念,也是大数据伦理学中需要考虑的一个重要内容。不同的业务类型、数据和使用场景中,敏感数据的定义是变化的,某个信息在一个场景下是敏感的需要脱敏处理而在另一个场景中必须保留原始数据是正常的。
本文以学生考试数据为例,学生在线机考(后台发送“小屋刷题”可以下载刷题和考试软件)结束后导出的原始数据中包含学号、姓名等个人信息,在某些场合下使用这些数据时,截图需要打上马赛克,或者替换原始数据中的这两个信息进行脱敏,原始数据格式如下:
在原始数据中,每个学生的考试数据有很多条,脱敏处理后这些数据的学号和姓名被随机化,但仍需要保证是同一个学生的数据,处理后数据格式如下:
代码:
import pandas as pd
##from sqlalchemy import create_engine
from random import choices
from string import ascii_letters,digits
path = r'E:\D\学生成绩目录\XXB.xlsx'
df =pd.read_excel(path)
ids =set(df.身份证号) ###列名
names =set(df.姓名)
csds =set(df.出生地)
id_mapping ={si:''.join(choices(digits,k=18))for si in ids}
df.身份证号 =df.身份证号.map(id_mapping)
name_mapping ={name:''.join(choices(ascii_letters,k=6)) for name in names}
df.姓名 =df.姓名.map(name_mapping)
csd_mapping ={csd:''.join(choices(ascii_letters,k=6)) for csd in csds}
df.出生地 =df.出生地.map(csd_mapping)
df.to_excel(r'E:\学生成绩目录\XXB221.xlsx',sheet_name='sheet1',index=False)
print('运行成功!')