Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情

一、缺失數(shù)據(jù)剔除

1. python 方式
獲取所有的缺失值,返回一個 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ù)索引的方式來剔除掉缺測數(shù)據(jù)。
列:
df1 = df.loc[:, ~(df.isnull().all())]
刪除所有 有缺失的行
df1[~(df1.isnull().any('columns'))]這種方式看起來明顯比drop()的方式要復(fù)雜一點(diǎn),那么是不是意味著我們就學(xué)drop()就行了,不用再去記住索引方式。
當(dāng)然不是!drop()看起來簡單只是因?yàn)閯偤弥挥幸涣行枰蕹?,加入我們需要剔除很多?shù)據(jù),那使用drop()就不足以完成任務(wù),還是要配合索引的方式。
下面我們來看一下剔除行里的缺測值,上面的數(shù)據(jù)有很多行都有缺測值,如果在drop函數(shù)中一個一個填是很不現(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)化,將想替換的元素放在一個 [ ] 里就行
df.replace([np.nan, 0], -9999)
2. apply
replace可以進(jìn)行簡單的數(shù)據(jù)替換,但如果想進(jìn)行更為復(fù)雜的操作replace是無法完成的。
然而對DataFrame而言,apply是非常重要的數(shù)據(jù)處理方法,它可以接收各種各樣的函數(shù)(Python內(nèi)置的或自定義的),處理方式很靈活,完成各種復(fù)雜的需求。他的實(shí)際作用是將函數(shù)作為一個對象,通過apply的調(diào)用對DataFrame里的數(shù)組元素應(yīng)用這個函數(shù)。
只關(guān)注和設(shè)置這個規(guī)則,循環(huán)這種事情交給編程語言去處理
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)對某一行或某一列的函數(shù)應(yīng)用,如果想對DataFrame中的全部數(shù)值都使用這個函數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用python數(shù)據(jù)清洗代碼實(shí)例
- 用Python進(jìn)行數(shù)據(jù)清洗以及值處理
- Python常用的數(shù)據(jù)清洗方法詳解
- 一文帶你深入了解Python中的數(shù)據(jù)清洗
- 三個Python常用的數(shù)據(jù)清洗處理方式總結(jié)
- python?文件讀寫和數(shù)據(jù)清洗
- Python實(shí)現(xiàn)數(shù)據(jù)清洗的示例詳解
- 詳解Python中的數(shù)據(jù)清洗工具flashtext
- 利用Python進(jìn)行數(shù)據(jù)清洗的操作指南
- Python?八個數(shù)據(jù)清洗實(shí)例代碼詳解
- 如何使用Python數(shù)據(jù)清洗庫
相關(guān)文章
Python函數(shù)式編程之返回函數(shù)實(shí)例詳解
函數(shù)式編程的一個特點(diǎn)就是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù),還允許返回一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)式編程之返回函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-09-09
只需要100行Python代碼就可以實(shí)現(xiàn)的貪吃蛇小游戲
貪吃蛇小游戲相信80、90后小時候肯定都玩過,那么你知道如果通過Python來實(shí)現(xiàn)嗎?今天就來教大家,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式
今天小編就為大家分享一篇K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能,結(jié)合實(shí)例形式分析了Python基于wmi模塊的遠(yuǎn)程連接與進(jìn)程操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
13個Pandas實(shí)用技巧,助你提高開發(fā)效率
這篇文章主要介紹了13個Pandas實(shí)用技巧,幫助你提高python開發(fā)的效率,感興趣的朋友可以了解下2020-08-08

