Python數(shù)據(jù)分析之缺失值檢測與處理詳解
檢測缺失值
我們先創(chuàng)建一個帶有缺失值的數(shù)據(jù)框(DataFrame
)。
import pandas as pd df = pd.DataFrame( {'A': [None, 2, None, 4], 'B': [10, None, None, 40], 'C': [100, 200, None, 400], 'D': [None, 2000, 3000, None]}) df
數(shù)值類缺失值在 Pandas 中被顯示為 NaN (Not A Number)。下面看看如何判斷哪些列或者哪些行有缺失值。
1.info()
info() 返回的結(jié)果中,我們只需要觀察每一列對應(yīng)的 Non-Null Count 的數(shù)量是否等于 RangeIndex(索引范圍) 即可。
2.isnull()
isnull() 返回一個與原 DataFrame 大小(列數(shù),行數(shù))相同的數(shù)據(jù)框,行列對應(yīng)的數(shù)據(jù)代表著該位置是否為缺失值。
df.isnull()
使用 sum() 來檢測每列中的缺失值的數(shù)量。
df.isnull().sum()
通過 .T 將 DataFrame 轉(zhuǎn)置,獲取檢測每行中缺失值的數(shù)量。
df.isnull().T.sum()
缺失值處理
刪除缺失值
如果出現(xiàn)缺失值的行/列重要性不大的話,可以直接使用 dropna()
刪除帶有缺失值的行/列。
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
參數(shù)含義
- axis:控制行列的參數(shù),0 行,1 列。
- how:any,如果有 NaN,刪除該行或列;all,如果所有值都是 NaN,刪除該行或列。
- thresh:指定 NaN 的數(shù)量,當(dāng) NaN 數(shù)量達(dá)到才刪除。
- subset:要考慮的數(shù)據(jù)范圍,如:刪除缺失行,就用subset指定參考的列,默認(rèn)是所有列。
- inplace:是否修改原數(shù)據(jù),True直接修改原數(shù)據(jù),返回 None,F(xiàn)alse則返回處理后的數(shù)據(jù)框。
指定 axis = 1,如果列中有缺失值,則刪除該列。
df.dropna(axis=1, how='any')
由于每列都有缺失值,所以只剩索引。
指定 axis = 0(默認(rèn)),如果行中有缺失值,則刪除該行。
df.dropna(axis=0, how='any')
以 ABC 列為參照,刪除這三列都是缺失值的行。
df.dropna(axis=0, subset=['A', 'B', 'C'], how='all')
保留至少有3個非NaN值的行。
df.dropna(axis=0, thresh=3)
填補(bǔ)缺失值
另一種常見的缺失值處理方式就是使用 fillna()
填補(bǔ)缺失值。
df.fillna(value=None, method=None, axis=0, inplace=False, limit=None)
1. 直接指定填充值
df.fillna(666)
2.用缺失值前/后的值填充
按前一個值填充
當(dāng)method 值為 ffill 或 pad時,按前一個值進(jìn)行填充。
當(dāng) axis = 0,用缺失值同一列的上一個值填充,如果缺失值在第一行則不填充。
當(dāng) axis = 1,用缺失值同一行的上一個值填充,如果缺失值在第一列則不填充。
df.fillna(axis=0, method='pad')
按后一個值填充
當(dāng)method 值為 backfill 或 bfill時,按后一個值進(jìn)行填充。
當(dāng) axis = 0,用缺失值同一列的下一個值填充,如果缺失值在最后一行則不填充。
當(dāng) axis = 1,用缺失值同一行的下一個值填充,如果缺失值在最后一列則不填充。
df.fillna(axis=0, method='bfill')
指定相應(yīng)的方法來填充
df.fillna(df.mean())
limit限制填充次數(shù)
在ABCD列上,每列只填充第一個空值。
df.fillna(value=666, axis=1, limit=1)
以上就是Python數(shù)據(jù)分析之缺失值檢測與處理詳解的詳細(xì)內(nèi)容,更多關(guān)于Python 缺失值檢測處理的資料請關(guān)注腳本之家其它相關(guān)文章!
- python缺失值填充方法示例代碼
- Python數(shù)據(jù)預(yù)處理時缺失值的不同處理方式總結(jié)
- Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情
- python?sklearn與pandas實現(xiàn)缺失值數(shù)據(jù)預(yù)處理流程詳解
- Python處理缺失值的8種不同方法實例
- Python缺失值處理方法
- Python3?DataFrame缺失值的處理方法
- python如何去除異常值和缺失值的插值
- Python?Pandas中缺失值NaN的判斷,刪除及替換
- Python數(shù)據(jù)分析的八種處理缺失值方法詳解
- python缺失值的解決方法總結(jié)
- Python中查找缺失值的三種方法
相關(guān)文章
Python中encode和encoding的區(qū)別小結(jié)
Python是一種非常流行的高級編程語言,它提供了許多內(nèi)置函數(shù)和庫來方便地處理文本數(shù)據(jù),其中,encode和encoding是處理文本編碼的重要概念,本文就來介紹一下Python中encode和encoding的區(qū)別小結(jié),感興趣的可以了解一下2023-11-11python實現(xiàn)的守護(hù)進(jìn)程(Daemon)用法實例
這篇文章主要介紹了python實現(xiàn)的守護(hù)進(jìn)程(Daemon)用法,實例分析了Python進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06flask后端request獲取參數(shù)的幾種方式整理
這篇文章主要為大家介紹了flask后端request獲取參數(shù)的幾種方式整理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python實現(xiàn)將Excel內(nèi)容批量導(dǎo)出為PDF文件
這篇文章主要為大家介紹了如何利用Python實現(xiàn)將Excel表格內(nèi)容批量導(dǎo)出為PDF文件,文中的實現(xiàn)步驟講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04漂亮的Django Markdown富文本app插件的實現(xiàn)
這篇文章主要介紹了漂亮的Django Markdown富文本app插件的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01python requests.post帶head和body的實例
今天小編就為大家分享一篇python requests.post帶head和body的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01