Pandas 如何处理DataFrame中的inf值
作者:是杰夫呀 发布时间:2021-03-12 14:03:56
标签:Pandas,DataFrame,inf
如何处理DataFrame的inf值
在用DataFrame计算变化率时,例如(今天-昨天) / 昨天恰好为(2-0) / 0时,这些结果数据会变为inf。
为了方便后续处理,可以利用numpy,将这些inf值进行替换。
1. 将某1列(series格式)中的 inf 替换为数值。
import numpy as np
df['Col'][np.isinf(df['Col'])] = -1
2. 将某1列(series格式)中的 inf 替换为NA值。
import numpy as np
df['Col'][np.isinf(df['Col'])] = np.nan
3. 将整个DataFrame中的 inf 替换为数值(空值同理)。#感谢评论区的补充
import numpy as np
df.replace(np.inf, -1) #替换正inf为-1
#替换正负inf为NA,加inplace参数
df.replace([np.inf, -np.inf], np.nan, inplace=True)
DataFrame有关inf的处理技巧
numpy中inf的相关文档
什么是inf?
IEEE 754浮点表示(正)无穷大。
为什么会产生?
>>> np.NINF
-inf
>>> np.inf
inf
>>> np.log(0)
-inf
>>> np.array([1,2])/0 #碰到的最多的情况
array([ inf, inf])
产生inf有什么好处?
目前没看到有什么好处,只是单纯用inf表示无穷大,方便理解和表示。
产生inf有什么坏处?
对用户而言,对inf需要特殊处理,加大了工作量。
为什么需要特殊处理?因为许多机器学习算法库并不支持对inf的处理。
怎么处理?
常见的处理方法:
不处理
替换
怎么获取到inf的所在位置并进行填补?
isinf
:显示哪些元素为正或负无穷大isposinf
:显示哪些元素为正无穷大isneginf
:显示哪些元素为负无穷大isnan
:显示哪些元素不是数字isfinite
:显示哪些元素是有限的(不是非数字,正无穷大和负无穷大中的一个)
'''
>>> np.isinf(np.inf) #其他函数同理使用,isinf使用最多。
True
>>> np.isinf(np.array([1,np.inf]))
array([False, True], dtype=bool)
>>>np.isinf(pd.DataFrame(np.array([1,np.inf])))
0
0 False
1 True
>>>s1 = pd.Series([1,2,3,np.inf])
>>>s1
0 1.0
1 2.0
2 3.0
3 NaN
dtype: float64
#对inf填补 999
>>>s1[np.isinf(s1)] = 999
>>>s1
0 1.0
1 2.0
2 3.0
3 999.0
dtype: float64
#对inf填补np.nan (较为常用)
>>>s1[np.isinf(s1)] = np.nan
>>>s1
0 1.0
1 2.0
2 3.0
3 NaN
dtype: float64
来源:https://xiaoshuwen.blog.csdn.net/article/details/103126133
0
投稿
猜你喜欢
- 用Python+OpenCV实现了自动扫雷,突破世界记录,我们先来看一下效果吧。中级 - 0.74秒 3BV/S=60.81相信许多人很早就
- 前言此专栏为python与R语言对比学习的文章;以通俗易懂的小实验,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景!感谢大家的关注
- 文章出处:https://blog.csdn.net/sdksdk0/article/details/80933444作者:朱培
- 前言这篇博客针对《Python OpenCV识别行人入口进出人数统计》编写代码,功能包括了入口行人识别,人数统计。代码整洁,规则,易读。应用
- 引言最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器
- # 建表CREATE TABLE `T_TEST` ( `Id` int(11) NOT NULL AUTO_INCREMENT
- 工作中发现表单提交方便的问题,很多时候IE下提交好好的,打了火狐下就出现了问题,利用提交按钮就不成功了,于是利用JS的方式就成功了,也不知道
- JS代码:function showFlash(src,w,h){ html&nbs
- 开发微信小程序过程中,有个需求需要用到日期时间筛选器,查看微信官方文档后,发现官方文档的picker筛选器只能单独支持日期或者是时间,所以为
- 404错误,很多人都知道,如果要访问的url不存在的时候就读取显示这个页面.以往在处理404方面我们通常的做法是要麽简单写几行字,而有心人士
- 写在之前在我们的现实生活中,「日志记录」其实是一件非常重要的事情,比如银行的转账记录,汽车的行车记录仪记录行驶过程中的一切,如果出现了什么问
- Request Payload 和 Form Data 请求头上的参数差别在于:Content-TypeForm DataPost表单请求代
- Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号{}符
- FrontPage 2003在功能上增强了不少,下面我们一起来看看新版本中比较突出的9个新功能。1.自定义浏览器分辨率预览检查 在
- 实际上,在web开发中,cookie仅仅是一个文本文件,当用户访问站点时,它就被存储在用户使用的计算机上,其中,保存了一些信息,当用户日后再
- 提叻一个代码段,要人帮助解释一下。代码如下:declare type t_indexby is ta
- python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。异常处理: 本站
- 参数让我们进一步看看CPU的数量是如何影响这些参数的。 参数fast_start_parallel_rollback Oracle并行机制中
- hasattr(object, name)作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(oj
- 直接上代码了import smtplibmsg = MIMEMultipart()#构造附件1att1 = MIMEText(open(