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


猜你喜欢
- windows下python安装pip 简易教程,具体内容如下1.前提你要已经安装了 某个 版本的 python, 下载地址)安装后,需要配
- suspect_pages 表位于 msdb 数据库中,是在 SQL Server 2005 中引入的。用于维护有关可疑页的信息的 susp
- 数据保存在csv文件中1.从csv文件中读取数据参数header=None的有无(1)没有header=None——直接将csv表中的第一行
- 接着第一篇继续学习。一、数据分类正确数据:id、性别、活动时间三者都有放在这个文件里file1 = 'ruisi\\correct%
- 1、泛型是什么Go1.18增加了对泛型的支持,泛型是一种独立于使用的特定类型编写代码的方式。现在可以编写函数和类型适用于一组类型集合的任何一
- Go语言提供了一个内置函数 delete(),用于删除容器内的元素,下面我们简单介绍一下如何用 delete() 函数删除 map 内的元素
- 1. orm读写数据1. 创建1.1. 创建记录user := User{Name: "Jinzhu", Age: 18
- 以上是效果图,本图表使用d3.js v4制作。图表主要功能是在六边形格子中显示数据,点击底部图标可以切换指定格子高亮显示,图表可以随浏览器任
- 刚才好无聊,突然想起来之前做一个课表的点子,于是百度了起来。刚开始,我是这样想的:在写微信墙的时候,用到了urllib2【两行代码抓网页】,
- 在做项目的时候,遇到这样的数据:"trends": [ { &nb
- asp十进制转二进制;二进制转十进制;二进制转十六进制;十六进制转二进制;八进制转二进制'二进制转八进制;八进制转十进制;十六进制转
- 字符串的表示方式单引号 ' '双引号 " "多引号 """ "&
- 在MySQL中,一个字符串中,如果某个序列具有特殊的含义,则这个序列以反斜线符号(‘\’)开头,称为转义字符。常见的转义字符:\0 ASCI
- 对于时间数据,如2018-09-25 09:28:59,有时需要与Unix时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python
- 自动更新统计信息的基本算法是: · 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改。 · 如果表的基数是大
- python的ImageTk.PhotoImage大坑如果大家遇到这样的报错:Exception in Tkinter callbackTr
- 本文列出了一些asp编程种可能会用到的正则表达式例子,大家可以方便的调用!如果您对asp种的正则表达式不是很了解可以看看这篇文章《ASP中R
- 1.打开PyCharm,选择File--Settings2.依次选择Editor---Code Style-- File and Code
- 对于array,如2-D的array,如何取指定元素设array为3*10的shapes = array([[ 0, 1, 2, 3, 4,
- 第一次写技术博客,有不尽如人意的地方,还请见谅和指正。为什么想整理这方面的类容,我觉得就像油画家要了解他的颜料和画布、雕塑家要了解他的石材一