在茫茫數據海當中,資料散布在各種不同的地方,可能是資料庫、網站、文件等,為了要有效統一資料集,方便後續的分析和報告,資料合併的操作是不可不學的,以下將以案例和大家分享資料合併的三種常用語法,內容包含:
concat( )
merge( )
、join( )
使用 Pandas 提供的 concat( [data], axis = 0 或 1, ignore_index = True 或 False)
合併多個 DataFrame 物件。
1. 水平合併:多個資料集內的欄位相同,合併列(row)的資料
(1) 舉例:合併不同來源的顧客資料
(2) 程式碼:
import pandas as pd
data_1 = {'name':['Alan','Joseph','Wennie'],
'gender':['M','M','F'],
'city':['Taipei','Hualien','Hsinchu']}
data_2 = {'name':['Ruby','Chris','Tanya'],
'gender':['F','M','F'],
'city':['Taoyuan','Kaohsiung','Taichung']}
df1 = pd.DataFrame(data_1)
df2 = pd.DataFrame(data_2)
# 水平合併df1和df2,並且忽略索引值
con = pd.concat([df1,df2],ignore_index=True)
print(con)
(3) 輸出結果:
2. 垂直合併:多個資料集內的欄位皆不同,合併行(column)的資料
(1) 舉例:合併公司不同的顧客資料
(2) 程式碼:
import pandas as pd
data_1 = {'name':['Alan','Joseph','Wennie','Ruby','Chris'],
'gender':['M','M','F','F','M'],
'city':['Taipei','Hualien','Hsinchu','Taoyuan','Kaohsiung']}
data_2 = {'age':[68,23,32,50,40],
'marital status':['married','single','married','married','single']}
df1 = pd.DataFrame(data_1)
df2 = pd.DataFrame(data_2)
# 垂直合併df1、df2
con = pd.concat([df1,df2],axis=1)
(3) 輸出結果:
1.使用 Pandas 提供的 merge( data, on = '欄位名稱')
在有相同欄位之下合併兩個資料集。
(1) 舉例:依據姓名欄位,合併公司的顧客資料和銷售資料
(2) 程式碼:
import pandas as pd
data_1 = {'name':['Alan','Joseph','Wennie','Ruby','Chris'],
'gender':['M','M','F','F','M'],
'city':['Taipei','Hualien','Hsinchu','Taoyuan','Kaohsiung']}
data_2 = {'name':['Alan','Joseph','Wennie','Ruby','Chris'],
'date':['2023/09/28','2023/09/10','2023/09/28','2023/09/23','2023/09/17'],
'item':['rice cooker','air fryer','oven','refrigerator','electric fan']}
customer = pd.DataFrame(data_1)
sales = pd.DataFrame(data_2)
# 依據name欄位,合併customer、sales兩個資料
new = pd.merge(customer,sales,on='name')
print(new)
(3) 輸出結果:
2.使用 Pandas 提供的 join()
將兩個資料集按照索引合併。
(1) 舉例:以姓名為索引值,合併兩個資料集
(2) 程式碼:
import pandas as pd
data_1 = {'gender':['M','M','F','F','M'],
'city':['Taipei','Hualien','Hsinchu','Taoyuan','Kaohsiung']}
df1 = pd.DataFrame(data_1,index=['Alan','Joseph','Wennie','Ruby','Chris'])
data_2 = {'age':[32,42,68,50,23],
'marital status':['married','single','married','married','single']}
df2 = pd.DataFrame(data_2,index=['Wennie','Chris','Alan','Ruby','Joseph'])
# 合併df1和df2
new = df1.join(df2)
print(new)
(3) 輸出結果:
善用 concat()
、merge()
、join()
三種資料合併操作,就算資料散落各處,也能輕鬆搞定!如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱唷!
我是 Eva,一位正在努力跨進資料科學領域的女子!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】