【Google Colab Python系列】 資料處理神器 Pandas 合併之術(join、concat)

2023/08/04閱讀時間約 5 分鐘
raw-image

圖片來源...

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


🗺️ Python Pandas 學習路徑


首先是串接

假設小夫的媽媽想要請他根據「蔬果清單」去菜市場購買, 而爸爸也想要請他根據「五金清單」去五金行購買, 那麼這兩個清單雖然是不同的類型, 但聰明的小夫發現可以稍微整理一下比較好採購, 也比較好跟爸媽回報今天總共會花費多少、該請款多少, 那麼共同點就是會有「商品名稱」、「數量」、「價格」, 這時候就需要將兩個清單進行合併…


import pandas as pd

# 菜市場購物清單
wet_market = pd.DataFrame({
'商品名稱': ['高麗菜', '香蕉', '橘子'],
'數量': [2, 5, 2],
'價格': [10, 15, 8]
})

# 五金行購物清單
hardware_store = pd.DataFrame({
'商品名稱': ['電燈炮', '螺絲起子', '芳香劑'],
'數量': [2, 1, 4],
'價格': [12, 20, 6]
})

# 使用 pandas.concat 函數來合併兩張購物清單
combined_shopping_list = pd.concat([wet_market, hardware_store], ignore_index=True)

print(combined_shopping_list)


raw-image

圖片來源...

再來是合併(Join)

有一天小明在整理客戶資料時發現了兩份清單, 一份為客戶的地址, 另一份為客戶訂單, 而兩張單子的共同點就是用戶名稱, 這時候聰明的小明就告訴自己, 為什麼我不能將這兩張表合併呢? 明明長的很像但卻分的很開, 聰明的小明就決定進行合併之路...


import pandas as pd

# 客戶的地址
user_data = pd.DataFrame({
'用戶名稱': ['Alice', 'Bob', 'Charlie'],
'地址': ['台北', '台中', '高雄']
})

user_data


raw-image

圖片來源...


# 客戶訂單
order_data = pd.DataFrame({
'用戶名稱': ['Bob', 'Charlie', 'Alice'],
'訂單金額': [100, 200, 150]
})

order_data


raw-image

圖片來源...

# 使用 pandas 的 join 合併之術來合併兩張表
joined_data = user_data.set_index('用戶名稱').join(order_data.set_index('用戶名稱'))

joined_data
raw-image

圖片來源...

有沒有發現,其實這很像SQL裡面的join概念,將兩張表整併再一起,更容易進行統計與分析。

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

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

結語

這個章節的主軸在於說明如何對多張不同的表進行整併,並歸納出相同的欄位,以進行後續的處理,接下來我們會說明應該如何進行「群組化(Grouping)」、「重朔(Reshaping)」、「樞紐分析表(Pivot tables)」,讓我們的資料處理能力更進階一個檔次,邁向資料工程師之路…。

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

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

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

91會員
260內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!