使用Pandas套件實作資料清理的必備觀念(上)
Q:Pandas遺漏資料清理的方法有哪些?
遺漏資料泛指該筆資料含有空值、NULL或NaN等缺漏,這時候遺漏資料的清理,可以利用Pandas套件的以下方法(Method):
1.dropna():只要該筆資料有遺漏就刪除。
df = pd.read_csv('mycsvfile.csv')
df.dropna(inplace=True) #inplace=True為取代原pandas dataframe的意思
2.dropna(how='all'):該筆資料的所有欄位皆遺漏才刪除。
在dropna()方法(Method)加上how='all'關鍵字參數,就可以將這筆所有欄位皆遺漏的資料刪除,如下範例:
df = pd.read_csv('mycsvfile.csv')
df.dropna(how='all', inplace=True)
從以上結果可以看到,剛剛所新增的資料已被刪除,而剩下的每筆資料皆只遺漏一個欄位值,不是所有欄位皆遺漏,所以並不會被刪除。
除此之外,在某些情況下,為了保留資料的原始性,該筆資料有遺漏但並不想要刪除,而是填入自訂的預設值來補齊,則能夠使用以下的Pandas套件方法(Method):
3.fillna(value=預設值):該筆資料遺漏的部分填入自訂預設值。
df = pd.read_csv('mycsvfile.csv')
df.fillna(value='unknown', inplace=True)
Q:Pandas重複資料清理的方法有哪些?
顧名思義,就是資料集中有一模一樣的資料,如果想要進行刪除,使用以下的Pandas套件方法(Method)即可達成:
1.drop_duplicates():刪除一模一樣的資料。
利用drop_duplicates()方法(Method)刪除這筆重複的資料,如下範例:
df = pd.read_csv('mycsvfile.csv')
df.drop_duplicates(inplace=True)
從執行結果可以看到,筆者所新增的重複資料已被刪除,預設會保留重複資料的第一筆。
而另一個常見的應用情況是某些特定欄位,只要一樣的話就刪除或僅保留一筆。舉例來說,各個國家相同的影片類型資料保留一筆就好,也就是影片類型(type)與國家(country)兩個欄位的資料,相同的話僅保留一筆,就可以使用以下的Pandas方法(Method):
2.drop_duplicates([column_name,...]):指定的欄位資料重複就刪除。
df = pd.read_csv('mycsvfile.csv')
df.drop_duplicates(['type', 'country'], inplace=True)
這時候,每筆資料的影片類型(type)與國家(country)兩個欄位值,就不會重複了。
Q:Pandas拆分欄位資料的方法有哪些?
當資料集的某一欄位擁有複合式資料,為了方便未來的搜尋與分析,就可以利用以下的Pandas套件方法(Method)來拆分其中的資料:
1.str():截取欄位資料的部分字串。
df = pd.read_csv('mycsvfile.csv')
df['summary'] = df.description.str[0:31]
以上範例截取描述(decription)欄位的前30個字,當作摘要(summary)新欄位的值。
2.split():以分隔符號來拆分資料。
df = pd.read_csv('mycsvfile.csv')
df['listed'] = df.listed_in.str.split(',')
以上範例使用分類(listed_in)欄位為例,利用逗號來分隔資料後,存放在清單(listed)新欄位,可以看到為串列(List)的資料型態,如果要把其中的資料再分別放到不同欄位,則可以搭配Pandas套件的get()方法(Method):
df = pd.read_csv('mycsvfile.csv')
df['listed'] = df.listed_in.str.split(',')
df['listed1'] = df.listed.str.get(0)
df['listed2'] = df.listed.str.get(1)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/03/pandas-data-cleaning.html )網站觀看更多精彩內容。
