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