博客 数据清洗原理、流程、工具及实战

数据清洗原理、流程、工具及实战

   数栈君   发表于 2024-08-22 16:56  3740  0

01 数据清洗概述

大数据时代,必须经过清洗、分析、建模、可视化才能体现其价值,然后众多数据中总是存在很多“脏数据”,也就是不完整、不规范、不准确的数据,数据清洗就是指将“脏数据”洗掉,包括检查数据一致性,处理无效值和缺失值,从而提高数据质量。

数据清洗(data cleaning)可以有多重表述方式,一般认为,数据清洗的含义就是检测和取出数据集中的噪声数据和无关数据,处理遗漏数据,去除空白数据和知识背景下的白噪声。

(1)一致性检查

根据每个变量的合理取值范围和相互关系,检查数据是否规范,是否超出正常范围,逻辑上不符或相互矛盾的数据。比如年龄、体重、考试成绩出现了负数,都是超出了正常的范围。SPAA、SAS、Excel等软件都能根据定义的取值范围进行识别筛选。

(2)无效值和缺失值的处理

常用的处理方法有估算、整例删除、变量删除和成对删除

估算,就是用某个变量的样本均值、中位数或者众数代替无效值和缺失值,这种办法简单,但没有充分考虑数据中已有的信息,误差可能比较大,另一种办法通过变量之间的相关分析或逻辑推论进行估计,比如某一产品的拥有情况可能和家庭收入有关,可以根据调查对象的家庭收入推算拥有这一产品的可能性。

• 整例删除,剔除含有缺失值的样本,但这种做饭可能会导致有效样本量大大减少,无法利用已有的数据。因此,只适合关键变量确实,或者含有无效值或缺失值的样本比重很少的情况。

• 变量删除,如果某一个变量无效值和缺失值很多,而且经过分析该变量对所研究问题不重要,则可以考虑将该变量删除

• 成对删除,用一个特殊吗代替无效值和缺失值,同时保留数据集中的全部变量和样本,但是计算时只采用有完整答案的样本,因为不同的分析因涉及的变量不同,有效样本量也不同。

02 数据清洗原理


利用有关技术如数据仓库、数理统计、数据挖掘或预定义的清理规则将脏数据转化为满足要求的数据。


1、预定义清理规则

预定义清理规则一般利用大数据算法实现,具体流程如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9634549399ba839b2368dd6e04d5f9f6..jpg

2、数理统计清洗

通过专门编写的应用程序清洗数据,这也是数据挖掘的模式,比如无监督学习中的聚类,但是这种办法不够灵活,清理过程需要反复进行。


3、数据仓库的数据清洗

可以手工实现,但是效率很低。


03 数据清洗流程

1、数据清洗----预处理

预处理阶段有两个工作:
(1)选择数据处理工具
一般使用关系型数据库,单机可以使用MySQL。如果数据量很大,可以采用文本文件存储+Python操作。
(2)查看数据的元数据和数据特征
元数据包括字段解释、数据来源、代码表等描述数据的信息,然后抽取一部分数据,使用人工查看,对数据本身有一定的直观了解,方便后续处理。


2、数据清洗----缺失值清洗

缺失值是最常见的数据问题,处理办法有很多,一般采用下面的4个步骤:
(1)确定缺失值范围
对每个字段计算缺失值比例,然后按照缺失比例和字段重要性制定不同策略。
(2)去除不需要的字段
直接删除不需要的字段,但要备份。删除操作最好不要直接操作于原始数据,应抽取部分数据进行模型构建,查看模型效果,如果效果可以就推广到所有数据。
(3)填充缺失值内容
该步骤是最重要的一步,一般包含以下几种方式。
用业务知识或者经验填充,比如字段“我爱*”,可以通过经验推断“*”填充“你”。
用同一个字段指标的计算结果填充,比如平均数、中位数等。
用不同指标的计算结果进行填充,比如通过身份证号推断年龄,通过收件人邮政编码推断大体位置等。
(4)重新获取数据


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

解压后双击运行 openrefine.exe。如果电脑上没有Java环境,会自动跳转到浏览器下载Java界面

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/25b4a96e4f767409067f8e058f8469d2..jpg

点击 同意并开始免费下载,然后安装Java

到这儿环境配置好了,重新双击 openrefine.exe 运行,会启动程序并自动跳转到浏览器OpenRefine主页面


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/45a9dc02c029f01179f6197edc3d0455..jpg

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0c45a293ac5d6c16290872de187ee548..jpg

二、运行OpenRefine对数据查看、清洗、导出


选择本地存储文件,以水利局输沙率文件作为今天的测试数据吧,内容如图所示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/705ccc7e3ee980ec87f1b99d7d948945..jpg

1、启动OpenRefine,在浏览器中打开运行界面

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/18d13b6a2ef38d7c3c31b127133f54cf..jpg

2、单击 Create Project 中的 选择文件按钮,然后选择桌面上的“实测悬移质输沙率成果表_利津(三)40108400_2019_9.csv”文件,然后点击 next 按钮,可以查看已经导入的文件内容了

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6e68a77bcbe0886bdebd7e2c4bd46c4d..jpg

3、点击右上角的 Create Project,进入到数据记录的显示界面,如图所示
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/746adef9bf701d78eb80c1df29f92692..jpg
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/74207a7f73239d5bc1bcdb0229272f68..jpg

4、选择菜单栏中的下拉箭头,可以对每一列数据进行清洗和转换,如图所示http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/31cfc5ebca94c85291456fb21e4137bd..jpg

5、如果要对数据进行过滤,可以选择 Facet 下的 Text facet 命令,如图所示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e6041357aa19309459ef2e93f97b4a2c..jpg

6、在左边区域 Facet/Filter 下可以看到内容分组的结果,有助于用户对数据进行分析

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/506fb132638fe08fc4939486dd733547..jpg

7、如果要对显示的数据继续查询,例如,想要查看2020年的某一条数据,可以选择这一组,就过滤了整个数据表,在屏幕上只显示这一条数据

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b770e314868fa24af4163ff55c367002..jpg

8、如果要对数据进行编辑,可以单击每一行右侧的Edit按钮,对数据进行修改,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/54e463547a7993b9386a4714dc49dd38..jpg

将日期12改成9,修改完成后单击Apply按钮进行保存,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/be5818a7d3a26c53f6fbac4fa8833417..jpg
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/176e6704b7b0b3e9bf92524c2a1b8d28..jpg

9、导出数据,选择Export菜单中的Templating选项,如下图所示:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/74821fe2c0b1c0f63336f3f5c4ebbb77..jpg

10、在网页中查看生成的数据,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/1dc9aec59d1f4723ae1cce4e0e3aa960..jpg

11、单击Export按钮,即可输出数据保存成.txt格式的文件,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f30ae3dde1923d8d767254104e4970a2..jpg


三、Excel有效性分析


1.打开Excel,将txt中的内容,复制粘贴到Excel第一列中,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a46fced3348e2bc6a03744370e7ddb76..jpg

2.选中第一列数据,选择“数据”菜单,找到“数据验证”选项,在弹出的“数据验证”对话框中分别设置“验证条件”和“最大值”和“最小值”

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/27d9be0cb7194e8a638a0d39ce9aa857..jpg

3.设置完成后,选择“数据验证”下拉列表中的“圈释无效数据”选项,会看到表格中的无效数据用椭圆圈注,如下图所示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/37b0dcf382312a600ff6337f69dad4df..jpg


四、Excel数据分析并清除无效数据


1.打开Excel,输入原始数据

2.选中所有数据单元格区域,单击“数据”选项卡中的“删除重复值”按钮,如下图所示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4b0324cc45d60100ad731589e1b180eb..jpg

3.在弹出的“删除重复项”对话框中选择“全选”按钮,如下图

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d8e53e95e80ec746f86aa5034a708899..jpg

4.执行完删除重复项操作后,如下图所示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/02dbca531e1d98075401e8a99b3e530e..jpg

内容为转载,如侵删
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群