小编为您详解fillna函数的使用法则
小编写这篇文章的主要目的,还是用来给大家讲解一些案例,给大家讲解一下具体的一些使用法则,包括使用fillna函数填充NaN值,下面给大家做一个比较详细的解答。

参数解析
1.1 inplace参数:
取值:True、False
True:直接修改原对象
False:创建一个副本,修改副本,原对象不变(缺省默认)
1.2 method参数:
取值:{‘pad’,‘ffill’,‘backfill’,‘bfill’,None}, default None
pad/ffill:用前一个非缺失值去填充该缺失值
backfill/bfill:用下一个非缺失值填充该缺失值
None:指定一个值去替换缺失值(缺省默认这种方式)
1.3 limit参数:
限制填充个数
1.4 axis参数:
修改填充方向
补充:
isnull和notnull函数用于判断是否有缺失值数据
isnull:缺失值为True,非缺失值为False
notnull:缺失值为False,非缺失值为True
代码实例
#导包
import pandas as pd
import numpy as np
from numpy import NaN as NaN
df1 = pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])
df1:
| 0 | 1 | 2 | |
| 0 | 1.0 | 2.0 | 3.0 |
| 1 | NaN | NaN | 2.0 |
| 2 | NaN | NaN | NaN |
| 3 | 8.0 | 8.0 | NaN |
2.1常数填充
2.1.1用常数填充
#1.用常数填充
print(df1.fillna(100))
print('-----------------------')
print(df1)
运行结果:
0 1 2
0 1.0 2.0 3.0
1 100.0 100.0 2.0
2 100.0 100.0100.0
3 8.0 8.0 100.0
-----------------------
0 1 2
0 1.0 2.0 3.0
1 NaN NaN 2.0
2 NaN NaN NaN
3 8.0 8.0 NaN
2.1.2用字典填充
第key列的NaN用key对应的value值填充
df1.fillna({0:10,1:20,2:30})
运行结果:
0 1 2
0 1 2 3
1 10 20 2
2 10 20 30
3 8 8 30
2.2使用inplace参数
print(df1.fillna(0,inplace=True))
print('-------------------------')
print(df1)
运行结果:
None
-------------------------
0 1 2
0 1.0 2.0 3.0
1 0.0 0.0 2.0
2 0.0 0.0 0.0
3 8.0 8.0 0.0
2.3使用method参数
1.method=‘ffill’/‘pad’:用前一个非缺失值去填充该缺失值
df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=None
df2.iloc[2:4,4]=None
print(df2)
print('-------------------------')
print(df2.fillna('ffill'))
运行结果:
0 1 2 3 4
0 5 0 5 1 5
1 0 9 0 NaN 9
2 5 0 5 NaN NaN
3 9 1 8 NaN 8
4 0 3 1 3 3
-------------------------
0 1 2 3 4
0 5 0 5 1 5
1 0 9 0 0 9
2 5 0 5 0 0
3 9 1 8 0 8
4 0 3 1 3 3
2.method=’bfill’/‘backfill’:用下一个非缺失值填充该缺失值
df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=None
df2.iloc[2:4,4]=None
print(df2)
print('-------------------------')
print(df2.fillna('bfill'))
运行结果:
0 1 2 3 4
0 5 7 5 2.0 5.0
1 0 6 0 NaN 6.0
2 0 0 8 NaN NaN
3 9 3 1 NaN 4.0
4 1 7 4 1.0 9.0
-------------------------
0 1 2 3 4
0 5 7 5 2.0 5
1 0 6 0 6.0 6
2 0 0 8 4.0 9
3 9 3 1 4.0 4
4 1 7 4 1.0 9
2.4使用limit参数
用下一个非缺失值填充该缺失值且每列只填充2个
df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=None
df2.iloc[2:4,4]=None
print(df2)
print('-------------------------')
print(df2.fillna(method='bfill',limit=2))
运行结果:
0 1 2 3 4
0 2 5 2 5.0 2.0
1 0 2 0 NaN 3.0
2 3 8 6 NaN NaN
3 3 6 3 NaN 4.0
4 4 4 0 6.0 2.0
-------------------------
0 1 2 3 4
0 2 5 2 5.0 2.0
1 0 2 0 3.0 3.0
2 3 8 6 4.0 NaN
3 3 6 3 6.0 4.0
4 4 4 0 6.0 2.0
2.5使用axis参数
axis=0对每列数据进行操作,axis=1对每行数据进行操作
df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=None
df2.iloc[2:4,4]=None
print(df2.fillna(method="ffill",limit=1,axis=1))
运行结果:
0 1 2 3 4
0 9 9 8 6 8
1 6 7 2 2 9
2 6 8
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7481.html
