pandas 是一个很酷炫的数据处理的工具。
今天就来聊聊如何在数据处理的过程中,利用 pandas 进行缺失值的处理。
一般我们使用 删除法
,替补法
和插补法
进行处理。
- 删除法
- 如果数据中某个变量大部分都是缺失值,可以考虑删除变量
- 如果缺失值是随机分布的,且缺失的数量并不是很多,可以考虑删除这些缺失的观测值
- 替补法
- 对于连续型变量,如果变量的分布近似或就是正态分布的话,可以用均值替代那些缺失值
- 如果变量是有偏的,可以使用中位数来代替那些缺失值
- 对于离散型变量,我们一般用众数去替换那些存在缺失的观测
- 插补法
- 插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值
缺失值的处理如下:
- 通过
sum
和isnull
函数来检测有多少缺失值
sum(pd.isnull(s))
- 通过
dropna
直接删除缺失值,默认情况下dropna
会删除任何含有缺失值的行
s.dropna()
#增加参数 how = all,表示值删除所有列都为缺失值的行
s.dropna(how = 'all')
- 通过
fillna
函数来实现填补工作 - 用
0
来填补所有缺失值
df.fillna(0)
- 采用
前项
填充或者后项
填充
#用前项填充
df.fillna(method = 'ffill')
#用后项填充
df.fillna(method = 'bfill')
- 使用
常量
填充不同的列
df.fillna('A':1,'B':2)
- 用
均值
或中位数
填充各自的列
x_median = df['A'].median()
x_mean = df['A'].mean()
df.fillna('A':x_median,'B':x_mean)