1.概念
数据清洗是将重复、多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或者删除,最后整理成为我们可以进一步加工、使用的数据。所谓的数据清洗,也就是ETL处理,包含抽取Extract、转换Transform、加载load这三大法宝。在大数据挖掘过程中,面对的至少是G级别的数据量,包括用户基本数据、行为数据、交易数据、资金流数据以及第三方的数据等等。选择正确的方式来清洗特征数据极为重要,除了让你能够事半功倍,还至少能够保证在方案上是可行的。
2.步骤
数据清洗的一般步骤:分析数据、缺失值处理、异常值处理、去重处理、噪音数据处理。在大数据生态圈,有很多来源的数据ETL工具,但是对于公司内部来说,稳定性、安全性和成本都是必须考虑的。
3.处理
1.对于数据值缺失的处理
- 删除缺失值当样本数很多的时候,并且出现缺失值的样本在整个的样本的比例相对较小,这种情况下,我们可以使用最简单有效的方法处理缺失值的情况。那就是将出现有缺失值的样本直接丢弃。这是一种很常用的策略。
- 均值填补法根据缺失值的属性相关系数最大的那个属性把数据分成几个组,然后分别计算每个组的均值,把这些均值放入到缺失的数值里面就可以了。
- 热卡填补法对于一个包含缺失值的变量,热卡填充法的做法是:在数据库中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。
- 对于缺失值和空值的填充处理主要包含两种方式:一是手工填入可能的值;二是利用规则填充可能的值:某些缺失值可以从本数据源或其它数据源推导出来,这就可以用数据分布的状态和特征,使用众数、中位数、平均值、最大值、最小值填充,或者使用近邻分析甚至更为复杂的概率估计代替缺失的值,从而达到填充的目的,某些情况下也可以直接以未知或unknown填充,这是一种先期不处理而等到后期业务在处理数据的时候再处理的方法。
2.纠正错误数据
- 数据值错误:数据直接是错误的,例如超过固定域集、超过极值、拼写错误、属性错误、源错误等。
- 数据类型错误:数据的存储类型不符合实际情况,如日期类型的以数值型存储,时间戳存为字符串等。
- 数据编码错误:数据存储的编码错误,例如将UTF-8写成UTF-80。
- 数据格式错误:数据的存储格式问题,如半角全角字符、中英文字符等。
- 数据异常错误:如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期越界、数据前后有不可见字符等。
- 依赖冲突:某些数据字段间存储依赖关系,例如城市与邮政编码应该满足对应关系,但可能存在二者不匹配的问题。
- 多值错误:大多数情况下,每个字段存储的是单个值,但也存在一个字段存储多个值的情况,其中有些可能是不符合实际业务规则的。这类错误产生的原因是业务系统不够健全,尤其是在数据产生之初的校验和入库规则不规范,导致在接收输入后没有进行判断或无法检测而直接写入后台数据库造成的。
3.删除重复项
删除重复项由于各种原因,数据中可能存在重复记录或重复字段(列),对于这些重复项目(行和列)需要做去重处理。对于重复项的判断,基本思想是“排序和合并”,先将数据库中的记录按一定规则排序,然后通过比较邻近记录是否相似来检测记录是否重复。这里面其实包含了两个操作,一是排序,二是计算相似度。
4.转换构造
转换构造数据变换是数据清理过程的重要步骤,是对数据的一个的标准的处理,几乎所有的数据处理过程都会涉及该步骤。数据转换常见的内容包括:数据类型转换、数据语义转换、数据值域转换、数据粒度转换、表/数据拆分、行列转换、数据离散化、数据离散化、提炼新字段、属性构造、数据压缩等。数据类型转换当数据来自不同数据源时,不同类型的数据源数据类型不兼容可能导致系统报错。这时需要将不同数据源的数据类型进行统一转换为一种兼容的数据类型。数据语义转换传统数据仓库中基于第三范式可能存在维度表、事实表等,此时在事实表中会有很多字段需要结合维度表才能进行语义上的解析。