Python3?DataFrame缺失值的處理方法
一、缺失值的判斷
在通過(guò)Pandas做數(shù)據(jù)分析時(shí),數(shù)據(jù)中往往會(huì)因?yàn)橐恍┰蚨霈F(xiàn)缺失值NaN (Nota number)o比如前文中的例子,當(dāng)兩個(gè)DataFrame對(duì)象進(jìn)行簡(jiǎn)單運(yùn)算時(shí),無(wú)法匹配的位置會(huì)出現(xiàn)缺失值NaN或者None.
isnull ( )和notnull ( )方法都可以用于判斷數(shù)據(jù)是否為缺失值( NaN或者None).如果是缺失值,則isnull()返回值為T(mén)rue, notnull()返回值為False.
df2 Out[170]: A B C D a 2.0 4.0 6.0 NaN b 6.0 8.0 10.0 NaN c 10.0 12.0 14.0 NaN df2.isnull() Out[171]: A B C D a False False False True b False False False True c False False False True df2.notnull() Out[172]: A B C D a True True True False b True True True False c True True True False
二、缺失值數(shù)據(jù)的過(guò)濾
有時(shí)遇到包含缺失值的數(shù)據(jù)處理起來(lái)比較簡(jiǎn)單,只需要保留有數(shù)值的數(shù)據(jù)即可:
df2 Out[182]: A B C D a 2.0 4.0 6.0 NaN b 6.0 8.0 10.0 NaN c 10.0 12.0 14.0 1.0 #把D列中的缺失值過(guò)濾掉 df2.D[df2.D.notnull()] Out[183]: c 1.0 Name: D, dtype: float64
三、缺失值數(shù)據(jù)的填充
有時(shí)處理數(shù)據(jù)時(shí)我們會(huì)想將缺失值用實(shí)際的值做替代,Pandas包里也有函數(shù)可以調(diào) 用:DataFrame.fillna(value=None, method = None, axis = None, inplace=False, limit=None)
參數(shù)value是在缺失值處填充的值,可以是數(shù)值數(shù)字,也可以是字符串;method 是填充的方式,默認(rèn)為None,也可以取值為ffin、pad、bfill或backfill,其中ffill/pad是用行或列方向上的上一個(gè)觀測(cè)值來(lái)填充缺失值,bfill/backfin是用行或列方向上的下一個(gè)觀測(cè) 值來(lái)填充;axis與method配合使用,指定行(axis=l)或列(axis=0)的方向;limit=None 時(shí),會(huì)填充連續(xù)的缺失值,如果指定數(shù)值的話,比如limit=2,只會(huì)依次填充連續(xù)NaN值的 指定數(shù)字個(gè)數(shù)(比如2個(gè));若inplace=False則不會(huì)變更原DataFrame,若inplace=True, 則會(huì)改變?cè)璂ataFrame。
import pandas as pd import numpy as np h2h2df=pd.DataFrame(np.arange(1,21).reshape(5,4),index=list('abcde'),columns=list("ABCD")) h2df.loc['c','A']=np.nan h2df.loc['b':'d','C']=np.nan h2df Out[192]: A B C D a 1.0 2 3.0 4 b 5.0 6 NaN 8 c NaN 10 NaN 12 d 13.0 14 NaN 16 e 17.0 18 19.0 20 h2df.fillna(0) Out[193]: A B C D a 1.0 2 3.0 4 b 5.0 6 0.0 8 c 0.0 10 0.0 12 d 13.0 14 0.0 16 e 17.0 18 19.0 20 h2df.fillna(method='ffill') Out[194]: A B C D a 1.0 2 3.0 4 b 5.0 6 3.0 8 c 5.0 10 3.0 12 d 13.0 14 3.0 16 e 17.0 18 19.0 20 h2df.fillna(method='pad') Out[197]: A B C D a 1.0 2 3.0 4 b 5.0 6 3.0 8 c 5.0 10 3.0 12 d 13.0 14 3.0 16 e 17.0 18 19.0 20 h2df.fillna(method='backfill',axis=1) Out[196]: A B C D a 1.0 2.0 3.0 4.0 b 5.0 6.0 8.0 8.0 c 10.0 10.0 12.0 12.0 d 13.0 14.0 16.0 16.0 e 17.0 18.0 19.0 20.0 h2df.fillna(method='ffill',limit=2) Out[198]: A B C D a 1.0 2 3.0 4 b 5.0 6 3.0 8 c 5.0 10 3.0 12 d 13.0 14 NaN 16 e 17.0 18 19.0 20
四、缺失值的刪除
Pandas提供對(duì)包含缺失值的數(shù)據(jù)集進(jìn)行行列的刪除操作:
DataFrame.dropna(axis=0, how=‘any’, thresh=None)
axis = 0指刪除包含缺失值的行,axis = 1指刪除包含缺失值的列,默認(rèn)為0; how=any表示只要有一個(gè)缺失值就刪除該行(列),how = all表示只有當(dāng)所有的元素都為缺失值時(shí)才刪除該行(列),how默認(rèn)取值為any;thresh默認(rèn)為None。當(dāng)thresh=5時(shí)表示只有當(dāng)某行(列)缺失值的數(shù)量大于或者等于5時(shí)刪除該 行(列)。
df Out[199]: A B C D a 1.0 2 3.0 4 b 5.0 6 NaN 8 c NaN 10 NaN 12 d 13.0 14 NaN 16 e 17.0 18 19.0 20 df.dropna(axis=0) Out[200]: A B C D a 1.0 2 3.0 4 e 17.0 18 19.0 20 df.dropna(axis=1) Out[201]: B D a 2 4 b 6 8 c 10 12 d 14 16 e 18 20
到此這篇關(guān)于Python3 DataFrame缺失值的處理的文章就介紹到這了,更多相關(guān)Python3 DataFrame缺失值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python缺失值填充方法示例代碼
- Python數(shù)據(jù)預(yù)處理時(shí)缺失值的不同處理方式總結(jié)
- Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情
- python?sklearn與pandas實(shí)現(xiàn)缺失值數(shù)據(jù)預(yù)處理流程詳解
- Python處理缺失值的8種不同方法實(shí)例
- Python缺失值處理方法
- python如何去除異常值和缺失值的插值
- Python?Pandas中缺失值NaN的判斷,刪除及替換
- Python數(shù)據(jù)分析之缺失值檢測(cè)與處理詳解
- Python數(shù)據(jù)分析的八種處理缺失值方法詳解
- python缺失值的解決方法總結(jié)
- Python中查找缺失值的三種方法
相關(guān)文章
Python List列表對(duì)象內(nèi)置方法實(shí)例詳解
這篇文章主要介紹了Python List列表對(duì)象內(nèi)置方法,結(jié)合實(shí)例形式詳細(xì)分析了Python列表list各種常用內(nèi)置方法的功能與使用技巧,需要的朋友可以參考下2019-10-10Python開(kāi)發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例
這篇文章主要介紹了Python開(kāi)發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例,需要的朋友可以參考下2020-03-03如何使用virtualenv管理python環(huán)境
這篇文章主要介紹了如何使用virtualenv管理python環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01Python測(cè)試框架:pytest學(xué)習(xí)筆記
這篇文章主要介紹了Python測(cè)試框架:pytest的相關(guān)資料,幫助大家更好的利用python進(jìn)行單元測(cè)試,感興趣的朋友可以了解下2020-10-10python3中bytes和string之間的互相轉(zhuǎn)換
這篇文章主要介紹了python3中bytes和string之間的互相轉(zhuǎn)換,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-02-02從零學(xué)python系列之新版本導(dǎo)入httplib模塊報(bào)ImportError解決方案
在使用新版python打開(kāi)舊版本代碼的時(shí)候,可能會(huì)有些報(bào)錯(cuò)或者不兼容的情況出現(xiàn),今天我們就來(lái)分析其中的一種情況2014-05-05一文詳解Python中實(shí)現(xiàn)單例模式的幾種常見(jiàn)方式
這篇文章主要為大家介紹了Python中實(shí)現(xiàn)單例模式的幾種常見(jiàn)方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03詳解Python中pyautogui庫(kù)的最全使用方法
這篇文章主要介紹了詳解Python中pyautogui庫(kù)的最全使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python機(jī)器學(xué)習(xí)包mlxtend的安裝和配置詳解
這篇文章主要介紹了python機(jī)器學(xué)習(xí)包mlxtend的安裝和配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08