日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Pandas?如何處理DataFrame中的inf值_python

作者:是杰夫呀 ? 更新時間: 2022-07-02 編程語言

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

欄目分類
最近更新