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é)果中,我們只需要觀察每一列對應的 Non-Null Count 的數(shù)量是否等于 RangeIndex(索引范圍) 即可。
2.isnull()
isnull() 返回一個與原 DataFrame 大小(列數(shù),行數(shù))相同的數(shù)據(jù)框,行列對應的數(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ù)量,當 NaN 數(shù)量達到才刪除。
- subset:要考慮的數(shù)據(jù)范圍,如:刪除缺失行,就用subset指定參考的列,默認是所有列。
- inplace:是否修改原數(shù)據(jù),True直接修改原數(shù)據(jù),返回 None,F(xiàn)alse則返回處理后的數(shù)據(jù)框。
指定 axis = 1,如果列中有缺失值,則刪除該列。
df.dropna(axis=1, how='any')

由于每列都有缺失值,所以只剩索引。
指定 axis = 0(默認),如果行中有缺失值,則刪除該行。
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)

填補缺失值
另一種常見的缺失值處理方式就是使用 fillna() 填補缺失值。
df.fillna(value=None,
method=None,
axis=0,
inplace=False,
limit=None)
1. 直接指定填充值
df.fillna(666)

2.用缺失值前/后的值填充
按前一個值填充
當method 值為 ffill 或 pad時,按前一個值進行填充。
當 axis = 0,用缺失值同一列的上一個值填充,如果缺失值在第一行則不填充。
當 axis = 1,用缺失值同一行的上一個值填充,如果缺失值在第一列則不填充。
df.fillna(axis=0, method='pad')

按后一個值填充
當method 值為 backfill 或 bfill時,按后一個值進行填充。
當 axis = 0,用缺失值同一列的下一個值填充,如果缺失值在最后一行則不填充。
當 axis = 1,用缺失值同一行的下一個值填充,如果缺失值在最后一列則不填充。
df.fillna(axis=0, method='bfill')

指定相應的方法來填充
df.fillna(df.mean())

limit限制填充次數(shù)
在ABCD列上,每列只填充第一個空值。
df.fillna(value=666, axis=1, limit=1)

以上就是Python數(shù)據(jù)分析之缺失值檢測與處理詳解的詳細內(nèi)容,更多關于Python 缺失值檢測處理的資料請關注腳本之家其它相關文章!
- python缺失值填充方法示例代碼
- Python數(shù)據(jù)預處理時缺失值的不同處理方式總結(jié)
- Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情
- python?sklearn與pandas實現(xiàn)缺失值數(shù)據(jù)預處理流程詳解
- Python處理缺失值的8種不同方法實例
- Python缺失值處理方法
- Python3?DataFrame缺失值的處理方法
- python如何去除異常值和缺失值的插值
- Python?Pandas中缺失值NaN的判斷,刪除及替換
- Python數(shù)據(jù)分析的八種處理缺失值方法詳解
- python缺失值的解決方法總結(jié)
- Python中查找缺失值的三種方法
相關文章
python將數(shù)據(jù)插入數(shù)據(jù)庫的代碼分享
在本篇文章里小編給大家整理的是關于python將數(shù)據(jù)插入數(shù)據(jù)庫的代碼內(nèi)容,有興趣的朋友們可以參考下。2020-08-08
Python批量寫入ES索引數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細介紹了如何使用python腳本批量寫ES數(shù)據(jù)(需要使用pip提前下載安裝es依賴庫),感興趣的小伙伴可以學習一下2024-02-02
在Python中封裝GObject模塊進行圖形化程序編程的教程
這篇文章主要介紹了在Python中封裝GObject模塊進行圖形化程序編程的教程,本文來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下2015-04-04
Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯誤
在Python編程中,處理文件是常見的任務之一,但偶爾也會遇到各種錯誤,包括IOError,盡管Python?3.x中IOError已被OSError和FileNotFoundError等更具體的異常所取代,由于[Errno?0]不直接指向具體的錯誤類型,我們將討論一系列可能導致IOError的常見情況,需要的朋友可以參考下2024-07-07

