网上很多ETL工程师很焦虑,不知道之后的职业道路怎么规划。其实我们需要先内圣,而后外王。ETL工程师往技术方向可以走数仓、数据架构师路线;往算法方向可以走数据挖掘、AI的路线;往业务方向可以走商业数据分析的路线。
回到正题,数据清洗是ETL工程师的核心工作之一我们以终为始,剖析一下数据清洗这件事。
数据清洗的目的可以从两个角度上看一是为了解决数据质量问题,二是让数据更适合做挖掘。不同的目的下分不同的情况,也都有相应的解决方式和方法。
解决数据质量问题
这部分主要是规范数据,满足业务的使用,解决数据质量的各种问题,其目的包括但不限于:
1.数据的完整性----例如人的属性中缺少性别、籍贯、年龄等
2.数据的唯一性----例如不同来源的数据出现重复的情况
3.数据的权威性----例如同一个指标出现多个来源的数据,且数值不一样
4.数据的合法性----例如获取的数据与常识不符,年龄大于150岁
5.数据的一致性----例如不同来源的不同指标,实际内涵是一样的,或是同一指标内涵不一致。
数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。
那么为了解决以上的各种问题,我们需要不同的手段和方法来一一处理。
每种问题都有各种情况,每种情况适用不同的处理方法,具体如下:
一、解决数据的完整性问题:
解题思路:数据缺失,那么补上就好了。补数据有什么方法?
a.通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等;
b.通过前后数据补全,例如时间序列缺数据了,可以使用前后的均值,缺的多了,可以使用平滑等处理,记得Matlab还是什么工具可以自动补全;
c.实在补不全的,虽然很可惜,但也必须要剔除。但是不要删掉,没准以后可以用得上。
二、解决数据的唯一性问题
解题思路:去除重复记录,只保留一条。去重的方法有:
a.按主键去重,用sql或者excel去除重复记录”即可;
b.按规则去重,编写一系列的规则,对重复情况复杂的数据进行去重。例如不同渠道来的客户数据,可以通过相同的关键信息进行匹配,合并去重。
三、解决数据的权威性问题
解题思路:用最权威的那个渠道的数据方法:
对不同渠道设定权威级别。
四、解决数据的合法性问题
解题思路:设定判定规则
1.a.设定强制合法规则,凡是不在此规则范围内的,强制设为最大值,或者判为无效,剔除;
b.字段类型合法规则:日期字段格式为“2010 -10-10”;
c.字段内容合法规则:性别in(男、女、未知);出生日期<=今天
2.a.设定警告规则,凡是不在此规则范围内 的,进行警告,然后人工处理
b.。。警告规则:年龄》110
c.离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
五、解决数据的一致性问题
解题思路:建立元数据体系,包含但不限于:
1.指标体系(度量)
2.维度(分组、统计口径)
3.单位
4.频度
5.数据
供应算法原料
这部分主要是让数据更适合数据挖掘,作为算法训练的原料。其目标包括但不限于:
1.高维度----不适合挖掘
2.维度太低----不适合挖掘
3.无关信息----减少存储
4.字段冗余--一个字段是其他字段计算出来的,会造成相关系数为1或者主成因分析异常)
5.多指标数值 单位不同----如GDP与城镇居民人均收入数值相差过大
a.解决高维度问题
解题思路:降维,方法包括但不限于:主成分分析、随机森林
b.解决维度低或缺少维度问题
解题思路:抽象,方法包括但不限于:
各种汇总,平均、加总、最大、最小等;各种离散化,聚类、自定义分组等;
c.解决无关信息和字段冗余。
解决方法:剔除字段
d.解决多指标数值、单位不同问题
解决方法:归一化,方法包括但不限于:最小-最大;零-均值;小数定标。