Pandas 處理DataFrame中的inf值實(shí)現(xiàn)
Inf 表示正無(wú)窮大或負(fù)無(wú)窮大,通常是在數(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í)空缺數(shù)據(jù),Nan是nunpy和pandas中用于標(biāo)識(shí)空缺數(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ù)值(空值同理)。#感謝評(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)
相關(guān)文章
解決redis與Python交互取出來(lái)的是bytes類型的問題
這篇文章主要介紹了解決redis與Python交互取出來(lái)的是bytes類型的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-07-07
python 統(tǒng)計(jì)文件中的字符串?dāng)?shù)目示例
今天小編就為大家分享一篇python 統(tǒng)計(jì)文件中的字符串?dāng)?shù)目示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
Python密碼學(xué)概述雙倍強(qiáng)度加密教程
這篇文章主要為大家介紹了Python密碼學(xué)概述雙倍強(qiáng)度加密教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05
基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票
這篇文章主要為大家詳細(xì)介紹了基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python解決非線性規(guī)劃中經(jīng)濟(jì)調(diào)度問題
Scipy是Python算法庫(kù)和數(shù)學(xué)工具包,包括最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、傅里葉變換等模塊。scipy.optimize模塊中提供了多個(gè)用于非線性規(guī)劃問題的方法,適用于不同類型的問題。本文將利用起解決經(jīng)濟(jì)調(diào)度問題,感興趣的可以了解一下2022-05-05
python通過scapy獲取局域網(wǎng)所有主機(jī)mac地址示例
這篇文章主要介紹了python通過scapy獲取局域網(wǎng)所有主機(jī)mac地址示例,需要的朋友可以參考下2014-05-05

