质量数据:400-686-4199信息标准化:400-643-4668云服务:400-629-4066

数据“清洁工”丨带你走进数据清洗管理

2019-02-21

数据清洗是指发现并改正不完整、不正确和不一致的主数据,从而提高数据质量的过程。数据清洗从名字上也可以看出就是把“脏”的数据“洗掉”,是发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性、处理无效值和缺失值等。由于这些数据从多个业务系统中抽取且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互冲突,这些错误的或有冲突的数据显然是用户不想要的,称为“脏数据”。按照一定的规则把零散、重复、不完整的数据清洗干净,得到精确、完整、一致、有效、唯一的新的数据,这就是数据清洗。

数据清洗的方法有很多,例如针对不同学科的方法——生物数据的清洗方法、地理数据的清洗方法;针对不同类型数据的方法——时序数据的清洗方法、非时序数据的清洗方法等。一般来说,通过数据清洗来保证主数据的唯一、精确、完整、一致和有效性。

                                                             唯一   描述数据是否存在重复记录

                                                             精确   描述数据是否与其对应的客观实体的特征相一致

                                                             完整   描述数据是否存在缺失记录或缺失字段

                                                             一致   描述同一实体同一属性的值在不同的系统中是否一致

                                                             有效   描述数据是否满足用户定义的条件或在一定的域值范围内

如果不能保证主数据的以上特征,则会影响到各个应用系统的数据质量以及后续的分析和决策,对企业造成重大损失。例如,主数据的不一致会带来业务交易数据的不一致,在不同业务系统中的数据编码不一致使得系统之间的数据共享变得困难,阻碍对企业的整体运营情况进行统一的分析和规划。

需要清洗的数据主要包括两种类型:缺失数据和噪声数据。

 缺失数据

这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据应过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。

噪声数据

可以被认定为噪声的数据主要有错误数据和重复数据。错误数据产生的原因是业务系统不够健全,在接收输入后没有进行判断便直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车标记、日期格式不正确、日期越界等。这一类数据也要分类,对于类似全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取;日期格式不正确或者是日期越界这一类错误会导致ETL运行失败,需要去业务系统数据库用SQL挑出来,交给业务主管部门要求限期修正,修正之后再抽取;对于重复数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。

在确定了错误数据的类型后,下面根据数据类型分别介绍清洗的主要内容。

01

缺失数据处理

数据缺失是实际数据库中经常出现的情况。对于处理缺失数据的方法,按照处理的主体不同,可以分为人工处理方法和自动处理方法;按照处理的方法不同,可以分为直接忽略的方法、填补缺省值的方法和依据其他数据填补缺失值的方法。

 依据处理主体分类

工清洗方法( Manual Cleaning)是指当一个记录的属性值有缺失时,查找原始的记录,或者请教专家手工填补所缺失的数值。这种方法的好处是当缺失数据比较少时,填补数值的准确度相对较高。但是当缺失的数据比较多时,采用人工处理的方法效率太低,而且更容易出错,可行性差。

自动清洗方法( Automated Cleaning)是指当一个记录的属性值有缺失时,通过已有的程序自动处理缺失。这种方法的好处是当缺失数据的规模很大时,在效率上优于手工处理方法。但是自动清洗方法在很大程度上依赖于处理缺失数据的程序,不太灵活,处理少量缺失数据的时候不如手工处理准确度高。

根据处理方法分类

对于缺失数据最直接的方法就是忽略。直接忽略的方法是指,如果有一个记录的属性值有缺失,则在数据分析中直接删除此记录,不予考虑,具体删除的操作可以分为整例删除、变量删除和成对删除。这种方法的好处是操作简便,但是当数据中遗漏的属性值比较多,而且分散在不同的记录中时,该方法的有效性就会大打折扣。一方面,它可能会造成现有数据的大量浪费;另一方面由于数据缺失在以后的补充数据中也会出现,因此对数据收集的规模缺乏控制。

填补缺省值的方法是对直接忽略方法的改进,对那些对数据分析影响不大的缺失数据统一填补一个确定的缺省值,以避免浪费大量数据。例如,对于量化的属性可以采用一个极大的负值或正值作为缺省值,对于非量化的属性可以采用“无”作为缺省值。这种方法的好处是避免了数据的浪费而且操作相对简单。但是当数据中缺失的属性值比较多时,容易使整个数据向缺省值的方向倾斜,给之后的数据处理造成麻烦。例如,数据挖掘程序可能会将这些缺省值作为一个新的属性值进行计算,挖掘出大量无用的规律。

把填补缺省值的方法做进一步改进,根据已有数据科学合理地推算缺失的数据,就得到了依据其他数据填补缺省值的方法。这种方法通过对于缺失的数值进行纵向(缺失数值所在的属性)和横向(缺失数值所在记录的其他的属性值)的数据分析,求出所缺失的数值的可能值。数据分析的方法有很多,例如,通过同属性平均值来填补缺失的数值,在信用评级的数据库中,对于工资情况没有记录的客户,可以采用有类别的平均值来填补此属性、此类别的所有缺失值。当然,用平均值代替空缺值不一定就是最好的方法,也可以利用回归分析、贝叶斯计算、决策树、人工神经网络等方法,用缺失数据的纵向、横向信息计算出所缺失数值的最大可能值并进行填补。

02

噪声数据处理

与数据缺失一样,错误数据也是真实数据中经常出现的问题。错误数据分为内错误数据和外错误数据。其中内错误数据是指在整体数据的统计分布之内,但是数值错误的数据:外数据错误是指在整体数据的统计分布之外的错误数据。例如,在数据中有两个属性:一个是“姓名”,另一个是“年龄”。一个人的实际年龄是20岁,而数据库的错误记录为25岁,25岁属于人的正常年龄范围,这样的错误就是内部数据错误;而如果个人实际年龄是20岁,但数据库存储的记录为200岁,200岁已经超出了人的正常年龄范围,这样的错误即为外部数据错误。

一般来讲,内错误数据很难辨识,更不容易被改正。对于外错误数据,一般情况下只能根据整体数据的数据分布来辨识,并进行适当的处理。外数据错误最主要的是噪声数据,指被测量变量的随机错误和偏差。对于噪声的处理主要有两种方法:一种方法是直接平滑噪声,这种方法假设数据中有噪声,但是不去专门识别噪声,只是通过将含有平滑的数据整体平滑,减小数据的方差;另一种方法是先辨别噪声,然后再根据具体情况处理。这种方法根据噪声和正常数据在数据分布上不同的特点,找出可能的噪声数据,再进行进一步地处理。前一种主要是分箱方法,后一种主要包括人工智能和人机结合的方法。

分箱方法

分箱方法利用噪声周围的数值来平滑噪声,达到减少噪声干扰的目的。第一步,对已有的数值进行排序后通过等深或等宽的规则分配到若干容器(即“箱”)中;第二步,对每个容器中的数值通过均值法、边界法等方法进行平滑处理。经过处理后的数据与原数据相比更加平滑、波动更小,达到了减弱或消除噪声影响的目的。

人工智能法

人工智能的方法是指利用聚类、回归分析、贝叶斯计算、决策树、人工神经网络等人智能方法对数据进行自动平滑处理。例如,通过多变量线性回归法获得多个变量相互间的关系,从而达到变量之间相互预测修正的目的,从而平滑数据,去除其中的噪声。

 人机结合法

人机结合法是对人工智能法进行的改进。它通过计算机检查和人工检查结合的方法来帮助发现异常数据。例如,利用人工智能的各种方法帮助识别销售记录中的异常情况,如销售量的突变等,将识别出的异常情况自动输出到列表中,由人工检查各个异常情况,并最终确定是否为噪声。这种检查方式与单纯的计算机检查相比准确率高,与单纯的人工方式相比效率较高。