心得:虽然也做过一些数据分析项目,但在过往的数据分析项目中,没有特别注重对于数据清洗相关流程的梳理,每次对这块怎么做都有些许困惑,对数据的处理没有逻辑,想到哪里做到哪里,因而常常出现错漏现象,借此文总结梳理。
看了目前的一些数据清理的文章,大多借案例来说明,由于各数据案例情况不一,因而问题也千差万别,看了陈旸老师和陈丹奕老师的一些经验总结,结合自己的一些工作学习实践,数据清洗思路梳理如下:查看数据情况——“完全合一删”处理——关联性
step 1 查看数据情况/预处理
由于不同的数据情况不同,因此数据清洗的第一步应仔细观察数据问题,针对这一步有以下查看方式
1 若数据太多,可选择性查看,如选择前10行查看,mysql和python均有相关操作
2 若数据看不出来有无问题,
可进一步查看数据类型:如mysql中的DESC 表名 /pandas中pd.info相关操作
可进行简单描述性统计,如pandas的 pd.describe()操作
通过查看数据,可初步看出数据相关问题,进一步进行相关操作。
step 2 “完全合一删”处理
“完全合一”:完整性、全面性、合法性、唯一性
step2-1 “完”
确定完整性程度:可以通过比较每列数据的数量 /计数(count),结合step1 的初步观察来看是否有缺失值,针对缺失的情况进行填充:
1(如果数据比较重要,缺失较多)原则上先看能不能找到该值的一手数据,如果能找到,尽量原数据填充
2 (如果不能找到原数据,但能找到其他线索)比如虽然某人没有年龄,但是有身份证号,可以运用公式找到生日进而计算年龄
3 (如果找不到数据,也找不到线索)填充该列数据的平均值/中位数/众数等能够代表普遍情况的统计值
4 (如果找不到数据,也找不到线索,数据重要性不高) 按照经验或者业务需求填充推测值
step2-2 “全”
确定数据的全面性,即是数据是否有遗漏,可以通过检查唯一列数字,如日期,从某天到某天,中间是否有哪一天的数据遗漏,这一步主要是人工检查居多
step2-3 “合”
合法性可通过step1中查看数据的数据类型和手动观察找到不合法数据,“合法性”包含两层含义的“合法”:
1 数据类型合法
数据类型不统一或者不合适
数据类型不统一:同一列数据里面有文本也有数值,无法进行相关数据操作,针对这样的数据要改变数据类型,mysql与python中均有相关操作
数据类型不合适:如要进行计算的相关字段却使用整数类型,为方便计算,应更改数据类型为浮点型,同样要进行更改数据类型
2 数据内容合法
数据内容不合法,也有两层含义:
文本内容不合法:字段与内容相互矛盾,比如字段为姓名,填成年龄
数值内容不合法:一方面是数值内容不符合常识,比如年龄200岁等,还有一种需特别注意:比如客单价这一字段是由成交金额\成交客户数得到的,但是该数值却和另外两个指标计算的结果对不上
更正方法:
1 通过条件筛选选择出来有问题的部分进行更改
2 或者将该列的最大值/最小值/平均值/倒序查找出来,不符合一般范围的单独查看有什么问题
step2-4 “一”
唯一性即是看数据是否重复,各数据工具均有相关函数可以处理,如excel的删除重复项等等
step2-5 “删”
对于数据分析不是特别能够用得上的列,进行“删除”处理:
1 如果数据不大,不建议删除,能隐藏就隐藏
2 如果数据量较大,删除前一定要做好数据备份工作,防止删除需要的数据
step 3 关联性检查
这一步一般针对数据来源较多的数据,平时用到的情况不多,比如同一个人,在A系统和B系统的代号不同,但是其余信息完全一致,把A/B系统汇总最后就会存在重复的情况,又回到了唯一性处理的流程。