01 数据清洗概述
大数据时代,必须经过清洗、分析、建模、可视化才能体现其价值,然后众多数据中总是存在很多“脏数据”,也就是不完整、不规范、不准确的数据,数据清洗就是指将“脏数据”洗掉,包括检查数据一致性,处理无效值和缺失值,从而提高数据质量。
数据清洗(data cleaning)可以有多重表述方式,一般认为,数据清洗的含义就是检测和取出数据集中的噪声数据和无关数据,处理遗漏数据,去除空白数据和知识背景下的白噪声。
(1)一致性检查
根据每个变量的合理取值范围和相互关系,检查数据是否规范,是否超出正常范围,逻辑上不符或相互矛盾的数据。比如年龄、体重、考试成绩出现了负数,都是超出了正常的范围。SPAA、SAS、Excel等软件都能根据定义的取值范围进行识别筛选。
(2)无效值和缺失值的处理
常用的处理方法有估算、整例删除、变量删除和成对删除
• 估算,就是用某个变量的样本均值、中位数或者众数代替无效值和缺失值,这种办法简单,但没有充分考虑数据中已有的信息,误差可能比较大,另一种办法通过变量之间的相关分析或逻辑推论进行估计,比如某一产品的拥有情况可能和家庭收入有关,可以根据调查对象的家庭收入推算拥有这一产品的可能性。
• 整例删除,剔除含有缺失值的样本,但这种做饭可能会导致有效样本量大大减少,无法利用已有的数据。因此,只适合关键变量确实,或者含有无效值或缺失值的样本比重很少的情况。
• 变量删除,如果某一个变量无效值和缺失值很多,而且经过分析该变量对所研究问题不重要,则可以考虑将该变量删除
• 成对删除,用一个特殊吗代替无效值和缺失值,同时保留数据集中的全部变量和样本,但是计算时只采用有完整答案的样本,因为不同的分析因涉及的变量不同,有效样本量也不同。
通过专门编写的应用程序清洗数据,这也是数据挖掘的模式,比如无监督学习中的聚类,但是这种办法不够灵活,清理过程需要反复进行。
可以手工实现,但是效率很低。
03 数据清洗流程
1、数据清洗----预处理
2、数据清洗----缺失值清洗
3、数据清洗----格式与内容清洗
(1)时间日期、数值、全半角等显示格式不一致
(2)内容中有不该存在的字符,比如身份证号中出现了字母,姓名中出现数字等。
(3)内容与该字段内容不符,比如姓名写成了性别,身份证号写成了手机号等
4、数据清洗----逻辑错误清洗
(1)数据去重
(2)去掉不合理的数值,比如年龄为200岁,或者-20岁
(3)去掉不可靠的字段,比如身份证号出生年月为20000101,年龄填了80岁
5、数据清洗----关联性验证
如果数据有多个来源,可以进行关联性验证,该过程经常用于多数据源合并的过程,通过验证数据之间的关联性来选择准确的特征属性。比如商品销售有线下记录,也有电话客服记录,两者通过姓名和手机号关联,看一下同一个人线下登记的商品信息和线上问卷调查出来的信息是不是一致的
04 数据清洗工具
1、OpenRefine
是一种新的具有数据画像、清洗、转换等功能的工具,可以观察和操作数据,类似于Excel表格处理软件,但是工作方式更像数据库。
特点:在数据导入的时候可以根据数据类型将数据转换为对应的数值和日期型;相似单元格聚类,可以根据单元格字符串的相似性进行聚类,而且还支持关键词碰撞和近邻匹配算法。
2、DataCleaner
简单、易用的工具,可以分析、比较、验证和监控数据,能够将凌乱的半结构化数据集转换为可视化,并且读取干净可读的数据集,另外还提供数据仓库和数据管理服务
特点:可以访问不同类型的数据存储,如Oracle、MySQL等,可以作为引擎来处理、转换和统一来自多个数据存储的数据。
3、Kettle
国外开源的ETL工具,Java编写,可以在Windows、Linux等系统上运行,支持图形化的GUI设计
特点:开源免费,可维护性好,便于调试,开发简单
4、Beeload
特点:支持大部分主流数据接口,用图形操作界面辅助用户完成数据抽取、转换、装载等规则的设计,并且支持抽取数据的切分、过滤操作
05 数据清洗实战
一、下载安装
1、下载OpenRefine
官网:http://OpenRefine.org
2、安装OpenRefine
点击 同意并开始免费下载,然后安装Java
到这儿环境配置好了,重新双击 openrefine.exe 运行,会启动程序并自动跳转到浏览器OpenRefine主页面
二、运行OpenRefine对数据查看、清洗、导出
选择本地存储文件,以水利局输沙率文件作为今天的测试数据吧,内容如图所示
1、启动OpenRefine,在浏览器中打开运行界面
2、单击 Create Project 中的 选择文件按钮,然后选择桌面上的“实测悬移质输沙率成果表_利津(三)40108400_2019_9.csv”文件,然后点击 next 按钮,可以查看已经导入的文件内容了
3、点击右上角的 Create Project,进入到数据记录的显示界面,如图所示
4、选择菜单栏中的下拉箭头,可以对每一列数据进行清洗和转换,如图所示
5、如果要对数据进行过滤,可以选择 Facet 下的 Text facet 命令,如图所示
6、在左边区域 Facet/Filter 下可以看到内容分组的结果,有助于用户对数据进行分析
7、如果要对显示的数据继续查询,例如,想要查看2020年的某一条数据,可以选择这一组,就过滤了整个数据表,在屏幕上只显示这一条数据
8、如果要对数据进行编辑,可以单击每一行右侧的Edit按钮,对数据进行修改,如下图
将日期12改成9,修改完成后单击Apply按钮进行保存,如下图
9、导出数据,选择Export菜单中的Templating选项,如下图所示:
10、在网页中查看生成的数据,如下图
11、单击Export按钮,即可输出数据保存成.txt格式的文件,如下图
三、Excel有效性分析
1.打开Excel,将txt中的内容,复制粘贴到Excel第一列中,如下图
2.选中第一列数据,选择“数据”菜单,找到“数据验证”选项,在弹出的“数据验证”对话框中分别设置“验证条件”和“最大值”和“最小值”
3.设置完成后,选择“数据验证”下拉列表中的“圈释无效数据”选项,会看到表格中的无效数据用椭圆圈注,如下图所示
四、Excel数据分析并清除无效数据
1.打开Excel,输入原始数据
2.选中所有数据单元格区域,单击“数据”选项卡中的“删除重复值”按钮,如下图所示
3.在弹出的“删除重复项”对话框中选择“全选”按钮,如下图
4.执行完删除重复项操作后,如下图所示