男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述大数据之路 ——算法建模中的数据清洗相关的知识,希望能为你提供帮助。
?????
在当前大数据的背景下,数据处理占了极大的份额,就像一个西红柿做成西红柿炒鸡蛋,需要经过调料整合,菜料清洗,饭菜加工等等才能发布到生产,不,发送到餐桌。
作者:Mochou?
这里简单分享一下我对数据清洗的理解,其具有很重要的地位,不然面对着脏乱差的西红柿炒鸡蛋,没人愿意下口。
?一份未经清洗过的数据一般会存在这些不符合分析要求的问题:比如重复,错误,空值,异常数据等,对于错误数据,因为是业务源头问题,比如性别明明是男却成了女,这些我们无法处理,只能从源端进行规范,就像顾客想吃河南的西红柿,厨房里进的只有山东的,这个厨师没办法解决,只能通知进货商更改。故我们只对另外三个问题进行清洗修改,必须申明一点,所有的清洗都要基于实际业务来做,比如重复,可能业务要的就是重复,你给人家洗掉了,就产生了问题?
文章图片
一 . 重复如果实际业务不要重复值,重复值可以直接删除,比如数据库里可以在整合合并时用union而不是union all ,不支持union的可以用主键分组排序取第一个
row_number() over (partition by .. order by..desc) as..
如果也不支持row_number,,,那好好活着吧。
其他语言也都有类似的去重函数,如python可以直接用drop_duplicates()
二 . 缺失缺失也就是空值,需要明确一点,‘空’有两种情况,一种是真正的对象为空,即null,一种是空值,即xxx=,所以我们处理这些空值时需要分两种情况,一种是xxx is null, 一种是length(trim(xxx))=0。
空值处理一般是填补,这个根据实际业务需要来做,一般来讲,
- 空值数量比较小时可以填补上连续值的某一个,比如平均数,中位数等;
- 空值较多时,占了五成以上,可以考虑使用众数来填补;
- 空值占了绝大部分,这个时候就没必要再用原有的数据,可以自己造数据,生成一个指示哑变量,参与后续的建模需要。
# 列出空值在每个列所占的比重
# df是数据集,col.size是当前数据的行数
df.apply(lambda col:sum(col.isnull())/col.size)
# 用均值填补,使用pandas包里的fillna
df.col1.fillna(df.col1.mean())
三 . 噪声值噪声值是指数据中与其他数值相比差异比较大的值,也有的叫离群点等,比如年龄里出来几个150以上的。噪声值会严重干扰模型结果,使结论不真实或偏颇。所以必须要清除这些噪声值,常用的方法:对于单变量的有盖帽法,分箱法,多变量的有聚类法。
- 盖帽法
文章图片
数据库里可以用case when来替换,python可以写一个函数
def cap(x,quantile=[0.01,0.99]):
盖帽法处理异常值
Args:
x:是series列,连续变量
quantile:上下分位数范围,这里写为0.01和0.99
# 生成分位数,Q01,Q99分别是百分之一分位点和百分之99分位点
Q01,Q99=x.quantile(quantile).values.tolist()
# 替换异常值为制定的分位数
if Q01 > x.min():
x = x.copy()
x.loc[x < Q01] = Q01
if Q99 < x.max():
x = x.copy()
x.loc[x > Q99] = Q99
return(x)
- 分箱法
我们这里取箱子的平均数,则A为1.3 B为4 C为27.3 很明显这个C值远远大于这组数据的均值和中位数,所以C箱子是坏箱子,则可以集中处理C里的数据
比如一组数 1 2 66 8 9 2 1 4 6,先排序 1 1 2 2 4 6 8 9 66,再分为三个箱子 箱子A:1 1 2 箱子B:2 4 6 箱子C:8 9 66
- 聚类法
【大数据之路 ——算法建模中的数据清洗】它的思想是正常值都拥有相似的标签,比如前面好的西红柿颜色都是红润的,口感都是酸甜的,表皮都是完整的等等,而坏的西红柿则拥有异于“他人”的特征,比如味道怪异。故我们可以把数据对象分为多个集合,在同一个集合里的对象有较高的相似度,而不同的集合之间的对象差别较大。聚类分析可以通过这些不同的集合挖掘出孤立点,这些孤立点往往就是异常数据。
推荐阅读
- (EnableDiscoveryClient与EnableEurekaClient的区别(Edgware版本))
- 最后得倔强,使用Java进行爬虫
- Seata分布式事务AT模式介绍
- 小技巧Google 浏览器设置之 Tab 折叠分组
- 验证Kubernetes YAML的最佳实践和策略
- docker——docker资源控制管理
- # yyds干货盘点 # 手把手教你进行安卓逆向之篡改apk名称和图标
- 5个远程开机的方案
- 第十二周学习作业