昨天介紹了多個Excel文件合併數據與清理數據的流程,Python 和 Pandas 的結合對於整個操作而言是非常強大,它的可擴展性和功能更強。利用 Pandas 處理 Excel 文件可以為你的數據處理需求開發一個更加精簡和可重複的解決方案,今天要更進一步做類別對象分類。
現在我們把所有的數據都放到一個 DataFrame 中,我們可以利用 DataFrame 來支持任何操作。在這種情況下,我們要做的下一件事是讀入另一個文件,其中包含按帳戶劃分的客戶狀態。你可以把它看作是一個公司的客戶細分策略或其他一些識別客戶的機制。
all_data.head()
我們想將這些數據與我們的客戶資料數據集(saleMonth)合併。可以使用 Panda 的合併函數,告訴它做一個左鍵連接(left),這樣的做法也類似於 Excel 的 vlookup 函數,利用 Merge 合併 all_data 與 status 函數。
status = pd.read_excel("data/saleMonth-customer-status.xlsx")
all_data_st = pd.merge(all_data, status, how='left')
all_data_st.head(3)
資料查詢是我們在 Excel 中很常利用的功能,然而在 Python 中我們也可以很容易達成這個需求,方法就是利用資料集中,選定你選要的標頭名稱(["account number"]) 並且設定需要的值,下方例子以 737550 為例,我們就能快速把所有符合 737550 的資料篩選出來。
all_data_st[all_data_st["account number"]==737550].head()
我們可以注意到這個帳戶號碼不在我們的 Status 文件中,所以我們 Status 有一堆 NaN。我們可以決定如何處理這種情況。對於這個特定的情況,讓我們把所有缺失的帳戶標為某值(這邊使用 bronze 銅級)。使用fillna函數可以很容易地在狀態欄上完成缺失值回補。
all_data_st['status'].fillna('bronze',inplace=True)
all_data_st.head()
Categories 是 Pandas 的一種數據類型,主要對應於統計學中的分類變量:一個變量,它只能採取有限的,通常是固定的值。例如性別、社會階層、血型、國家歸屬、觀察時間等等。 對於我們的目的,狀態字段是一個很好的類別類型的候選者,所以我們可以使用 set_categories 來告訴它我們要為這個類別對象使用的順序。在這種情況下,我們使用奧林匹克獎牌的排序,利用這種方式我們就能順利把完整數據表中合併完成,並且填補缺失值。
all_data_st["status"].cat.set_categories([ "gold","silver","bronze"],inplace=True)
all_data_st.sort_values(["status"]).head()
今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。
Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。
謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。