Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情
一、缺失數(shù)據(jù)剔除
1. python 方式
獲取所有的缺失值,返回一個(gè) true 和 false 的表
df.isnull()
統(tǒng)計(jì)缺失值,按照每一列統(tǒng)計(jì)
df.isnull().sum()
統(tǒng)計(jì)缺失值 按行
df.isnull().sum(axis='columns')
查看列 是否全部缺失
df.isnull().all()
剔除 植物園
這一列 2種方式
df1 = df.drop(columns='植物園') df1 = df.drop('植物園', axis=1)
通過數(shù)據(jù)索引的方式來剔除掉缺測(cè)數(shù)據(jù)。
列:
df1 = df.loc[:, ~(df.isnull().all())]
刪除所有 有缺失的行
df1[~(df1.isnull().any('columns'))]
這種方式看起來明顯比drop()的方式要復(fù)雜一點(diǎn),那么是不是意味著我們就學(xué)drop()就行了,不用再去記住索引方式。
當(dāng)然不是!drop()看起來簡(jiǎn)單只是因?yàn)閯偤弥挥幸涣行枰蕹?,加入我們需要剔除很多?shù)據(jù),那使用drop()就不足以完成任務(wù),還是要配合索引的方式。
下面我們來看一下剔除行里的缺測(cè)值,上面的數(shù)據(jù)有很多行都有缺測(cè)值,如果在drop函數(shù)中一個(gè)一個(gè)填是很不現(xiàn)實(shí)的,那么我們看一下合理的解決方案應(yīng)該是什么樣的。
2. DataFrame 方式
剔除列的缺失值
df.dropna(axis='columns', how='all', inplace=True)
剔除行的缺失值
df.dropna(axis='index', how='any', inplace=True)
二、缺失值補(bǔ)全
用前一行的數(shù)據(jù)填充
df.fillna(method='bfill')
用后一行的數(shù)據(jù)填充
df.fillna(method='bfill')
三、重復(fù)值剔除(按照行和列)
返回的是 True 和 False 的 列表
df.duplicated()
剔除重復(fù)行
df.drop_duplicates()
返回的是 True 和 False 的 列表
df.duplicated(subset=['天壇'], keep=False)
剔除 天壇 這列里面的所有重復(fù)值
df.drop_duplicates(subset=['天壇'], keep=False)
四、數(shù)值轉(zhuǎn)換
1. replace
單值轉(zhuǎn)換,將Nan 替換成 -9999
df.replace(np.nan, -9999)
多值轉(zhuǎn)化,將想替換的元素放在一個(gè) [ ] 里就行
df.replace([np.nan, 0], -9999)
2. apply
replace可以進(jìn)行簡(jiǎn)單的數(shù)據(jù)替換,但如果想進(jìn)行更為復(fù)雜的操作replace是無(wú)法完成的。
然而對(duì)DataFrame而言,apply是非常重要的數(shù)據(jù)處理方法,它可以接收各種各樣的函數(shù)(Python內(nèi)置的或自定義的),處理方式很靈活,完成各種復(fù)雜的需求。他的實(shí)際作用是將函數(shù)作為一個(gè)對(duì)象,通過apply的調(diào)用對(duì)DataFrame里的數(shù)組元素應(yīng)用這個(gè)函數(shù)。
只關(guān)注和設(shè)置這個(gè)規(guī)則,循環(huán)這種事情交給編程語(yǔ)言去處理
def aqi_level(aqi): if aqi>0 and aqi<=50: level = '優(yōu)' elif aqi>50 and aqi<=100: level = '良' elif aqi>100 and aqi<=150: level = '輕度污染' elif aqi>150 and aqi<=200: level = '中度污染' elif aqi>200 and aqi<=300: level = '重度污染' else: level = '嚴(yán)重污染' return level # 數(shù)據(jù)預(yù)處理一下 將所有的類型都轉(zhuǎn)為 AQI aqi = df[df['type']=='AQI'] aqi['東四'].apply(aqi_level)
3.applymap
apply()可以實(shí)現(xiàn)對(duì)某一行或某一列的函數(shù)應(yīng)用,如果想對(duì)DataFrame中的全部數(shù)值都使用這個(gè)函數(shù)來進(jìn)行轉(zhuǎn)化我們就需要用到applymap()
#~aqi.columns.isin(['date', 'hour', 'type']) 取非這三列的所有列
aqi.loc[:, ~aqi.columns.isin(['date', 'hour', 'type'])].apply(np.mean, axis=0) aqi.loc[:, ~aqi.columns.isin(['date', 'hour', 'type'])].applymap(aqi_level)
到此這篇關(guān)于Python 數(shù)據(jù)清洗刪除缺失值替換缺失值詳情的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)清洗 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用python數(shù)據(jù)清洗代碼實(shí)例
- 用Python進(jìn)行數(shù)據(jù)清洗以及值處理
- Python常用的數(shù)據(jù)清洗方法詳解
- 一文帶你深入了解Python中的數(shù)據(jù)清洗
- 三個(gè)Python常用的數(shù)據(jù)清洗處理方式總結(jié)
- python?文件讀寫和數(shù)據(jù)清洗
- Python實(shí)現(xiàn)數(shù)據(jù)清洗的示例詳解
- 詳解Python中的數(shù)據(jù)清洗工具flashtext
- 利用Python進(jìn)行數(shù)據(jù)清洗的操作指南
- Python?八個(gè)數(shù)據(jù)清洗實(shí)例代碼詳解
- 如何使用Python數(shù)據(jù)清洗庫(kù)
相關(guān)文章
關(guān)于python selenium 運(yùn)行時(shí)彈出窗口問題
最近在做一個(gè)網(wǎng)頁(yè)代填項(xiàng)目,用到了python的selenium知識(shí),經(jīng)過了各種嘗試與搜索最后終算是較完美的解決了,下面小編給大家?guī)砹藀ython selenium 運(yùn)行時(shí)彈出窗口問題,感興趣的朋友一起看看吧2021-11-11MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實(shí)現(xiàn)示例
這篇文章主要介紹了MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml(親測(cè)有效)
這篇文章主要介紹了如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml,親測(cè)有效,可以使用,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友參考下吧2023-12-12python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python實(shí)現(xiàn)爬蟲統(tǒng)計(jì)學(xué)校BBS男女比例之?dāng)?shù)據(jù)處理(三)
這篇文章主要介紹了python實(shí)現(xiàn)爬蟲統(tǒng)計(jì)學(xué)校BBS男女比例之?dāng)?shù)據(jù)處理,需要的朋友可以參考下2015-12-12Python使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控
psutil庫(kù)可以實(shí)時(shí)獲取系統(tǒng)的一些信息,這樣就可以達(dá)到實(shí)時(shí)監(jiān)控系統(tǒng)的目的。本文對(duì)詳細(xì)講解了ython使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控,感興趣的朋友可以看一看2021-08-08