1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

pandas使用fillna函数填充NaN值的代码实例

小编为您详解fillna函数的使用法则

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

pandas使用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