pandas使用fillna函数填充NaN值的代码实例
作者:energy_百分百 发布时间:2023-09-29 05:51:48
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://blog.csdn.net/lch551218/article/details/113766287


猜你喜欢
- 想找一个可以播放文字的闹钟找不到,自己写一个更简单。TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作。其
- 一 基本知识millisecond 毫秒microsecond 微秒 nanosecond 纳秒1秒=1000毫秒 1毫秒=1000微秒 1
- 在 Time 包中,定义有一个名为 Duration 的类型和一些辅助的常量:type Duration int64const ( Nano
- Python过滤txt文件内重复内容,并将过滤后的内容保存到新的txt中示例如下 原文件处理之后的文件 直接上代码# -*-coding:u
- 这个问题的解决方案网上挺多的。其中我推荐的就是:with open(r"F:\Desktop\Book3.csv",
- 视频才用流媒体,有后台实时返回数据, 要支持flash播放, 所以需安装对应的flash插件。当视频播放时,每间隔3秒向后台发送请求供检测心
- 新上的一台服务器出现了一个现象:ASP程序中,调用函数Now(),显示的时间总是形如“2009-07-12 上午 08:12:56”这样的,
- 堆排序堆是一种完全二叉树(是除了最后一层,其它每一层都被完全填充,保持所有节点都向左对齐),首先需要知道概念:最大堆问题,最大堆就是根节点比
- 利用百度词典进行中翻英import urllib2import reimport sysreload(sys)sys.setdefaulte
- LRU缓存算法,指的是近期最少使用算法,大体逻辑就是淘汰最长时间没有用的那个缓存,这里我们使用有序字典,来实现自己的LRU缓存算法,并将其包
- 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点。我们要在本机上
- 译文原文:http://blog.benhuoer.com/2009/04/10-simple-and-impressive-design-
- 说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引,然后又扯到了目录
- 一、概述有时候会在一台主机上安装多个不同的Python版本,用以运行不同时期开发的项目, 而在这些不同的Python版本上有时又会加装不同的
- 1.sp_helpsort SELECT SERVERPROPERTY ('Collation') 查看你的排序规则. 不过
- 目录初期操作分析参数分析salt、signPython代码运行效果初期操作打开有道翻译界面—F12—Network—在翻译框中输入'
- 这个是python的一个内建函数,看书的时候发现了他,mark一下当我们既需要遍历索引同时需要遍历元素的时候,可以考虑使用enumerate
- 关于建立索引的几个准则:1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。2、索引越多,更新数据的速度越慢
- 大家先看一下Python os模块中的部分函数python 路径相关的函数 os.listdir(dirname):列出dirname下的目
- 1. lock互斥锁知识点:lock.acquire()# 上锁lock.release()# 解锁#同一时间允许一个进程上一把锁 就是Lo