使用Pandas补全缺失值
在大多数情况下,使用fillna来补全缺失值,调用fillna时可以使用一个常数作为参数来替代缺失值:
df = pd.DataFrame(np.random.randn(7, 3).round(2)) # Pandas中使用round()指定小数位数
df.iloc[2:5, 1] = None
df.iloc[1:3, 2] = None
df
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 NaN
2 2.08 NaN NaN
3 -0.20 NaN 1.25
4 -1.93 NaN -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35
df.fillna(0)
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 0.00
2 2.08 0.00 0.00
3 -0.20 0.00 1.25
4 -1.93 0.00 -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35
使用method参数可以使用缺失值的前一个值或后一个值填充,默认为ffill。
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 NaN
2 2.08 NaN NaN
3 -0.20 NaN 1.25
4 -1.93 NaN -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35
- 参数bfill使用缺失值的后一个值填充(理解为backfill):
df.fillna(method='bfill')
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 1.25
2 2.08 0.29 1.25
3 -0.20 0.29 1.25
4 -1.93 0.29 -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35
- 参数ffill使用缺失值的前一个值填充(理解为frontfill):
df.fillna(method='ffill')
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 -0.78
2 2.08 0.44 -0.78
3 -0.20 0.44 1.25
4 -1.93 0.44 -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35
使用limit参数可以指定最大填充范围。
df.fillna(method='ffill', limit=1)
0 1 2
0 0.21 -2.19 -0.78
1 0.56 0.44 -0.78
2 2.08 0.44 NaN
3 -0.20 NaN 1.25
4 -1.93 NaN -0.77
5 0.03 0.29 -0.85
6 -0.27 -1.08 -0.35

浙公网安备 33010602011771号