Pandas 如何處理DataFrame中的inf值
如何處理DataFrame的inf值
在用DataFrame計(jì)算變化率時(shí),例如(今天-昨天) / 昨天恰好為(2-0) / 0時(shí),這些結(jié)果數(shù)據(jù)會(huì)變?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ù)值(空值同理)。#感謝評(píng)論區(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)
DataFrame有關(guān)inf的處理技巧
什么是inf?
IEEE 754浮點(diǎn)表示(正)無(wú)窮大。
為什么會(huì)產(chǎn)生?
>>> np.NINF -inf >>> np.inf inf >>> np.log(0) -inf >>> np.array([1,2])/0 #碰到的最多的情況 array([ inf, ?inf])
產(chǎn)生inf有什么好處?
目前沒(méi)看到有什么好處,只是單純用inf表示無(wú)窮大,方便理解和表示。
產(chǎn)生inf有什么壞處?
對(duì)用戶而言,對(duì)inf需要特殊處理,加大了工作量。
為什么需要特殊處理?因?yàn)樵S多機(jī)器學(xué)習(xí)算法庫(kù)并不支持對(duì)inf的處理。
怎么處理?
常見的處理方法:
- 不處理
- 替換
怎么獲取到inf的所在位置并進(jìn)行填補(bǔ)?
isinf
:顯示哪些元素為正或負(fù)無(wú)窮大isposinf
:顯示哪些元素為正無(wú)窮大isneginf
:顯示哪些元素為負(fù)無(wú)窮大isnan
:顯示哪些元素不是數(shù)字isfinite
:顯示哪些元素是有限的(不是非數(shù)字,正無(wú)窮大和負(fù)無(wú)窮大中的一個(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 #對(duì)inf填補(bǔ) 999 >>>s1[np.isinf(s1)] = 999 >>>s1 0 ? ?1.0 1 ? ?2.0 2 ? ?3.0 3 ?999.0 dtype: float64 #對(duì)inf填補(bǔ)np.nan (較為常用) >>>s1[np.isinf(s1)] = np.nan >>>s1 0 ? ?1.0 1 ? ?2.0 2 ? ?3.0 3 ? ?NaN dtype: float64
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)銀行賬戶系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)銀行賬戶系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02Django 拆分model和view的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Django 拆分model和view的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python虛擬機(jī)中描述器的王炸應(yīng)用分享
本篇文章給大家介紹一下描述器在?python?語(yǔ)言當(dāng)中有哪些應(yīng)用,主要介紹如何使用?python?語(yǔ)言實(shí)現(xiàn)?python?內(nèi)置的?proterty?、staticmethod?和?class?method,需要的可以參考一下2023-05-05Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07python字典通過(guò)值反查鍵的實(shí)現(xiàn)(簡(jiǎn)潔寫法)
這篇文章主要介紹了python字典通過(guò)值反查鍵的實(shí)現(xiàn)(簡(jiǎn)潔寫法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn)
今天小編就為大家分享一篇Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python數(shù)據(jù)處理67個(gè)pandas函數(shù)總結(jié)看完就用
這篇文章主要介紹了python數(shù)據(jù)處理67個(gè)pandas函數(shù)的梳理總結(jié),看完就可以去用了,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼
這篇文章主要介紹了Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01