2023-08-05|閱讀時間 ‧ 約 6 分鐘

【Google Colab Python系列】 資料處理神器 Pandas Grouping & Reshapi

過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需要進行更進階的分割與合併,讓零散的「資料」變成黃金。


🗺️ Python Pandas 學習路徑


分組(Grouping)

分組的用意在於將一大筆原始資料根據相似群組進行分類,進而統計, 最終產生該群組的一組樣本數據資料,嗯...,相信看到這裡心裡難免會說「能不能說點人話?」, 的確,就字面解釋確實不太容易理解,那我們就以一個較貼近生活化的例子來輔助說明看看吧!

假設我們是咖啡廳的老闆,我們有一份銷售表格,記錄著每一位員工每天的銷售額,其中包含員工姓名、銷售日期、銷售金額..

圖片來源...

import pandas as pd

data = {
'姓名': ['小明', '小華', '小明', '小華', '小明', '小華'],
'日期': ['2023-08-01', '2023-08-01', '2023-08-02', '2023-08-02', '2023-08-03', '2023-08-03'],
'銷售金額': [100, 150, 120, 80, 200, 90]
}

df = pd.DataFrame(data)
print(df)

圖片來源...

那麼有了這個銷售數據後,身為老闆的我們總會希望統計一下哪位員工的銷售金額比較多,績效比較好,做為評估的依據, 此時我們可以這麼做, 以「姓名」當作群組的分類標的,進而針對銷售金額進行加總, 就可以得出這批資料中,哪位員工銷售的最多...


total = df.groupby('姓名')['銷售金額'].sum()
print(total)

圖片來源...

當然我們群組分類的欄位也可以不只一個, 假設我們要統計每個人每天的銷售額多少時就可以這麼做...


total = df.groupby(['姓名', '日期'])['銷售金額'].sum()
print(total)


圖片來源...

重朔(Reshaping)

這功能主要就像是資料的變形怪一樣,它允許我們重新組織或轉換資料的形狀。

stacking、unstacking、pivot、pivot_table都是Reshaping能夠轉換的格式與方法, 就讓我們繼續看下去吧!

假設我們有一份樣本資料...


import pandas as pd

data = {
'日期': ['2023-08-01', '2023-08-01', '2023-08-02', '2023-08-02'],
'城市': ['台北', '高雄', '台北', '高雄'],
'最高溫度': [32, 34, 33, 35],
'最低溫度': [26, 28, 27, 29]
}

df = pd.DataFrame(data)
print(df)

圖片來源...

以pivot來實現

將城市作為欄位,日期作為索引,並將最高溫度和最低溫度分別填入對應的欄位中。

這樣的數據格式主要表示每個日期各地區的最高溫度與最低溫度。


reshaped_df = df.pivot(index='日期', columns='城市', values=['最高溫度', '最低溫度'])
print(reshaped_df)

圖片來源...


我們可以用stack

讓欄位的值堆疊到日期之處,這樣的數據讓我們較方便從上往下觀察。


圖片來源...

stacked_df = reshaped_df.stack()
print(stacked_df)


圖片來源...

當然也可以unstack


unstacked_df = stacked_df.unstack()
print(unstacked_df)


圖片來源...

今天的範例都在這裡「📦 pandas/pandas_merge.ipynb」歡迎自行取用。

如何使用請參閱「【Google Colab Python系列】Colab平台與Python如何擦出火花?」。

結語

原來數據可以這麼玩,分組、重組不同格式都輕而易舉,靈活彈性的展示數據讓我們訓練AI的過程中更容易抓到方向。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識


分享至
成為作者繼續創作的動力吧!
主軸圍繞於軟體科技, 除了過往經驗成章以外也持續學習新技能, 並將學習心法記錄與分享, 以期幫助相同道路之夥伴。 裡面包含著各種程式語言的疑難雜症解題技巧, 也提供資料庫、AI、認證與授權、工具庫...等技巧, 讓您自由找出您想要的解答, 如果您想要系統化的教學課程也歡迎至「🔒 阿Han的軟體心法實戰營」。
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

發表回應

成為會員 後即可發表留言