pandas 缺失值與空值處理的實(shí)現(xiàn)方法
1.相關(guān)函數(shù)
- df.dropna()
- df.fillna()
- df.isnull()
- df.isna()
2.相關(guān)概念
空值:在pandas中的空值是""
缺失值:在dataframe中為nan或者naT(缺失時(shí)間),在series中為none或者nan即可
3.函數(shù)具體解釋
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
函數(shù)作用:刪除含有空值的行或列
axis:維度,axis=0表示index行,axis=1表示columns列,默認(rèn)為0
how:"all"表示這一行或列中的元素全部缺失(為nan)才刪除這一行或列,"any"表示這一行或列中只要有元素缺失,就刪除這一行或列
thresh:一行或一列中至少出現(xiàn)了thresh個(gè)才刪除。
subset:在某些列的子集中選擇出現(xiàn)了缺失值的列刪除,不在子集中的含有缺失值得列或行不會(huì)刪除(有axis決定是行還是列)
inplace:刷選過缺失值得新數(shù)據(jù)是存為副本還是直接在原數(shù)據(jù)上進(jìn)行修改。
例子:
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'], "toy": [np.nan, 'Batmobile', 'Bullwhip'], "born": [pd.NaT, pd.Timestamp("1940-04-25"),pd.NaT]}) print df
默認(rèn)參數(shù):刪除行,只要有空值就會(huì)刪除,不替換。
print df.dropna() print df
print "delete colums" print df.dropna(axis=1) #delete col
print "所有值全為缺失值才刪除" print df.dropna(how='all')
print "至少出現(xiàn)過兩個(gè)缺失值才刪除" print df.dropna(thresh=2)
print "刪除這個(gè)subset中的含有缺失值的行或列" print df.dropna(subset=['name', 'born'])
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
函數(shù)作用:填充缺失值
value:需要用什么值去填充缺失值
axis:確定填充維度,從行開始或是從列開始
method:ffill:用缺失值前面的一個(gè)值代替缺失值,如果axis =1,那么就是橫向的前面的值替換后面的缺失值,如果axis=0,那么則是上面的值替換下面的缺失值。backfill/bfill,缺失值后面的一個(gè)值代替前面的缺失值。注意這個(gè)參數(shù)不能與value同時(shí)出現(xiàn)
limit:確定填充的個(gè)數(shù),如果limit=2,則只填充兩個(gè)缺失值。
示例:
df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, np.nan, 4]], columns=list('ABCD')) print df print "橫向用缺失值前面的值替換缺失值" print df.fillna(axis=1,method='ffill') print "縱向用缺失值上面的值替換缺失值" print df.fillna(axis=0,method='ffill')
print df.fillna(0)
不同的列用不同的值填充:
對(duì)每列出現(xiàn)的替換值有次數(shù)限制,此處限制為一次
DataFrame.isna()
判斷是不是缺失值:
isnull同上。
替換空值:
df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, "", 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, "", 4]], columns=list('ABCD')) print df
如上,缺失值是NAN,空值是沒有顯示。
替換空值代碼:需要把含有空值的那一列提出來(lái)單獨(dú)處理,然后在放進(jìn)去就好。
clean_z = df['C'].fillna(0) clean_z[clean_z==''] = 'hello' df['C'] = clean_z print df
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python Tornado異步使用場(chǎng)景源碼解析
這篇文章主要為大家介紹了python Tornado異步使用場(chǎng)景源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Python調(diào)用系統(tǒng)命令的四種方法詳解(os.system、os.popen、commands、subprocess)
這篇文章主要介紹了Python調(diào)用系統(tǒng)命令的四種方法(os.system、os.popen、commands、subprocess),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問題
這篇文章主要介紹了解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-06-06python類型強(qiáng)制轉(zhuǎn)換long to int的代碼
python的int型最大值和系統(tǒng)有關(guān),32位和64位系統(tǒng)結(jié)果是不同的,分別為2的31次方減1和2的63次方減1,可以通過sys.maxint查看此值2013-02-02Window10上Tensorflow的安裝(CPU和GPU版本)
這篇文章主要介紹了Window10上Tensorflow的安裝(CPU和GPU版本),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12