導航:首頁 > 凈水問答 > 多維dataframe過濾異常值

多維dataframe過濾異常值

發布時間:2023-03-05 05:21:02

『壹』 python 怎麼修改pandas的某個cell的值

數據缺失
數據缺失在大部分數據分析應用中都很常見,Pandas使用浮點值NaN表示浮點和非浮點數組中的缺失數據,他只是一個便於被檢測出來的數據而已。
from pandas import Series,DataFrame

string_data=Series(['abcd','efgh','ijkl','mnop'])

print(string_data)
print("...........\n")
print(string_data.isnull())12345671234567

Python內置的None值也會被當作NA處理
from pandas import Series,DataFrame

string_data=Series(['abcd','efgh','ijkl','mnop'])

print(string_data)
print("...........\n")

string_data[0]=None
print(string_data.isnull())123456789123456789

處理NA的方法有四種:dropna,fillna,isnull,notnull
is(not)null,這一對方法對對象做出元素級的應用,然後返回一個布爾型數組,一般可用於布爾型索引。
dropna,對於一個Series,dropna返回一個僅含非空數據和索引值的Series。
問題在於DataFrame的處理方式,因為一旦drop的話,至少要丟掉一行(列)。這里解決方法與前面類似,還是通過一個額外的參數:dropna(axis=0,how=』any』,thresh=None),how參數可選的值為any或者all.all僅在切片元素全為NA時才拋棄該行(列)。thresh為整數類型,eg:thresh=3,那麼一行當中至少有三個NA值時才將其保留。
fillna,fillna(value=None,method=None,axis=0)中的value除了基本類型外,還可以使用字典,這樣可以實現對不同列填充不同的值。
過濾數據:
對於一個Series,dropna返回一個僅含非空數據和索引值的Series:
from pandas import Series,DataFrame
from numpy import nan as NA

data=Series([1,NA,3.5,NA,7])

print(data.dropna())123456123456

另一個過濾DataFrame行的問題涉及問題序列數據。假設只想留一部分觀察數據,可以用thresh參數實現此目的:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.dropna(thresh=2))

不想濾除缺失的數據,而是通過其他方式填補「空洞」,fillna是最主要的函數。
通過一個常數調用fillna就會將缺失值替換為那個常數值:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.fillna(0))

若是通過一個字典調用fillna,就可以實現對不同列填充不同的值。
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.fillna({1:111,2:222}))

可以利用fillna實現許多別的功能,比如可以傳入Series的平均值或中位數:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=Series([1.0,NA,3.5,NA,7])
print(data)
print("...........\n")
print(data.fillna(data.mean()))

123456789123456789

檢測和過濾異常值
異常值(outlier)的過濾或變換運算在很大程度上就是數組運算。如下一個(1000,4)的標准正態分布數組:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(1000,4))
print(data.describe())

print("\n....找出某一列中絕對值大小超過3的項...\n")
col=data[3]
print(col[np.abs(col) > 3] )

print("\n....找出全部絕對值超過3的值的行...\n")
print(col[(np.abs(data) > 3).any(1)] )

移除重復數據
DataFrame的plicated方法返回一個布爾型Series,表示各行是否是重復行。
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print("........\n")
print(data.plicated())123456789123456789

與此相關的還有一個drop_plicated方法,它用於返回一個移除了重復行的DataFrame:
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print("........\n")
print(data.drop_plicates())123456789123456789

上面的兩個方法會默認判斷全部列,也可以指定部分列進行重復項判斷,假設還有一列值,而只希望根據k1列過濾重復項。
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print("........\n")
print(data.drop_plicates(['k1']))1234567891012345678910

plicates和drop_plicates默認保留第一個出現的值組合。傳入take_last=True則保留最後一個:
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print("........\n")
print(data.drop_plicates(['k1','k2'],take_last=True))1234567891012345678910

閱讀全文

與多維dataframe過濾異常值相關的資料

熱點內容
樹脂粘土bjd娃娃 瀏覽:591
光化樹脂牙變黃 瀏覽:290
半透膜表面積越大 瀏覽:274
污水入滲量 瀏覽:196
污水處理系統什麼意思 瀏覽:921
718gts空氣濾芯怎麼拆 瀏覽:680
廢水處理的是怎麼進行的英語 瀏覽:24
煤灰渣場廢水揮發酚 瀏覽:179
創星外置過濾桶CF800價格 瀏覽:348
小區太多提升泵太吵 瀏覽:224
挖機大臂提升感測器 瀏覽:820
透析蒸餾水可以喝嗎 瀏覽:891
微濾超濾納濾反滲透直徑大小 瀏覽:934
油煙凈化器片尺寸多少 瀏覽:762
對印染廢水的漂色回用 瀏覽:983
凈水器濾芯怎麼分1號到5號 瀏覽:515
保安過濾器濾芯為什麼會穿透 瀏覽:570
怎樣去除下水水垢 瀏覽:719
淄博周村哪裡有賣蒸餾水的 瀏覽:174
化工廠排污水管用什麼鋼管 瀏覽:111