Mike的Python學院

資料分析、Python、Pandas

Mike Ku

Learn Code With Mike品牌創辦人

2022/01/21

善用Pandas套件幫你清理資料範圍異常的資料

本文將以Kaggle網站的Kindle Store電子書店評論資料集( https://www.kaggle.com/bharadwaj6/kindle-reviews )為例,來和大家分享如何利用Pandas套件來處理數字範圍錯誤。
Q: Pandas數字範圍處理
首先,利用Pandas套件讀取資料集,如下範例:
import pandas as pd
df = pd.read_csv('kindle_reviews.csv')
print(df)
假設我們只想要分析「overall評價欄位」1~4分的書籍,這時候,評價為5的書籍資料就超出了分析需求範圍,如果沒有進行處理,就會讓分析結果失去準確性。
而想要利用Pandas套件處理數字範圍的資料,有以下兩種常見的方式:
1.刪除資料
通常會建議超過範圍資料的占比較小時,才考慮透過刪除的方式,否則,超過範圍資料的占比過大,刪除可能造成重要資料訊息的遺失。
而Pandas套件刪除資料的方式分為兩種,可以是選擇所需的範圍資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df = df[df['overall'] <= 4]
或將超過範圍的資料刪除,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df.drop(df[df['overall'] > 4].index, inplace=True)
可以透過assert陳述式來進行欄位資料範圍的驗證,如下範例:
assert df['overall'].max() <= 4
PS.沒有顯示訊息代表驗證通過
Q: Pandas日期範圍處理
另一個常見的資料範圍錯誤,就是日期資料,像是含有未來日期的資料等。要利用Pandas套件處理日期範圍錯誤的資料,可以先將欄位資料型態轉型為日期,方便之後的日期資料操作,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
print(df)
接著,同樣可以使用下兩種解決方法:
1.刪除資料
引用datetime模組(Module),來取得目前的日期,如下範例:
import pandas as pd
import datetime
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
這時候,就可以使用Pandas套件,利用目前的日期來選擇有效的「ReviewTime評論日期欄位」資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
df = df[df['reviewTime'].dt.date <= today]
或是刪除「ReviewTime評論日期欄位」中含有未來日期的資料,如下範例:
df = pd.read_csv('kindle_reviews.csv')
df['reviewTime'] = pd.to_datetime(df['reviewTime'])
today = datetime.date.today()
df.drop(df[df['reviewTime'].dt.date > today].index, inplace=True)
刪除後,利用assert陳述式來驗證「ReviewTime評論日期欄位」不含未來日期的資料,如下範例:
assert df.reviewTime.max().date() <= today
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2022/01/processing-data-range-with-pandas.html
)網站觀看更多精彩內容。
3 0 240 0