欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas 如何處理DataFrame中的inf值

 更新時(shí)間:2022年05月09日 10:16:49   作者:是杰夫呀  
這篇文章主要介紹了Pandas 如何處理DataFrame中的inf值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如何處理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的處理技巧

numpy中inf的相關(guān)文檔

什么是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)文章

最新評(píng)論