fillna()函数

作用:补充缺失值

参数:fillna(inplace,method,limit,axis)

参数解释+代码演示

自定义DataFrame类型的数据

1、inplace参数的取值: True、False

True:直接修改原对象

Fasle:创建一个副本,修改副本,原对象不变(缺失默认

指定inplace参数
>>> df.fillna(0,inplace=True) # df对象发生改变
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

2、method参数的取值: {‘pad’,’ffill’,’backfill’,’bfill’,’None’}

pad/ffill:用前一个非缺失值去填充该缺失值

backfill/bfill:用下一个非缺失值填充该缺失值

None:指定一个值去替换缺失值(缺失默认)

指定method参数
>>> df.iloc[1,1] = NaN
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='ffill') # 用前一个非缺失值填充该缺失值
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[1,1] = NaN
>>> df
     0    1    2
0  1.0  2.0  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='bfill') # 用下一个非缺失值填充该对象
     0    1    2
0  1.0  2.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

3、limit参数:限制填充个数

指定limit参数
>>> df.iloc[1,1] = NaN
>>> df.iloc[0,1] = NaN
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(method='bfill',limit=1) # 用下一个非缺失值填充,只能填充一个
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0

4、axis参数:修改填充方向

1:按行填充;0:按列填充

指定axis参数,注意必须至少和value或method一块使用
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=1)
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=0)
     0    1    2
0  1.0  2.0  3.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[0,2] = NaN
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=1)
     0    1    2
0  1.0  2.0  2.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
>>> df.fillna(2,axis=0)
     0    1    2
0  1.0  2.0  2.0
1  0.0  2.0  3.0
2  0.0  0.0  0.0
和value一块使用时,效果上看不出来区别

和method一块使用时,效果如下
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(axis=0,method='bfill') # 按列填充,使用下一行非缺失值填充
     0    1    2
0  1.0  0.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
>>> df.fillna(axis=1,method='bfill') # 按行填充,用下一列非缺失值填充
     0    1    2
0  1.0  NaN  NaN
1  0.0  3.0  3.0
2  0.0  0.0  0.0

联合limit表示每行或每列限制填充的个数
>>> df.iloc[0,2] = 3
>>> df
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0

按行填充,每行填充一个,用前一列非缺失值填充
>>> df.fillna(method='ffill',limit=1,axis=1)
     0    1    2
0  1.0  1.0  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
按列填充,每列填充一个,用前一列非缺失值填充,前一行无,所以未改变
>>> df.fillna(method='ffill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  NaN  3.0
2  0.0  0.0  0.0
按列填充,用下一行非缺失值填充,总共一列缺失,两个缺失值,limit=1限制只能填充一个
>>> df.fillna(method='bfill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
>>> df.iloc[0,2] = NaN
>>> df
     0    1    2
0  1.0  NaN  NaN
1  0.0  NaN  3.0
2  0.0  0.0  0.0
按列填充,每列填充一个,用后一行非缺失值填充
>>> df.fillna(method='bfill',limit=1,axis=0)
     0    1    2
0  1.0  NaN  3.0
1  0.0  0.0  3.0
2  0.0  0.0  0.0
'''
 从上面的代码演示中可以看到一块使用axis,method,limit参数时,
limit限制的是每行或每列(axis=1或axis=0)可以填充的个数,
method表示使用前一列/后一列或前一行或后一行非缺失值来填充缺失值
'''

在机器学习中,当数据有缺失时,如果直接删除某行或某列的数据一般是不可取的,特别当数据量偏小的时候,一般用前一个或下一个非缺失值填充缺失值,或使用均值填充缺失值,填充的语句和参数解释可参考上面的代码理解。

欢迎交流~

Original: https://blog.csdn.net/lady_chen/article/details/114294852
Author: lady_chen
Title: fillna()函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/753078/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球