pandas-缺失值處理


   缺失值是指數據集中的某些觀測存在遺漏的指標值,缺失值的存在同樣會影響到數據分析和挖掘的結果。

一般而言,當遇到缺失值是可以采三種方法處置:刪除法,替換法和插補法。

1.刪除法使用情況:當確實的觀測比例非常低是,如5%以內,可以直接刪除這些缺失的變量。

2.替換法:用某種直接替換缺失值,例如,對連續變量而言,可以使用均值或中位數替換,對於離散型變量,可以使用眾數替換。

3.插補法:是指根據其他非確實的變量或觀測來預測缺失值,常用的插補法有回歸插補法,K近鄰法,拉格朗日插補法等。

 下面我們介紹兩種比較常見的缺失值處理方法,刪除法和替換法

例:

原數據:

 

 

從表中可以看出,該數據集存在4條缺失觀測,行號分別是4,6,7和9,11。接下來我們要做的是如何判斷數據集是否存在缺失值(盡管記錄少的時候可以清楚地發現)

import pandas as pd
df= pd.read_excel(r'd:/data_test05.xlsx')
print('數據集中是否存在缺失值:\n',any(df.isnull()))

OUT:

True

 

 刪除操作:

df.dropna()                          #刪除缺失值所在的行
df.drop('age',axis = 1)           #選擇某具體的列刪除

 替換操作:

df.fillna(method = 'ffill')                 #用前一行的數據來替換空白   助記詞:front
df.fillna(method = 'bfill')                #用后一行數據來替換空內容  助記詞:backward   fill填充

df.fillna(value = 0)                            #指定用某個值來填充所有的空白內容 該方法慎用,典型的以點概面的方式,很容易造成數據混亂
df.fillna(value = {'gender':df.gender.mode()[0],'age':df.age.mean(),              #這里面gender 使用的是眾數替換,age 使用均值替換,income 使用中位數替換
        'income':df.income.median()})                                          #value =  后面用的是字典,   mode()[0]  因為眾數可能存在多個,所以mode()返回的其                                                                                                                         #實是一個序列,mode(0)表示,取第一個眾數。參考摘選的補充說明:

   ****  如上代碼並沒有實際改變df數據框的結果,因為dropna,drop和fillna方法並沒有使inplace參數設置為True。因此我們在實際工作中,先預覽處理效果,然后再把inplace參數設置為True,進而真正地改變你所處理的數據集:

 

補充說明:

 

 

本篇涉及內容小結:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM