pandas中使用fillna函数填充NaN值「建议收藏」

pandas中使用fillna函数填充NaN值「建议收藏」1.参数解析1.1inplace参数取值:True、FalseTrue:直接修改原对象False:创建一个副本,修改副本,原对象不变(缺省默认)1.2method参数取值:{‘pad’,‘ffill’,‘backfill’,‘bfill’,None},defaultNonepad/ffill:用前一个非缺失值去填充该缺失值backfill/bfill:用下一个非缺失值填充该缺失值None:指定一个值去替换缺失值(缺省默认这种方式)1.3limit参数:限制

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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基础运算以及空值填充

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170012.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [RPI]树莓派监控温度及报警关机保护「建议收藏」

    最近把树莓派用作了Aria2下载机+无线路由,24小时不间断工作,生怕机子有时会过热烧坏,所以写了个脚本做温度记录,以及在温度过高时能自动关机保护。下面直接上Shell脚本(/data/temperature.sh):#!/bin/sh#高温阈值hot_temp=80.0#低温阈值cold_temp=-70.0#过热预警连续出现次数hot_cnt=0#过冷预警连…

    2022年4月15日
    66
  • pycharm2021永久激活码-激活码分享

    (pycharm2021永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~M…

    2022年3月21日
    1.3K
  • 京东云免费SLL正式(HTTPS)免费申请及nginx配置

    京东云免费SLL正式(HTTPS)免费申请及nginx配置京东云免费ssl证书申请及配置一、证书申请1、京东云地址:[https://www.jdcloud.com/](https://www.jdcloud.com/)2、登录京东云后可在左上角云服务中搜索:SSL3、选择搜索出的选项中的SSL数字证书,进入SSL证书管理平台;4、在左侧选择申购管理,然后点击申购证书5、在申购SSL证书界面,按下图选择对应的证书类型,即可购买;6、订单确认,立即支付即可完成证书的申请二、证书配置1、完善域名信息1、在申购管理中,找到刚才购买的证书,点击完善信息;2、在下面的输入

    2022年10月14日
    2
  • 计算机网络课设校园网络设计_中小型企业网络的设计与实现

    计算机网络课设校园网络设计_中小型企业网络的设计与实现《计算机网络实践》报告题目网络设计的规划与实现学年学期20Xx-20Xx学年第一学期课程名称计算机网络实践 院系XXX学院 专业计算机科学与技术 学号…

    2022年9月27日
    4
  • 产品模块化设计_pom设计模式

    产品模块化设计_pom设计模式对于,ecmall的本身自带的模板,可能很多用过的朋友都知道,其实还有许多功能根本无法实现。从根本上来讲,不如Smarty强大,但本人也试过将smarty引入但不是很成功,究其原因,ecmall的模板,并不是单纯地模板,而是在解析时参入了许多其它业务的逻辑,所以,直接以smarty来代替ecmall本身的模板,在widget的开发时会有很大的问题。所以,为了灵活情,本人,在ecmall

    2025年8月11日
    4
  • 【JSON解析】浅谈JSONObject的使用[通俗易懂]

    【JSON解析】浅谈JSONObject的使用[通俗易懂]简介在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。JSON建构于两种结构:“名称/值”对的集合(ACollectionofname/va…

    2022年7月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号