预处理阶段
该阶段主要做2件事:
将数据原封不动的抽取导入,切记永远不要对源数据进行直接的清洗修改。
了解数据:
整理记录元数据,包括但不限于字段解释、数据来源、计算方式等
抽取部分数据了解:永远不要相信别人提供的数据描述,人工查看以确认实际数据情况。
null值清理
大部分数据都存在着Null值的情况,处理null值也有很多方法。
确认null值分布:对每个字段都计算出null值比例。然后整理出每个字段的重要性(业务)和缺失值占比。
根据重要性和缺失值进行处理。处理方法可参考下图。
补充:
具体多少缺失率算高需要结合实际业务场景来决定。个人建议10%以上就算高。
通过统计学计算进行填充:
常用的计算方式为均值、中位数、众数、简单的回归计算。
统一内容格式
我们要输出的数据格式和获得的数据格式有时候并不一致。如下
输入格式 | 输出格式 |
---|---|
一万三千(String) | 13000(Int) |
二零一九年四月(String) | 2019-04(date) |
20190401(Int) | 2019-04-01(date) |
整理出每个字段需要的格式和字符。
-
格式转化
将不同于输出格式的数据进行格式转换。
-
去除不该有的字符
最常见的就是莫名其妙的空格,及一些文本的\t等等。此处需要半自动半人工的方式来解决。
内容与该有的内容不符
比如姓名和性别位置写错,或者出现一些很奇怪的字符。此处需要追朔数据源头。详细识别数据类型。大多要用人工的方式来解决,
逻辑错误清理
此处主要清理使用简单逻辑即可发现问题的数据。
去重,最常见的逻辑错误。
去除逻辑明显不合理的值:比如200岁的人。这种数据要么删掉,要么按照缺失值来处理。
修正矛盾内容:有的字段可以相互验证,例如年龄和身份证号。如果两个字段出现矛盾,那么取来源更可靠的字段数据。