数据清洗概述
一、简介
1、简介
大数据时代,必须经过清洗、分析、建模、可视化才能体现其价值,然后众多数据中总是存在很多“脏数据”,也就是不完整、不规范、不准确的数据,数据清洗就是指将“脏数据”洗掉,包括检查数据一致性,处理无效值和缺失值,从而提高数据质量。
数据清洗(data cleaning)可以有多重表述方式,一般认为,数据清洗的含义就是检测和取出数据集中的噪声数据和无关数据,处理遗漏数据,去除空白数据和知识背景下的白噪声
(1)一致性检查
根据每个变量的合理取值范围和相互关系,检查数据是否规范,是否超出正常范围,逻辑上不符或相互矛盾的数据。比如年龄、体重、考试成绩出现了负数,都是超出了正常的范围。SPAA、SAS、Excel等软件都能根据定义的取值范围进行识别筛选。
(2)无效值和缺失值的处理
常用的处理方法有估算、整例删除、变量删除和成对删除
- 估算,就是用某个变量的样本均值、中位数或者众数代替无效值和缺失值,这种办法简单,但没有充分考虑数据中已有的信息,误差可能比较大,另一种办法通过变量之间的相关分析或逻辑推论进行估计,比如某一产品的拥有情况可能和家庭收入有关,可以根据调查对象的家庭收入推算拥有这一产品的可能性。
- 整例删除,剔除含有缺失值的样本,但这种做饭可能会导致有效样本量大大减少,无法利用已有的数据。因此,只适合关键变量确实,或者含有无效值或缺失值的样本比重很少的情况。
- 变量删除,如果某一个变量无效值和缺失值很多,而且经过分析该变量对所研究问题不重要,则可以考虑将该变量删除
- 成对删除,用一个特殊吗代替无效值和缺失值,同时保留数据集中的全部变量和样本,但是计算时只采用有完整答案的样本,因为不同的分析因涉及的变量不同,有效样本量也不同。
二、清洗原理
利用有关技术如数据仓库、数理统计、数据挖掘或预定义的清理规则将脏数据转化为满足要求的数据
1、预定义清理规则
预定义清理规则一般利用大数据算法实现,具体流程如下:
预定义清理流程 |
---|
配置清洗规则 (空值、非法值、不一致数据、重复记录检测处理) |
配置清洗后数据存储方式 |
配置清洗程序的Spark集群服务器资源 |
部署清洗程序任务 |
评估清洗后的数据 |
2、数理统计清洗
通过专门编写的应用程序清洗数据,这也是数据挖掘的模式,比如无监督学习中的聚类,但是这种办法不够灵活,清理过程需要反复进行
3、数据仓库的数据清洗
可以手工实现,但是效率很低
三、数据清洗的流程
1、数据清洗----预处理
预处理阶段有两个工作
(1)选择数据处理工具
一般使用关系型数据库,单机可以使用MySQL。如果数据量很大,可以采用文本文件存储+Python操作
(2)查看数据的元数据和数据特征
元数据包括字段解释、数据来源、代码表等描述数据的信息,然后抽取一部分数据,使用人工查看,对数据本身有一定的直观了解,方便后续处理
2、数据清洗----缺失值清洗
缺失值是最常见的数据问题,处理办法有很多,一般采用下面的4个步骤
(1)确定缺失值范围
对每个字段计算缺失值比例,然后按照缺失比例和字段重要性制定不同策略
(2)去除不需要的字段
直接删除不需要的字段,但要备份。删除操作最好不要直接操作于原始数据,应抽取部分数据进行模型构建,查看模型效果,如果效果可以就推广到所有数据
(3)填充缺失值内容
该步骤是最重要的一步,一般包含以下几种方式
- 用业务知识或者经验填充,比如字段“我爱*”,可以通过经验推断“*”填充“你”
- 用同一个字段指标的计算结果填充,比如平均数、中位数等
- 用不同指标的计算结果进行填充,比如通过身份证号推断年龄,通过收件人邮政编码推断大体位置等
(4)重新获取数据
3、数据清洗----格式与内容清洗
(1)时间日期、数值、全半角等显示格式不一致
(2)内容中有不该存在的字符
比如身份证号中出现了字母,姓名中出现数字等。
(3)内容与该字段内容不符
如姓名写成了性别,身份证号写成了手机号等
4、数据清洗----逻辑错误清洗
(1)数据去重
(2)去掉不合理的数值
比如年龄为200岁,或者-20岁
(3)去掉不可靠的字段
比如身份证号出生年月为20000101,年龄填了80岁
5、数据清洗----关联性验证
如果数据有多个来源,可以进行关联性验证,该过程经常用于多数据源合并的过程,通过验证数据之间的关联性来选择准确的特征属性。比如商品销售有线下记录,也有电话客服记录,两者通过姓名和手机号关联,看一下同一个人线下登记的商品信息和线上问卷调查出来的信息是不是一致的
四、数据清洗的工具
1、OpenRefine
是一种新的具有数据画像、清洗、转换等功能的工具,可以观察和操作数据,类似于Excel表格处理软件,但是工作方式更像数据库。
特点:在数据导入的时候可以根据数据类型将数据转换为对应的数值和日期型;相似单元格聚类,可以根据单元格字符串的相似性进行聚类,而且还支持关键词碰撞和近邻匹配算法。
2、DataCleaner
简单、易用的工具,可以分析、比较、验证和监控数据,能够将凌乱的半结构化数据集转换为可视化,并且读取干净可读的数据集,另外还提供数据仓库和数据管理服务
特点:可以访问不同类型的数据存储,如Oracle、MySQL等,可以作为引擎来处理、转换和统一来自多个数据存储的数据。
3、Kettle
国外开源的ETL工具,Java编写,可以在Windows、Linux等系统上运行,支持图形化的GUI设计
特点:开源免费,可维护性好,便于调试,开发简单
4、Beeload
特点:支持大部分主流数据接口,用图形操作界面辅助用户完成数据抽取、转换、装载等规则的设计,并且支持抽取数据的切分、过滤操作
五、实战
相关文章
- 连接两列Pandas数据框
- 大数据等最核心的关键技术:32个算法
- 数据中台/数据仓库
- 使用Python循环插入10万数据
- 海量吞吐的实时NoSQL—HBase的七剑和20151111圣战(数据脱敏版)
- subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器
- react入门-组件方法、数据和生命周期
- SAP CRM和C4C数据同步的两种方式概述:SAP PI和HCI
- 【SpringMVC笔记14】SpringMVC集成Jackson和FastJson两种方式处理json数据
- NLP之GPT-1/GPT-2:GPT-1的概述(简介、原理、意义、结构、创新点、优缺点、数据集)、为何单向Transfo、模型结构、训练过程,GPT-2的概述(大数据、大模型、灵感点)之详细攻略
- Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图的函数源代码详解之最强攻略(建议收藏)
- DataScience:数据预处理/特征工程之非线性变换—log对数变换、sigmoid/softmax变换的概述与对比
- 【蓝桥杯Java_C组·从零开始卷】第三节(附)、for循环练习题(数据题与图形题)
- Python实现下载全球最大旅游网站Tripadvisor美食数据~
- 【SQL干货】一条sql按季度统计交易数据
- input组件中实时转换数据值为千位符格式的策略
- delete表1条件是另一个表中的数据,多表连接删除(转)
- 【大数据project师之路】Hadoop——MapReduce概述
- sql 提取 用户数据
- MySQL基础篇 | 数据库概述及数据准备、常用命令、查看表结构步骤
- 大数据之Hadoop图解概述
- 3. 业务数据采集平台概述