遺漏值(Missing Value)的處理可以說是在資料清理的過程中,不可或缺的步驟之一,而Pandas套件也提供了許多實用的方法(Method),讓分析人員能夠有效的探索與檢視遺漏值(Missing Value),並且進行適當的處理。
所以,本文以Kaggle網站的「Netflix data with IMDB scores added」資料集(mycsvfile.csv)為例,來和大家分享筆者在處理遺漏值(Missing Value)時,常用的Pandas套件方法(Method),包含:
- Pandas 探索遺漏值(Missing Value)
- Pandas檢視遺漏值(Missing Value)
- Pandas dropna()方法(Method)
- Pandas fillna()方法(Method)
一、Pandas 探索遺漏值(Missing Value)
首先,利用Pandas套件的read_csv()方法(Method),來瞭解一下Kaggle網站的「Netflix data with IMDB scores added」資料集(mycsvfile.csv)內容,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df)
擷取部分執行結果
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.isnull())
執行結果
但是這樣並沒有辦法讓我們快速瞭解每個欄位的遺漏值(Missing Value)狀況,這時候就可以搭配使用Pandas套件的sum()方法(Method),將每個欄位進行加總,瞭解每個欄位的遺漏值(Missing Value)個數,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.isnull().sum())
執行結果
二、Pandas檢視遺漏值(Missing Value)
探索了每個欄位的遺漏值(Missing Value)個數後,如果想要特別檢視特定欄位的遺漏值(Missing Value)資料內容,就可以利用以下的Pandas套件篩選語法:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df[df.date_added.isnull()])
執行結果
以上範例,就是檢視date_added(新增日期)欄位的11筆遺漏值(Missing Value)資料內容。
三、Pandas dropna()方法(Method)
接下來,就可以針對遺漏值(Missing Value)的資料進行處理,而最常見的就是移除的動作,為了讓讀者檢視資料筆數的變化,先利用Pandas套件的shape屬性來看一下資料集的形式,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.shape)
執行結果
(6234, 12)
從執行結果可以知道,這個資料集有6234筆資料及12個欄位,如果要移除遺漏值(Missing Value)的資料,Pandas套件提供了dropna()方法(Method)來因應不同的需求,包含:
- dropna(how='any'):任一欄位有遺漏值(Missing Value)的資料就移除,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.dropna(how='any').shape)
執行結果
(4265, 12)
- dropna(how='all'):所有欄位皆有遺漏值(Missing Value)的資料就移除,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.dropna(how='all').shape)
執行結果
(6234, 12)
由於剛剛在探索每個欄位的遺漏值(Missing Value)個數中,只有兩個欄位有遺漏值(Missing Value),所以在進行此操作後,總資料筆數不變。
- dropna(subset=['欄位名稱', ...], how='any'):任一個指定的欄位有遺漏值(Missing Value)的資料就移除,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.dropna(subset=['director', 'date_added'], how='any').shape)
執行結果
(4265, 12)
- dropna(subset=['欄位名稱', ...], how='all'):指定的欄位皆有遺漏值(Missing Value)的資料就移除,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') print(df.dropna(subset=['director', 'date_added'], how='all').shape)
執行結果
(6223, 12)
PS.大家可以搭配第一節探索的每個欄位遺漏值(Missing Value)個數,來觀察執行各個dropna()方法(Method)後的資料筆數變化。
四、Pandas fillna()方法(Method)
另一個遺漏值(Missing Value)資料的處理方式,就是填入自訂的值,這時候就能利用Pandas套件的fillna()方法(Method),指定value關鍵字參數(Keyword Argument)為想要填入的值即可,如下範例:
import pandas as pd df = pd.read_csv('mycsvfile.csv') df['director'].fillna(value='Not Found', inplace=True) print(df.head(10)) #取前10筆
執行結果
以上範例,將director(導演)欄位的遺漏值(Missing Value)資料填入「Not Found」,並且設定inplace關鍵字參數(Keyword Argument)為True,覆寫原Pandas DataFrame中的內容。
五、小結
本文整理了Pandas套件對遺漏值(Missing Value)資料的常見處理方式,首先,透過計算遺漏值(Missing Value)個數,探索每個欄位資料的遺漏狀況,接著,利用Pandas套件的篩選語法檢視詳細的遺漏值(Missing Value)資料,最後,利用Pandas套件的dropna()或fillna()方法(Method),來移除遺漏值(Missing Value)資料或填入自訂的值。
大家手邊有資料集的話,不妨依照本文的教學,來練習清理遺漏值(Missing Value)資料吧。
如果喜歡我的文章,別忘了在下面訂閱本網站,以及幫我按五下Like(使用Google或Facebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。
- [Pandas教學]有效利用Pandas套件的pipe方法打造資料處理流程管道
- [Pandas教學]3個優化Pandas套件讀取大型CSV檔案資料的技巧
- [Pandas教學]一定要學會的Pandas套件讀寫Google Sheets試算表資料秘訣
- [Pandas教學]客製化Pandas DataFrame樣式提升資料可讀性的實用方法
- [Pandas教學]3個Pandas套件合併多個CSV檔案資料的實用技巧
- Pandas教學]看完這篇就懂Pandas套件如何即時讀取API的回應資料
- [Pandas教學]快速掌握Pandas套件讀寫SQLite資料庫的重要方法
- [Pandas教學]輕鬆入門3個常見的Pandas套件排序資料方式
- [Pandas教學]有效利用Pandas套件篩選資料的應用技巧
- [Pandas教學]善用Pandas套件的Groupby與Aggregate方法提升資料解讀效率
- [Pandas教學]使用Pandas套件實作資料清理的必備觀念(上)
- [Pandas教學]使用Pandas套件實作資料清理的必備觀念(下)
- Visual Studio Code漂亮印出Pandas DataFrame資料的實用方法
- [Pandas教學]資料視覺化必懂的Pandas套件繪製Matplotlib分析圖表實戰
- [Pandas教學]5個實用的Pandas讀取Excel檔案資料技巧
- 解析Python網頁爬蟲如何有效整合Pandas套件提升資料處理效率
- [Pandas教學]掌握Pandas DataFrame讀取網頁表格的實作技巧
- [Pandas教學]資料分析必懂的Pandas DataFrame處理雙維度資料方法
- [Pandas教學]資料分析必懂的Pandas Series處理單維度資料方法
留言
張貼留言