資料合併:初探merge用法

更新於 發佈於 閱讀時間約 4 分鐘
raw-image

雖然之前用爬蟲的時候有用過Pandas來處理過爬到的表格,但對Pandas應該只能算是一知半解,每次遇到不會就是上網查語法要怎麼寫,而且查的次數好像有點多,想了想自己是沒有好好地學Pandas的各種使用方法,著實浪費了他的強大功能,所以就從merge來開始吧!

接下來的用字遣詞可能不是很專業(可能可以把可能拿掉XD),主要是我對每個語法的個人理解,除了用來紀錄自己的想法,也順便當作分享。


Merge

merge是用來合併兩個有共同欄 (column)的dataframe的方法

首先我先創建兩個略有不同的dataframe,方便後續理解每個方法和參數。

import pandas as pd

# 創建一個公司代號和價格對應的dataframe
price = pd.DataFrame(
{
"stockID": ["2330", "0050", "006208", "1268"],
"price": ["1085", "196.95", "115.60", "152.5"]
}
)

# 創建一個公司代號和漲跌幅對應的dataframe
change = pd.DataFrame(
{
"stockID": ["2330", "0050", "006208", "1217"],
"change": ["2.36%", "1.52%", "1.40%", "0.41%"]
}
)

就會得到以下這兩個dataframe:

price(左)和change(右)

price(左)和change(右)

如何合併?

直接合併

df = pd.merge(price, change)
raw-image

merge可以直接使用來達到合併dataframe的作用,從輸出結果可以得知預設是取兩者的交集。那如果把括號裡的順序對調呢?

df = pd.merge(change, price)
raw-image

可以發現change和price這兩欄的先後順序變了,但整體是沒有變化的!

指定要以誰為基準合併

上述的直接合併,其實也可以寫成以下的樣子:

df = price.merge(change)

以price為基準,將change合併到price。

關於how這個參數

how這個參數有以下4種不同的值:

  1. inner(預設)
  2. outer
  3. left
  4. right

inner(預設)

  • inner是how的預設值,代表將兩者取「交集」,不特別指定的時候merge就會採用inner來對dataframe進行合併。

outer

  • outer代表將兩者取「聯集」,兩個dataframe的所有欄位在合併後都會被保留下來,而空值的部分則會被NaN填充。
df = price.merge(change, how="outer")
how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。

how的值為outer時,保留了price和change中的所有欄位,空值以NaN填充。

left

  • left代表保留第一個(我理解為程式碼中「左邊」那個)dataframe中的所有欄位,並將右邊那個dataframe合併後的空值以NaN填充。
df = price.merge(change, how="left")
how的值為left時,price的所有欄位都被保留,而change中因為沒有stockID=1268所對應的資料,因此被NaN填充。

how的值為left時,price的所有欄位都被保留,而change中因為沒有stockID=1268所對應的資料,因此被NaN填充。

right

  • 和left相反,right代表保留第二個(我理解為程式碼中「右邊」那個)dataframe中的所有欄位,並將左邊那個dataframe合併後的空值以NaN填充。
df = price.merge(change, how="right")
how的值為left時,和為left時的結果正好完全相反。

how的值為left時,和為left時的結果正好完全相反。



以上就是merge最基本的用法和參數how的理解,希望能對和我一樣有時候看不太懂某些說明的人有些幫助。





avatar-img
0會員
3內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name