Pandas 處理DataFrame中的inf值實(shí)現(xiàn)
Inf 表示正無窮大或負(fù)無窮大,通常是在數(shù)學(xué)計(jì)算中產(chǎn)生的結(jié)果。
例如,
import numpy as np # 創(chuàng)建一個(gè)包含 Infinity 的數(shù)組 arr = np.array([3.0, 4.0, np.inf, -np.inf]) print(arr)
1)通過where方法和isinf方法查找Inf行和列
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(18).reshape(3,6), index=list('abc'), columns=list('uvwxyz')) print('*'*36) # 將df的第一列變成Inf df.u = np.inf print(df) print('*'*36) #輸出結(jié)果,是一個(gè)tuple,前面array是橫坐標(biāo),后面的array是縱坐標(biāo)。 print(np.where(np.isinf(df)))
2)數(shù)據(jù)處理
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(18).reshape(3,6), index=list('abc'), columns=list('uvwxyz')) print('*'*36) # 將df的第一列變成NaN df.u = np.inf print(df) print('*'*36) #輸出結(jié)果,是一個(gè)tuple,前面array是橫坐標(biāo),后面的array是縱坐標(biāo)。 print(np.where(np.isinf(df))) print('*'*36) # 使用 replace 替換整個(gè) DataFrame 中的 Inf 值為特定值 print(df.replace(np.inf, 1, inplace=False)) print('*'*36) #使用np.isinf() df[np.isinf(df)]=11.0 print(df) print('*'*36) # 創(chuàng)建一個(gè)包含 Inf 的數(shù)組 arr = np.array([3.0, 4.0, np.inf, 6.0]) # 將Inf值為5 arr[np.isinf(arr)]=5 print(arr)
3)刪除有Inf的行
import pandas as pd import numpy as np x=np.arange(0,30).reshape(5,6) x=np.array(x,dtype=float) x[2,3]=np.inf x[0,4]=np.inf print(x) print('*'*36) #刪除包含Inf的行 x1=np.delete(x,np.where(np.isinf(x))[0],axis=0) print(x1)
注意:np.inf和np.nan的處理方法基本相同,注意調(diào)用處理時(shí)方法名。None是Python中用于標(biāo)識空缺數(shù)據(jù),Nan是nunpy和pandas中用于標(biāo)識空缺數(shù)據(jù),None是一個(gè)Python特殊的數(shù)據(jù)類型, 但是NaN卻是用一個(gè)特殊的float。
在用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ù)值(空值同理)。#感謝評論區(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)
相關(guān)文章
Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮
這篇文章主要介紹了在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Python機(jī)器學(xué)習(xí)算法庫scikit-learn學(xué)習(xí)之決策樹實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)算法庫scikit-learn學(xué)習(xí)之決策樹實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了決策樹算法的原理及使用sklearn庫實(shí)現(xiàn)決策樹的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07