Pandas 填充缺失值
很多时候我们需要将缺失值替换成有效的数值。有效的值可能是像 0、1、2 那样单独的值,也可能是经过填充(imputation)或转换(interpolation)得到的。
·
很多时候我们需要将缺失值替换成有效的数值。有效的值可能是像 0、1、2 那样单独的值,也可能是经过填充(imputation)或转换(interpolation)得到的。
虽然可以通过 isnull() 方法建立掩码来填充缺失值,但是 Pandas 为此专门提供了一个fillna() 方法,它将返回填充了缺失值后的数组副本。
来用下面的 Series 演示:
data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))
print(data)
输出结果如下所示:
a 1.0
b NaN
c 2.0
d NaN
e 3.0
dtype: float64
我们将用一个单独的值来填充缺失值,例如用 0:
In[24]: data.fillna(0)
输出结果如下所示:
a 1.0
b 0.0
c 2.0
d 0.0
e 3.0
dtype: float64
可以用缺失值前面的有效值来从前往后填充(forward-fill):
# 从前往后填充
data.fillna(method='ffill')
输出结果如下所示:
a 1.0
b 1.0
c 2.0
d 2.0
e 3.0
dtype: float64
也可以用缺失值后面的有效值来从后往前填充(back-fill):
# 从后往前填充
data.fillna(method='bfill')
输出结果如下所示:
a 1.0
b 2.0
c 2.0
d 3.0
e 3.0
dtype: float64
DataFrame 的操作方法与 Series 类似,只是在填充时需要设置坐标轴参数 axis:
print(df)
输出结果如下所示:
0 1 2 3
0 1.0 NaN 2 NaN
1 2.0 3.0 5 NaN
2 NaN 4.0 6 NaN
df.fillna(method='ffill', axis=1)
输出结果如下所示:
0 1 2 3
0 1.0 1.0 2.0 2.0
1 2.0 3.0 5.0 5.0
2 NaN 4.0 6.0 6.0
需要注意的是,假如在从前往后填充时,需要填充的缺失值前面没有值,那么它就仍然是缺失值。
更多推荐
已为社区贡献1条内容
所有评论(0)