01 重复值处理
数据录入过程、数据整合过程都可能会产生重复数据,直接删除是重复数据处理的主要方法。pandas提供查看、处理重复数据的方法duplicated和drop_duplicates。以如下数据为例:
>sample = pd.DataFrame({'id':[1,1,1,3,4,5],
'name':['Bob','Bob','Mark','Miki','Sully','Rose'],
'score':[99,99,87,77,77,np.nan],
'group':[1,1,1,2,1,2],})
>sample
group id name score
0 1 1 Bob 99.0
1 1 1 Bob 99.0
2 1 1 Mark 87.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
发现重复数据通过duplicated方法完成,如下所示,可以通过该方法查看重复的数据。
>sample[sample.duplicated()]
group id name score
1 1 1 Bob 99.0
需要去重时,可drop_duplicates方法完成:
>sample.drop_duplicates()
group id name score
0 1 1 Bob 99.0
2 1 1 Mark 87.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
drop_duplicates方法还可以按照某列去重,例如去除id列重复的所有记录:
>sample.drop_duplicates('id')
group id name score
0 1 1 Bob 99.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
02 缺失值处理
缺失值是数据清洗中比较常见的问题,缺失值一般由NA表示,在处理缺失值时要遵循一定的原则。
首先,需要根据业务理解处理缺失值,弄清楚缺失值产生的原因是故意缺失还是随机缺失,再通过一些业务经验进行填补。一般来说当缺失值少于20%时,连续变量可以使用均值或中位数填补;分类变量不需要填补,单算一类即可,或者也可以用众数填补分类变量。
当缺失值处于20%-80%之间时,填补方法同上。另外每个有缺失值的变量可以生成一个指示哑变量,参与后续的建模。当缺失值多于80%时,每个有缺失值的变量生成一个指示哑变量,参与后续的建模,不使用原始变量。
在下图中展示了中位数填补缺失值和缺失值指示变量的生成过程。
▲图5-