您現在的位置是:首頁 > 籃球
如何使用python技術完成資料集缺失值多種應用場景的濾除或填充?
- 由 素食先生lpt 發表于 籃球
- 2021-08-04
缺失值填充的幾種方法
前言
在資料處理的過程中,我們應該都有這樣的體會,本質上資料處理與分析是相互協作,彼此成就的過程。比如,我們會用資料分析統計資料集中的缺失值、異常值,更直觀的也會進階到資料視覺化的部分(到達該部分一般是成了文章類或彙報類的一部分),然後以統計結果為基礎再對資料進行處理。這個過程往往不是一次性過程,是迴圈往復的。然後資料處理的結果是有質量的,對後期的資料探勘、機器學習、深度學習以及其他更多的應用,提供了堅實的基礎。接下來,我們就一起來梳理和總結一下,資料處理過程中,經常遇到的缺失值處理方法。
小編在本文中主要透過python技術來講解不同資料需求背景下的資料缺失值處理方法。特別提示一下,我們在學習的過程中,需要有這樣的思維,我們是為了處理資料而使用python,不是為了使用python而進行資料處理。我們需要從本質上掌握缺失值處理方法,然後才是python技術在這些場景上有什麼樣的函式或方法可以更便捷、更簡單的解決問題。
缺失值的處理方法,通常分為兩種,一是直接將其進行濾除;二是使用固定值或衍生值去填充缺失值,下面進行逐一介紹。
回顧濾除缺失值方法
濾除缺失值資料有兩種場景,一種是對Series結構的資料進行濾除,另外則是對DataFrame資料進行濾除。
1.Series結構資料缺失值濾除
關於python技術濾除缺失值的方法,小編在過往的分享中已經進行了介紹。在本文中,我們一起來簡單回顧,大家可以加深一下印象。
首先,從numpy中匯入缺失值方法,具體程式碼如下:
#書寫方式如下
from numpy import nan as NA
其次,dropna使用方法,具體寫法如下:
data。dropna()
另外一種同樣能夠達到此目的的方式是透過布林型索引,具體寫法如下:
Data[data。notnull()]
2.DataFrame結構資料缺失值濾除
接下來,我們具體來回顧一下,dropna方法是如何DataFrame結構資料的行、列和時間序列資料進行濾除的,不同場景下使用的方法如下所示:#dropna預設丟棄任何含有缺失值的行書寫方式:data。dropna()#傳入how=’all’將只丟棄全為NA的那些行書寫方式:data。dropna(how=’all’)#傳入axis=1丟棄列書寫方式:data。dropna(how=’all’,axis=1)#thresh引數過濾時間序列資料 書寫方式:df。dropna(thresh=3)上述的不同場景下濾除缺失值的方法,相對比較完整,大家可以在親自進行嘗試和體會。
如何使用固定值或衍生值填充缺失值?
在回顧了缺失值濾除方法後,我們重點來介紹如何使用固定值或衍生值填充缺失值。
在有少量缺失值,但相對完整的資料中,直接濾除缺失值是一種相對粗暴的解決方法。而實際的資料處理過程中,我們經常進行的是使用固定值或衍生值填充缺失值,然後再進行下一步的其他動作。我們使用dropna方法進行缺失值濾除,而缺失值填充使用的則是fillna這個工具。
小編在本文中主要介紹4種填充缺失值的場景及相應的示例,具體如下:
場景1:用平均值填充NA值
假設需要對不同的分組填充不同的值。只需將資料分組,並使用apply和一個能夠對各資料塊呼叫fillna的函式即可。
場景2:對不同分組填充不同的值
場景3:用分組平均值去填充NA值
場景4:在程式碼中預定義各組的填充值
總結
綜上所述,dropna和fillna兩種python技術工具,實現了缺失值的濾除和填充。除此之外,本文介紹了9種缺失值處理的應用場景與方法,分別為:Series結構的缺失值濾除、DataFrame結構資料缺失值濾除(4種)、4種使用固定值或衍生值填充缺失值的場景與方法,基本涵蓋了資料處理中經常使用的缺失值處理應用場景與方法。