小编写这篇文章的主要目的,还是用来给大家讲解一些案例,给大家讲解一下具体的一些使用法则,包括使用fillna函数填充NaN值,下面给大家做一个比较详细的解答。
1.参数解析
1.1inplace参数
取值:True、False
True:直接修改原对象
False:创建一个副本,修改副本,原对象不变(缺省默认)
1.2method参数
取值:{‘pad’,‘ffill’,‘backfill’,‘bfill’,None},defaultNone
pad/ffill:用前一个非缺失值去填充该缺失值
backfill/bfill:用下一个非缺失值填充该缺失值
None:指定一个值去替换缺失值(缺省默认这种方式)
1.3limit参数:
限制填充个数
1.4axis参数
修改填充方向
补充
isnull和notnull函数用于判断是否有缺失值数据
isnull:缺失值为True,非缺失值为False
notnull:缺失值为False,非缺失值为True
2.代码实例
#导包 importpandasaspd importnumpyasnp fromnumpyimportnanasNaN df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]]) df1
代码结果:
012
01.02.03.0
1NaNNaN2.0
2NaNNaNNaN
38.08.0NaN
2.1常数填充
2.1.1用常数填充
#1.用常数填充 print(df1.fillna(100)) print("-----------------------") print(df1)
运行结果:
012
01.02.03.0
1100.0100.02.0
2100.0100.0100.0
38.08.0100.0
-----------------------
012
01.02.03.0
1NaNNaN2.0
2NaNNaNNaN
38.08.0NaN
2.1.2用字典填充
第key列的NaN用key对应的value值填充
df1.fillna({0:10,1:20,2:30})
运行结果:
012
01.02.03.0
110.020.02.0
210.020.030.0
38.08.030.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'))
运行结果:
01234
08445.06.0
1528NaN7.0
2631NaNNaN
3549NaNNaN
46546.09.0
-------------------------
01234
08445.06.0
15285.07.0
26315.07.0
35495.07.0
46546.09.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'))
运行结果:
01234
01041.03.0
1464NaN2.0
2492NaNNaN
3973NaNNaN
46135.05.0
-------------------------
01234
01041.03.0
14645.02.0
24925.05.0
39735.05.0
46135.05.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))
运行结果:
01234
02044.00.0
1799NaN1.0
2173NaNNaN
3858NaNNaN
48624.04.0
-------------------------
01234
02044.00.0
1799NaN1.0
21734.04.0
38584.04.0
48624.04.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))
运行结果:
01234
00.04.09.07.02.0
16.05.00.00.03.0
28.08.08.08.0NaN
35.05.06.06.0NaN
47.05.07.04.01.0
总结,小编就为大家介绍到这里了,希望可以给读者带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127852.html
摘要:中面向行和面向列的操作基本是平衡的。用层次化索引,将其表示为更高维度的数据。使用浮点值表示浮点和非浮点数组中的缺失数据。索引的的格式化输出形式选取数据子集在内层中进行选取层次化索引在数据重塑和基于分组的操作中很重要。 我们在上一篇介绍了 NumPy,本篇介绍 pandas。 pandas入门 Pandas 是基于Numpy构建的,让以NumPy为中心的应用变的更加简单。 pandas...
小编写这篇文章的主要目的,是给大家介绍一下关于python中的一些实例,比如,其中,会给大家讲到,Python中基础值的一些运算,以及当我们遇到空的数值的时候,一些处理方法,下面给大家做一个详细的解答。 前言 今天我们一起来聊聊DataFrame中的索引。 上一篇文章当中我们介绍了DataFrame数据结构当中一些常用的索引的使用方法,比如iloc、loc以及逻辑索引等等。今天的文章...
摘要:引入包和加载数据清洗数据查看数据维度以及类型缺失值处理查看数据统计信息数值属性离散化计算特征与属性之间关系查看数据维度以及类型查看前五条数据查看每列数据类型以及情况获得所有属性查看数据统计信息查看连续数值属性基本统计情况查看属性数据统计情况 引入包和加载数据 12345import pandas as pdimport numpy as nptrain_df =pd.read_csv(...
摘要:前言在数据分析和建模之前需要审查数据是否满足数据处理应用的要求,以及对数据进行清洗,转化,合并,重塑等一系列规整化处理。通过数据信息查看可知数据中存在缺失值,比如各存在个,各存在个。 前言 在数据分析和建模之前需要审查数据是否满足数据处理应用的要求,以及对数据进行清洗,转化,合并,重塑等一系列规整化处理。pandas标准库提供了高级灵活的方法,能够轻松地将数据规整化为正确的形式,本文通...
阅读 875·2023-01-14 11:38
阅读 820·2023-01-14 11:04
阅读 672·2023-01-14 10:48
阅读 1830·2023-01-14 10:34
阅读 880·2023-01-14 10:24
阅读 740·2023-01-14 10:18
阅读 469·2023-01-14 10:09
阅读 507·2023-01-14 10:02