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

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

目录

1. 参数解析

1.1 inplace参数

1.2 method参数

1.3 limit参数:

1.4 axis参数

补充

2. 代码实例

2.1 常数填充

2.1.1 用常数填充

2.1.2 用字典填充

2.2 使用inplace参数

2.3 使用method参数

2.4 使用limit参数

2.5 使用axis参数

总结

1. 参数解析 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

2. 代码实例 #导包 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.0  100.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.0   2.0   3.0
1  10.0  20.0   2.0
2  10.0  20.0  30.0
3   8.0   8.0  30.0

2.2 使用inplace参数 print (df1.fillna(0,inplace=True)) print ("-------------------------") print (df1)

运行结果:

在这里插入代码片

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(method='ffill'))

运行结果:

   0  1  2    3    4
0  8  4  4  5.0  6.0
1  5  2  8  NaN  7.0
2  6  3  1  NaN  NaN
3  5  4  9  NaN  NaN
4  6  5  4  6.0  9.0
-------------------------
   0  1  2    3    4
0  8  4  4  5.0  6.0
1  5  2  8  5.0  7.0
2  6  3  1  5.0  7.0
3  5  4  9  5.0  7.0
4  6  5  4  6.0  9.0

2.method = ‘bflii’/‘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(method='bfill'))

运行结果:

   0  1  2    3    4
0  1  0  4  1.0  3.0
1  4  6  4  NaN  2.0
2  4  9  2  NaN  NaN
3  9  7  3  NaN  NaN
4  6  1  3  5.0  5.0
-------------------------
   0  1  2    3    4
0  1  0  4  1.0  3.0
1  4  6  4  5.0  2.0
2  4  9  2  5.0  5.0
3  9  7  3  5.0  5.0
4  6  1  3  5.0  5.0

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  0  4  4.0  0.0
1  7  9  9  NaN  1.0
2  1  7  3  NaN  NaN
3  8  5  8  NaN  NaN
4  8  6  2  4.0  4.0
-------------------------
   0  1  2    3    4
0  2  0  4  4.0  0.0
1  7  9  9  NaN  1.0
2  1  7  3  4.0  4.0
3  8  5  8  4.0  4.0
4  8  6  2  4.0  4.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  0.0  4.0  9.0  7.0  2.0
1  6.0  5.0  0.0  0.0  3.0
2  8.0  8.0  8.0  8.0  NaN
3  5.0  5.0  6.0  6.0  NaN
4  7.0  5.0  7.0  4.0  1.0

还有一些pandas的基础运算请参考这篇文章->pandas | DataFrame基础运算以及空值填充

总结

到此这篇关于pandas使用fillna函数填充NaN值的文章就介绍到这了,更多相关pandas用fillna填充NaN值内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    华为手机报价|TNNANOO华为手机报价

    华为手机报价|TNNANOO华为手机报价,华为手机报价,1、5电池上手机内置3200mAh的大电池,配置的是9V2A充电器,支持快充,系统优化,功耗更低,电池更

    ipodnano5像素怎么样?【简介】

    ipodnano5像素怎么样?【简介】,像素,拍照,外壳,搭配,推出,摄像头,  随着人们生活水品的逐步提高,人们对品质的追求也越来越高,然而 苹果 公司推

    nano-sim是什么  nano-sim简介

    nano-sim是什么 nano-sim简介,系列,行业,安装,诺基亚,产品,作用,  手机,现在变成我们的生活必需品了。而且随着我们科技的发展,手机更新的很快

    移动nanosim卡是什么【图解】

    移动nanosim卡是什么【图解】,芯片,卡片,超薄,缩小,网络,触点,  对于sim卡大家都比较熟悉,移动sim卡是手机接打电话和使用网络的专用网络运营

    Python中的pandas库详解

    Python中的pandas库详解,数据,数据处理,方法,排序,合并,筛选,Python是一门高效且易于学习的编程语言,在数据处理方面也有着出色表现。其中,pandas

    predominant和dominant的区别是什么

    predominant和dominant的区别是什么,主导,基因,predominant和dominant的区别是什么主导和主要的是:不同的中文含义,不同的单词和不同用法的

    电脑天翼宽带chinanet|天翼 宽带

    电脑天翼宽带chinanet|天翼 宽带,,天翼 宽带1.办理电信宽带,首先需要确定所在地或小区是否有电信宽带的线路。可以用手机拨打电信的客服100

    iPhone Nano6功能有哪些

    iPhone Nano6功能有哪些,小卡,苹果,本文目录iPhone Nano6功能有哪些iphone 7 用的是nano卡吗iphone的卡和一般的小卡一样吗iphone6一定要n