解讀dataframe中有關(guān)inf的處理技巧
dataframe有關(guān)inf的處理
什么是inf?
IEEE 754浮點(diǎn)表示(正)無窮大。
為什么會產(chǎn)生?
>>> np.NINF -inf >>> np.inf inf >>> np.log(0) -inf >>> np.array([1,2])/0 #碰到的最多的情況 array([ inf, inf])
產(chǎn)生inf有什么好處?
目前沒看到有什么好處,只是單純用inf表示無窮大,方便理解和表示。
產(chǎn)生inf有什么壞處?
對用戶而言,對inf需要特殊處理,加大了工作量。
為什么需要特殊處理?因?yàn)樵S多機(jī)器學(xué)習(xí)算法庫并不支持對inf的處理。
怎么處理?
常見的處理方法:
- 不處理
- 替換
怎么獲取到inf的所在位置并進(jìn)行填補(bǔ)?
'''
isinf:顯示哪些元素為正或負(fù)無窮大
isposinf:顯示哪些元素為正無窮大
isneginf:顯示哪些元素為負(fù)無窮大
isnan:顯示哪些元素不是數(shù)字
isfinite:顯示哪些元素是有限的(不是非數(shù)字,正無窮大和負(fù)無窮大中的一個(gè))
'''
>>> np.isinf(np.inf) #其他函數(shù)同理使用,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填補(bǔ) 999
>>>s1[np.isinf(s1)] = 999
>>>s1
0 1.0
1 2.0
2 3.0
3 999.0
dtype: float64
#對inf填補(bǔ)np.nan (較為常用)
>>>s1[np.isinf(s1)] = np.nan
>>>s1
0 1.0
1 2.0
2 3.0
3 NaN
dtype: float64Pandas處理DataFrame中的inf值
在用DataFrame計(jì)算變化率時(shí),例如(今天-昨天) / 昨天恰好為(2-0) / 0時(shí),這些結(jié)果數(shù)據(jù)會變?yōu)閕nf。
為了方便后續(xù)處理,可以利用numpy,將這些inf值進(jìn)行替換。
1. 將某1列(series格式)中的 inf 替換為數(shù)值。
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. 將整個(gè)DataFrame中的 inf 替換為數(shù)值(空值同理)。#感謝評論區(qū)的補(bǔ)充
import numpy as np df.replace(np.inf, -1) #替換正inf為-1 #替換正負(fù)inf為NA,加inplace參數(shù)? df.replace([np.inf, -np.inf], np.nan, inplace=True)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用騰訊云API實(shí)現(xiàn)短信驗(yàn)證碼功能
使用Python與騰訊云接口對接,實(shí)現(xiàn)短信驗(yàn)證碼功能變得非常簡單,只需要幾行代碼就能夠輕松實(shí)現(xiàn)短信的發(fā)送,無須關(guān)心復(fù)雜的短信協(xié)議和底層實(shí)現(xiàn),讀者可以根據(jù)自己的實(shí)際需求,靈活使用騰訊云短信SDK提供的API來實(shí)現(xiàn)更豐富的短信功能2024-01-01
matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn)
本文主要介紹了matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
用python實(shí)現(xiàn)名片管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)名片管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
使用OpenCV獲取圖像某點(diǎn)的顏色值,并設(shè)置某點(diǎn)的顏色
這篇文章主要介紹了使用OpenCV獲取圖像某點(diǎn)的顏色值,并設(shè)置某點(diǎn)的顏色,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Pycharm學(xué)習(xí)教程(6) Pycharm作為Vim編輯器使用
這篇文章主要為大家詳細(xì)介紹了最全的Pycharm學(xué)習(xí)教程第六篇,Pycharm作為Vim編輯器使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Python數(shù)據(jù)分析的八種處理缺失值方法詳解
對python實(shí)現(xiàn)模板生成腳本的方法詳解
Python即時(shí)網(wǎng)絡(luò)爬蟲項(xiàng)目啟動(dòng)說明詳解
Python光學(xué)仿真之對光的干涉理解學(xué)習(xí)

