什么是数据清洗?
·数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等
数据分析整个框架里面比较关键除了模型本身以外,更多依赖的是丰富高质量的数据源。在数据收集时需要捕获有关源的关键元数据,如来源、大小、时效性和相关内容的额外知识。迭代地识别当前数据资产基础和这些数据源的差距,使用分析、可视化、 挖掘或其他数据科学方法探索这些数据源,以定义模型算法输入或模型假设。
由于原始数据中或多或少存在一些缺失、损坏的脏数据。如果不处理会导致模型失效。就好比,一个水平很高的厨师,给到的原材料如果不卫生不干净,那也很难做出一道让人满意的菜品。因此在整合数据建立模型之前, 应先评估数据的质量。对数据进行清洗。
当然,数据清洗除了能保障高质量的数据输出之外。也能够同步对数据探索。数据清洗和数据探索的作用是相辅相成的,通过数据探索,检阅数据的特征描述、分布推断以及结构上的优化,能更好的为数据清洗选择合适的清洗方法。而数据清洗后的数据则可以更有效的进行数据探索。本文重点讲解数据清洗的一些方法和注意事项。接下来,介绍数据清洗的两个重要部分:异常值判别和缺失值处理。
异常值判别
数据清洗的第一步是识别会影响分析结果的“异常”数据,然后判断是否剔除。异常值通常有以下几个表现:
(1)缺乏完整性
完整性即记录数量名称是否完整,内部数据由于属于企业内部自己生产的数据,相对而言比较好掌控检查。而如果是采购的外部数据,例如:城市土地人口宏观数据或者某城的二手房交易数据,则完整性需要外部数据供应商提出相应保障。
(2)缺乏准确性
收集的数据必须要能够正确反映业务需求,否则分析结论会对业务造成误导。这方面的检查,需要首先理解业务背景,第二需要判断收集的此类数据以及数据项是否可以转换为分析项目所需数据。如果部分数据不符合业务逻辑,或者数据准确性很差,则对数据分析造成很大的影响。
(3)缺乏唯一性
数据的唯一性应该从两个角度检查,常见的错误是多个数据一个编码,例如产品住宅,产品商铺都是同一编码,或者同时一个实物对应多个编码。如果导入系统,系统需要能够识别,否则将会影响分析主体的唯一性。
目前常用的识别异常数据的方法有物理判别法和统计判别法:
物理判别法:根据人们对客观事物、业务等已有的认识,判别由于外界干扰、人为误差等原因造成实测数据偏离正常结果,判断异常值。例如常见的年月日基本信息,显示值为:1900年1月1日。这种判别方式需要人工干预,检查的工作量较大,如果没有找到数据之间的关联关系容易出错漏处理。
统计判别法:通过系统设定一个置信概率,并确定一个置信上下限,凡超过此限的误差,就认为它不属于随机误差范围,自动判定为异常值。这种方法高效明确,且不会遗漏错误脏数据。常用的方法有:拉依达准则、肖维勒准则、格拉布斯准则、狄克逊准则、t检验等。
这种系统判别并进行删除异常值的方式虽然高效,但也存在风险。因为每个方法不尽相同,得出的异常值也有可能存在偏差。为了减少这种误删的概率,可以将多种统计判别方法结合使用,并且要找出异常值出现的原因。是手工录入错误还是数据接收过程中出错。同时,如果发现有多个异常值,建议逐个删除,即删除一个后再进行检验。
02 缺失值处理
在数据缺失严重的情况下,分析结果会失真。因此需要将缺失值进行填补,传统方式检查出来的空值有人工进行补充,但是需要补充人员找到相关资料检验无误后再进行填补。当然如果对于结果要求并不是特别大,且我们能通过数据找到规律的情况下,可以采用合理的方法自动填补空缺值。例如:可以根据身份证号码,自动判断人员的性别。常见的方法有平均值填充、K最近距离法、回归法、极大似线估计法等。
· 平均值填充:取所有对象(或与该对象具有相同决策属性值的对象)的平均值来填充该缺失的属性值
· k最近距离法:现根据欧式距离或相关分析确定距离确实数据样本最近的K个样本,将这K个值加权平均来估计缺失数据值
· 回归:基于完整的数据集建立回归方程(模型),对于包含空值的对象,将已知属性值带入方程来估计未知属性值,以此估计值来进行填充;但当变量不是线性相关或预测变量高度相关时,会导致估计偏差
· 极大似线估计:在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望(E步),后用极大化对数似然函数以确定参数的值,并用于下步的迭代(M步)
· 多重插补法:由包含m个查补值的向量代替每一个缺失值,然后对新产生的m个数据集使用相同的方法处理,得到处理结果后,综合结果,最终得到对目标向量的估计。
值得注意的是,数据收集的过程中,如果对于某个字段要求必输,则可以通过系统导入时自动判断是否为null,如果为null则导入不成功,从源头控制数据质量。
当然,我们在做数据分析的过程中,也要看数据量的大小。一般情况下数据量越大,异常值和缺失值对整体分析结果的影响会逐渐变小。所以,在“大数据”模式下,如果异常值和缺失值较小的情况下,可以忽略减轻部分工作量,而侧重对数据结构合理性进行分析。
03 格式内容清洗
如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题,简单来说,格式内容问题有以下几类:
1、字段显示格式不一致
这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
2、内容中有不该存在的字符
某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。
3、内容与该字段应有内容不符
姓名写了性别,身份证号写了手机号等等,均属这种问题。但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。
格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“张三”和“张 三”不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)等等,需要大家重点关注。
|