Mike的Python學院

PYTHON資料分析、Python、資料清理、Lambda、Pandas、資料分析、程式語言、資料處理

Mike Ku

Learn Code With Mike品牌創辦人

2021/11/23

使用Pandas套件實作資料清理的必備觀念(下)

Q:Pandas資料型態處理有哪些方法?
想要將欄位資料進行轉型,就可以使用Pandas套件的以下方法(Method):
1.astype():欄位資料轉型為自訂的資料型態。需注意欄位資料不得含有特殊符號,否則會產生問題。如下範例:
df = pd.read_csv('mycsvfile.csv')
df['title'] = df['title'].astype('string') #轉型為字串
2.to_numeric():欄位資料轉型為數值。如下範例:
df = pd.read_csv('mycsvfile.csv')
df['show_id'] = pd.to_numeric(df['show_id'], errors='coerce') #轉型為數值
3.to_datetime():欄位資料轉型為日期。如下範例:
df = pd.read_csv('mycsvfile.csv')
df['date_added'] = pd.to_datetime(df['date_added']) #轉型為日期
Q:Pandas資料格式處理有哪些方法?
而資料格式的部分,由於從不同的資料來源蒐集,格式有時不一致或不符合分析需求,在這種情況下,就需要進行格式化的處理。其中,日期可以使用以下的Pandas套件方法(Method):
1.to_datetime(欄位名稱).dt.strftime():將欄資料轉型為日期後,再進行格式化,如下範例:
df = pd.read_csv('mycsvfile.csv')
df['date_added'] = pd.to_datetime(df['date_added']).dt.strftime('%Y/%m/%d')
2.round(decimals=小數位數):四捨五入到自訂的小數位數。如下範例:
df = pd.read_csv('mycsvfile.csv')
df['rating'] = df['rating'].round(decimals=0) #四捨五入到整數位
Q:Pandas自訂函式清理資料有哪些方法?
除了以上內建的資料清理方法(Method)外,還可以自訂函式封裝特殊的清理邏輯,再透過以下的Pandas套件方法(Method)套用到欄位資料中:
1.apply():套用自訂的資料清理函式。如下範例:
#西元年轉為民國年
def convert_chinese_year(year):
return int(year)-1911
df = pd.read_csv('mycsvfile.csv')
df['release_year'] = df['release_year'].apply(convert_chinese_year) #套用自訂函式
當然,也適用Python的lambda匿名函式來處理欄位資料,如下範例:
df = pd.read_csv('mycsvfile.csv')
df['show_id'] = df['show_id'].apply(lambda x:format(x,',')) #加上千分位符號
詳細的Python lambda語法教學可以參考[Python教學]Python Lambda Function應用技巧分享( https://www.learncodewithmike.com/2019/12/python-lambda-functions.html )文章。
另外,如果想要在Pandas套件一讀取資料來源時,就進行資料型態與格式的處理,則可以在read_csv()方法(Method)加上converters關鍵字參數,如下範例:
def convert_chinese_year(year): #西元年轉為民國年
return int(year)-1911
df = pd.read_csv('mycsvfile.csv', converters={
'date_added': lambda x: pd.to_datetime(x), #轉為日期型態
'release_year': convert_chinese_year, #轉為民國年格式
'rating': lambda x:int(round(float(x), 0)) #四捨五入且轉為整數型態
})
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/04/pandas-data-cleaning-method.html )網站觀看更多精彩內容。
2 0 472 2