• Python使用openpyxl和pandas处理Excel文件实现数据脱敏案例一则


    问题描述:

    所谓数据脱敏,是指对个人的学号、姓名、身份证号、银行账号、电话号码、家庭住址、工商注册号、纳税人识别号等敏感信息进行隐藏、随机化或删除,防止在数据交换或公开场合演示时泄露隐私信息,是数据处理时经常谈到的一个概念,也是大数据伦理学中需要考虑的一个重要内容。不同的业务类型、数据和使用场景中,敏感数据的定义是变化的,某个信息在一个场景下是敏感的需要脱敏处理而在另一个场景中必须保留原始数据是正常的。

    本文以学生考试数据为例,学生在线机考(后台发送“小屋刷题”可以下载刷题和考试软件)结束后导出的原始数据中包含学号、姓名等个人信息,在某些场合下使用这些数据时,截图需要打上马赛克,或者替换原始数据中的这两个信息进行脱敏,原始数据格式如下:

     在原始数据中,每个学生的考试数据有很多条,脱敏处理后这些数据的学号和姓名被随机化,但仍需要保证是同一个学生的数据,处理后数据格式如下:

     代码:

    1. import pandas as pd
    2. ##from sqlalchemy import create_engine
    3. from random import choices
    4. from string import ascii_letters,digits
    5. path = r'E:\D\学生成绩目录\XXB.xlsx'
    6. df =pd.read_excel(path)
    7. ids =set(df.身份证号) ###列名
    8. names =set(df.姓名)
    9. csds =set(df.出生地)
    10. id_mapping ={si:''.join(choices(digits,k=18))for si in ids}
    11. df.身份证号 =df.身份证号.map(id_mapping)
    12. name_mapping ={name:''.join(choices(ascii_letters,k=6)) for name in names}
    13. df.姓名 =df.姓名.map(name_mapping)
    14. csd_mapping ={csd:''.join(choices(ascii_letters,k=6)) for csd in csds}
    15. df.出生地 =df.出生地.map(csd_mapping)
    16. df.to_excel(r'E:\学生成绩目录\XXB221.xlsx',sheet_name='sheet1',index=False)
    17. print('运行成功!')

     

  • 相关阅读:
    文件包含漏洞(一)
    如何做大你的软件研发团队?
    齐宣王典故
    C语言求矩阵的逆(初等行变换法)
    水果店圈子:水果店月收入大概是多少,我想开水果店不知道利润有百分之几
    Redis之key命令
    [普通物理] 半波损失 等厚与等倾干涉
    服务间的负载均衡-Robbin
    ICPC World Finals 2020 ‘S No Problem (树形dp) (k 条不相交路径覆盖最值问题)
    面试分析:你懂不懂threadlocal?
  • 原文地址:https://blog.csdn.net/youyouxiong/article/details/127670029