1. 程式人生 > 其它 >merge函式_資料分析常用函式—pd.merge

merge函式_資料分析常用函式—pd.merge

技術標籤:merge函式validate函式

資料分析是現在的熱門,學會用python處理資料,讓你從繁瑣的工作中解脫出來。 本文詳細闡述資料分析常用函式之merge函式。

本文目錄

  1. merge函式引數詳解

  2. merge函式簡單例項

    2.1 兩個資料框

    2.2 按不同方式拼接兩個資料框

  3. merge函式進階例項

    3.1 兩個資料框

    3.2 按不同方式拼接兩個資料(

一、merge函式引數詳解

bf49b0cb7d96118ae555821ec433fb2c.png pd.merge函式是把兩個資料框按某種方式拼接起來,如果覺得單看語法比較枯燥,可以先看第二部分例項。
pd.merge(left, right, how= 'inner', on=None, left_on=None,           right_on=None, left_index = False, right_index = False,           sort = False, suffixes=('_x', '_y'), copy = True,           indicator = False, validate=None)

引數詳解:

left:待拼接的左側資料框。

right:待拼接的右側資料框。

how:左右兩個資料框的連線方式。可選‘left’、‘right’、‘outer’、‘inner’,預設為inner。 on:左右兩個待拼接資料框有共同列名,且按該列拼接兩個資料框時使用該引數。 left_on:拼接兩個資料框時,左資料框對應連線關鍵字(可為列表)。 right_on:拼接兩個資料框時,右資料框對應連線關鍵字(可為列表)。 left_index:若為True,則按左資料框的索引連線兩個資料框。 right_index:若為True,則按右資料框的索引連線兩個資料框。 sort:按字典順序通過連線鍵對結果資料框進行排序。 suffixes:為左右資料框中重複列名定義字尾。預設加('x','y')。

二、merge函式簡單例項

bf49b0cb7d96118ae555821ec433fb2c.png 1兩個資料框

1.第一個資料框中存放了四位同學的數學成績

import pandas as pddate1 = pd.DataFrame({'name':['xie', 'li', 'wang', 'chen'],                     'Math':[88, 90, 54, 70]})

具體資料格式如下:

6cf0ae091f4f3b9552bd158792a25d21.png

2.第二個資料框中存放了四位同學的英語成績

date2 = pd.DataFrame({'name':['xie', 'li', 'fan', 'sun'],                     'English':[94, 83, 89, 33]})

具體資料格式如下:

5792ba81a5513538068a22952fa45f30.png

2按不同方式拼接兩個資料框

1. 以預設的方式連線兩個資料框

pd.merge(date1, date2)
882abb91756e77ec2356a2a5d977e51a.png

沒有指定連線鍵時,預設採取兩個資料框中的都有的列做為連線鍵。且連線方式how預設為inne(保留兩個資料框中都有資訊的列)。

2. how為left

pd.merge(date1, date2, how = 'left')

393f9a95580e14caf6677af16d80365f.png

以左資料框中的連線鍵為基準,匹配右資料框中的資訊,並連線。如果沒有指定連線關鍵字,預設相同名字的那一列作為匹配鍵。

3. how為right

pd.merge(date1, date2, how = 'right')

cb559dc102c51efec293863a3c0fafb5.png

類似left,只是以右側資料框中的連線鍵為基準。 4 . how為outer
pd.merge(date1, date2, how = 'outer')

5ae25dd77cc47dcabe82fbf8c443645c.png

取連線鍵的並集,保留所有資訊。 5.以index做為連線鍵
pd.merge(date1, date2, how= 'inner',left_index=True,right_index=True)

acfcb4194b76f7fcbf6cb70ec94da36b.png

按預設index進行連線,也可以在建立資料框時自己指定index。

若兩個資料框除連線鍵外,還有相同列名,預設左側資料框中的相同列名後加_x,右側資料框中相同列名後加_y,見上圖中的name_x和name_y。

三、merge函式進階例項

bf49b0cb7d96118ae555821ec433fb2c.png 1兩個資料框

1.第一個資料框中存放了四位同學的姓名、年齡和成績。

import pandas as pddate1 = pd.DataFrame({'name1':['xie', 'li', 'wang', 'chen'],                      'age1':[12, 11, 11, 13],                      'music':[95,66,98,78],'Math':[88,90,54,70]})

具體資料格式如下:

eba8a32aa932a7288cddef995612a384.png

2. 第二個資料框中存放了四位同學的姓名、年齡和成績。
date2 = pd.DataFrame({'name2':['xie', 'li', 'fan', 'sun'],                      'age2':[12, 11, 13, 10],                     'English':[94, 83, 89, 33]})
具體資料格式如下:

4dac376a4a30a9219580c26ce15add7f.png

2按不同方式拼接兩個資料框

由於兩個資料框中沒有相同列名,所以不指定連線關鍵字時會報錯。

1.以左連線的方式連線兩個資料框

pd.merge(date1, date2, how = 'left', left_on = 'name1', right_on = 'name2')

得到結果如下:

6ace2b7a1d90977a344e59ae8c4fcc5a.png

2.指定兩列為連線鍵

pd.merge(date1, date2, how = 'left', left_on = ['name1', 'age1'], right_on = ['name2', 'age2'])

得到結果如下:

f6d05d1e3a13151a964b0c1e806762fb.png

3.用sort對連線鍵值進行排序

pd.merge(date1, date2, how = 'left', left_on = ['name1', 'age1'], right_on = ['name2', 'age2'], sort = True)
得到結果如下:

5b2b481f94ed746949fce2c91c9faa84.png

按連線鍵的順序對資料框進行排序。