基于Python的数据脱敏与可视化分析

2019-05-22 10:27尹诗玉陈小奎师琳
电脑知识与技术 2019年6期
关键词:数据可视化

尹诗玉 陈小奎 师琳

摘要:为分析高校教学质量,并对其进行评价,本文基于python语言对教务系统导出的原数据进行处理和分析,主要从数据导入,数据预处理,及数据分析三个层面结合实例进行分析。首先利用tkinter库设计出数据导入的界面;其次阐述数据清洗、分组、集成以及脱敏等数据预处理的常用算法,并结合高校教学评价这一实际案例进行了演示,借助pandas库中的dataframe数据类型实现了对“脏数据”的清洗,以及对教师姓名的脱敏;最后利用matplotlib库对处理好的数据进行数据可视化,并结合所得图像对各专业班级及教师的学习和教学状况进行分析与评价。通过本文的数据处理,实现了对教师姓名的脱敏,保护了教师的隐私,并利用图形直观地反映出各教师和班级近几年的成绩分布,使得高校绩效考核更加的方便。

关键词:Python;pandas;数据预处理;数据脱敏;数据可视化

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2019)06-0014-04

Data Desensitization and Visual Analysis Based on Python

YIN Shi-yu,CHEN Xiao-kui,SHI Lin

(Anhui University of Science and Technology Institute of Mathematics and Big Date, Huainan 232001,China)

Abstract:In order to analyze the quality of college teaching and evaluate it, this paper based on Python language to process and analyze the original data derived from the educational system, mainly from three aspects: data import, data preprocessing, and data analysis. Firstly, the tkinter library is used to design the interface of data import. Secondly, the common algorithms for data preprocessing such as data cleaning, grouping, integration and desensitization are described. The actual case of college teaching evaluation is demonstrated. The dataframe data in the pandas library is used. The type realizes the cleaning of “dirty data” and the desensitization of the teacher's name. Finally, the matplotlib library is used to visualize the processed data, and the obtained images are used to analyze the learning and teaching status of each professional class and teachers. Through the data processing of this paper, the desensitization of the teacher's name is realized, the privacy of the teacher is protected, and the distribution of the scores of teachers and classes in recent years is visually reflected by the graph, which makes the performance appraisal of the university more convenient.

Key words: Python; pandas; data preprocessing; data desensitization; data visualization

1 背景

人工智能大數据时代的到来使得数据挖掘与分析日益成为不可或缺的技能。Python是一种面向对象的程序设计语言,由于其具有丰富的类库与简洁性,成为数据分析的首选语言。由于数据类型的多样化及其关联关系的复杂性,数据预处理是数据分析和挖掘前的一个非常重要的工作;再者在数据挖掘技术快速发展的同时,也带来了隐私信息容易泄露的难题,这时就需要对敏感信息进行脱敏。

2 数据导入界面的设计

本文借助Python的tkinter包实现图形化界面的设计。界面主要分为左右两栏,左边显示用户的登录信息,右边一栏供用户导入数据并根据需要进行相关的数据分析;菜单栏的内容主要是原专业成绩分布统计,教师评价统计和教师与专业成绩的关联分析,本文着重阐述前两项,之后将对教师与专业成绩的关联度进行分析。设计好的图形化界面如图1所示。

3 数据预处理

在大数据环境下,由于原始数据的杂乱性,重复性,模糊性,数据挖掘与分析的首要任务就是确保消除所有的“脏数据”,即冗余数据,异常数据,无用数据等,因此引入了数据预处理技术对原数据进行处理。

数据预处理技术主要由数据清洗,数据集成,数据变换,数据规约等四部分组成。数据清洗部分主要包含处理缺失数据、检测和过滤异常值,移除重复数据等;数据集成部分主要包含使用键参数的DataFrame合并,轴向连接等;数据变换部分主要包含利用映射进行数据转换,替换值等;数据规约就是对数据进行聚集,进一步降低数据规模,方便处理与分析。常见的脱敏方法有:

1)替换:以虚构的数据代替真值,从而达到将隐私数据保护起来的目的。

2)无效化:以Null或者***代替真值的一部分,例如对银行卡或手机号的处理。

3)置乱:对敏感数据列的值打乱后,重新分布,该方法将破坏与其他字段的联系,具有局限性。

4)均值化:对数值型的数据,首先求解它们的均值,使得脱敏后的值在均值附近。

5)偏移:通过随机地对数据进行移位改变数据[1]。

上述五种只是常用的幾种数据脱敏的方法,还有很多其他方法如反推断、FPE、屏蔽,限制返回行数等等,根据实际应用情况选取合适的脱敏方法即可。

3.1实例数据分析

本实例的每学期高数成绩原始数据中包含有学号、姓名、课程名称、学分、平时成绩、期中成绩、期末成绩、实验成绩、总评成绩、备注、折算成绩、补考成绩、重修成绩、绩点、课程性质、课程归属、重修标记、选课课号、学年、学期、是否注册、学院、班级、正考学年学期,教师姓名共25个属性列,每学期记录约4500条。

3.2数据清洗

数据清洗是有助于解决数据质量问题的处理过程,通过分析“脏数据”的产生原因及存在形式,对数据流的过程进行分析,将“脏数据”转化成满足数据质量要求的数据。数据清洗通常包括下面集中数据的处理[5]。

1)缺失值处理

本文通过对缺失值进行检测,发现原数据中存在少量值为空的数据,虽然数量不多但仍会对之后的分析产生影响,为保证之后分析的准确性,需要将这些数据进行删除,经过处理后,最终剩下的数据还有4300余条。

2)异常值处理

首先导入matplotlib包,画出有关数据的箱型图,从图中可以看出部分数据的离散程度还是很大的,总评成绩为0.1,0.2等之类的一定是异常值,下面需要对这些数据进行剔除。结合该实例进行分析,总评成绩的异常值都出现在备注为“缺考”或者“缓考”的记录条上,因此我们利用备注这一列进行异常值的剔除,将备注数据是以上两种情况的进行取反操作,所得到的即为总评成绩为正常值的学生记录。

3)重复值处理

该实例的原数据来自教务系统,由于学号是主键,其唯一表示了一个学生,因此不会存在重复值的存在,该实例不需要对重复值进行考虑。

3.3 数据变换

数据变换就是找到数据的统一表示方法,对数据进行归一化处理,将其转换为有利于分析与挖掘的形式;以及利用映射或替换等手段对敏感数据进行隐藏,从而保护个人隐私。

对于该实例,之后需要分析的仅有班级,学院,教师姓名,总评成绩四个属性列,而各属性列的值不用进行无量纲化,因此可省去数据的标准化处理这一步;然而教师姓名这一属性列涉及了教师的个人隐私,属于敏感信息,所以需要对其进行脱敏处理,因为最终要对教师的教学进行评价,所以采用替换的方法来进行脱敏处理。首先读取出表格的教师姓名一列,并建立两个数组,一个是原始姓名数组,一个是替换的教师代号,将教师姓名这一列进行替换,以保护这一敏感数据。

3.4 数据规约

数据规约是在对所要解决问题理解的基础上,寻找数据的有用特征,以缩减数据规模,在尽可能保持数据原貌的同时最大限度地减少数据量,对数据进行降维处理,使得之后的分析与挖掘更加高效[3]。

结合本实例进行分析,因为本案例最后需要分析的是各专业,班级及教师的学习及教学状况。需要得到每个班级的平均分后再进行评价。故需要先根据班级这一属性列对替换后的数据进行分组后,对总评成绩求平均将其聚合。最终只需要保留班级,学院,总评成绩,教师姓名四列即可。

数据清洗,变换,规约的主要代码如图2,处理前后的数据对比图如图3,图4所示。

3.5 数据集成

数据集成是将多文件中的数据进行合并处理,主要涉及的方面有数据的选择,数据的冲突以及不一致问题,其中主要包含相同字段属性的纵向追加和具有相关属性叠加的横向合并等,数据横向合并时,会因为同一对象的一些属性字段在不同文件中的属性名不同,导致数据冗余,因此消除数据冗余是数据集成中的一项重要工作[2]。

结合本实例,为方便之后对每个班级,每位教师近几年的学习与教学情况进行分析,我们需要将每一学年的数据集成到一张表中。对于每个班级,为保证连接的正确性,首先将每学期的表格按照班级降序排列,其次利用Pandas库取出总评成绩这一列,最后将每学期的成绩这一列放入新表中,与相关学期列对应,最终所得的表格即为集成后的每个班级的各学期成绩分布表如图5。

4 图像分析

Python中具有的Matplotlib包,是数据可视化的重要类库之一,其中包含了丰富的数据可视化资源,包括3D,地图等都有涉及,借助该包可以实现直线图、柱状图、箱型图、散点图以及折线图。其主要包含以下四部分内容:

1)Matplotlib的基础figure类型。

2)调整figure的样式和颜色。

3)添加图的注释。

4)其他复杂图形[4]。

4.1实例需求

根据需求分析,本案例所要分析的是各专业的近几年成绩分布,以及各教师近几年的教学质量评价。并且根据每学期的总评成绩,对班级和教师学习与教学进行分析。下面本文将针对这两种需求,详细地阐述描绘绘图的过程。

4.2 根据学期进行分析

针对每一个学期,为了更好地体现该学期各班级的学习情况,需要将每个专业的总评成绩汇总一个表中,选用未进行数据集成之前的表格即可。首先使用read_excel方法读取出表格,将专业作为横坐标,总评成绩作为纵坐标;其次选取文件名的中间几个字符串作为学期的标识;最后进行折线图的绘制。主要代码如图6。

用户进行分析时,只需在GUI中选择需要导入的表格文件,用学期对文件进行命名即可,这里以选取两个学期为例,得到的图形如图7。结合图像可以很直观的分析出,16-17-1学期财务管理专业,信管专业,土木专业的成绩较为突出,而非金属专业,弹药专业成绩处于最下游。

4.3根据选取的班级或教师进行分析

针对每一个班级以及每一位教师,为了更好地体现其近几年的学习及教学情况,需要将每个班级以及每位教师近几年的平均成绩汇总到一张表中,这时就要选用数据预处理中已经过数据集成的表。首先使用read_excel方法读取出表格,将学期作为横坐标,总评成绩作为纵坐标;其次根据选取的班级或教师名在数据表中查找数据项;最后读出该数据项进行折线图的绘制。主要代码如图8。

用户进行分析时,只需在图形化界面中選择需要导入的表格文件,采用数据预处理中数据集成的方法,这里以选取脱敏后的代号为T23的老师为例,得到的图形如图9。结合图像可以很直观地分析出:代号为T23老师在近几年的教学中,17-18学年第一学期的教学质量最好,15-16学年第二学期的教学质量最差。

5 结语

本文结合实例对Python应用于数据处理时的各阶段进行了分析,发现无论在数据分析还是数据挖掘中,数据预处理都占有很重的地位,占有总工作量的70%左右,因此数据处理的准确性是之后数据分析与挖掘的基础,数据预处理中的脱敏一步能够有效地保护用户的隐私,提高系统安全性。在对数据进行分析时,可视化是一个很好的选择,能够更加直观地对数据进行简单的分析。基于本文的数据处理步骤之后,更有利于关联分析等更深层次的挖掘。

参考文献:

[1]陈天莹,陈剑锋.大数据环境下的智能数据脱敏系统[J].通信技术,2016,49(7):915-922.

[2]张治斌,刘威.浅析数据挖掘中的数据预处理技术[J].数字技术与应用,2017(10):216-217.

[3]孔钦,叶长青,孙赟.大数据下数据预处理方法研究[J].计算机技术与发展,2018,28(5):1-4.

[4]李俊华.基于Python的数据分析[J].电子技术与软件工程,2018(17):167.

[5]叶鸥,张璟,李军怀.中文数据清洗研究综述[J].计算机工程与应用,2012,48(14):121-129.

[6]程学旗,靳小龙,王元卓,郭嘉丰,张铁赢,李国杰.大数据系统和分析技术综述[J].软件学报,2014,25(9):1889-1908.

[7]冯登国,张敏,李昊.大数据安全与隐私保护[J].计算机学报,2014,37(1):246-258.

[8]刘勘,周晓峥,周洞汝.数据可视化的研究与发展[J].计算机工程,2002(8):1-2+63.

【通联编辑:王力】

猜你喜欢
数据可视化
可视化:新媒体语境下的数据、叙事与设计研究
我国数据新闻的发展困境与策略研究