使用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
posted @ 2023-02-18 17:47  絵守辛玥  阅读(210)  评论(0)    收藏  举报