Pandas 中不同型別的連線


Pandas 是一個流行的庫,用於執行資料分析和資料操作。它有許多高階功能可以處理表格資料,例如根據公共列或列索引將多個數據框連線成一個。

在 Python 中,可以使用 **merge()** 函式以及 pandas 庫的 how 引數執行不同型別的連線。以下是不同的連線型別。

  • 內連線 (Inner Join)

  • 外連線 (Outer Join)

  • 左連線 (Left Join)

  • 右連線 (Right Join)

  • 交叉連線 (Cross Join)

內連線 (Inner Join)

Pandas 庫中的內連線將返回在兩個已定義資料框中具有相同值的行以及輸出結果。我們可以觀察到資料框中具有相同列的列。以下是應用於資料框的內連線語法。

import pandas as pd
pd.merge(dataframe1,dataframe2,how=’inner’

其中:

  • **pandas** 是庫的名稱。

  • **pd** 是別名。

  • **merge** 是執行連線操作的函式。

  • **how** 指定連線操作的型別。

示例

在這個示例中,我們將兩個資料框以及 'how' 引數傳遞給 **merge()** 函式,並賦值為 **內連線**。以下是程式碼。

import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
       "Age": [20,40,78,90,38],
       "Language" : ["Python","Java","C","Python","Salesforce"]}

dic2 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
       "Age": [20,40,78,90,38],
       "class" : [10,9,12,9,5]}

data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "inner")
inner_join.head()

輸出

    Name  Age    Language
0   John   20      Python
1   Mark   40        Java
2  Nancy   78           C
3   Sita   90      Python
4    Ram   38  Salesforce

    Name  Age  class
0   John   20     10
1   Mark   40      9
2  Nancy   78     12
3   Sita   90      9
4    Ram   38      5

外連線 (Outer Join)

外連線將返回兩個資料框的所有行,如果行中存在任何缺失資料,則它將填充空值。以下是應用於資料框的外連線語法。

import pandas as pd
pd.merge(dataframe1,dataframe2,how=’outer’

示例

import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
       "Age": [20,40,78,90,38],
       "Language" : ["Python","Java","C","Python","Salesforce"]}

dic2 = {"Name": ["John","Nancy","Sita","Ram"],
       "Age": [20,40,70,38],
       "class" : [10,12,9,5]}

data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "outer")
inner_join.head()

輸出

    Name  Age    Language
0   John   20      Python
1   Mark   40        Java
2  Nancy   78           C
3   Sita   90      Python
4   Ram   38  Salesforce
    Name  Age  class
0   John   20     10
1  Nancy   40     12
2   Sita   70      9
3    Ram   38      5

左連線 (Left Join)

左連線返回左資料框的全部行以及右資料框的所有匹配行。如果右資料框中沒有匹配行,則輸出資料框將在相應的列中填充空值。以下是應用左連線的語法。

import pandas as pd
pd.merge(dataframe1,dataframe2,how=’left’

示例

在此示例中,我們將對兩個輸入資料框應用左連線,然後返回左連線的輸出。

import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
       "Age": [2,40,78,90,38],
       "Language" : ["Python","Java","C","Python","Salesforce"]}

dic2 = {"Name": ["John","Nancy","Sita","Ram"],
       "Age": [20,40,70,38],
       "class" : [10,12,9,5]}

data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "left")
inner_join.head()

輸出

    Name  Age    Language
0   John    2      Python
1   Mark   40        Java
2  Nancy   78           C
3   Sita   90      Python
4    Ram   38  Salesforce
    Name  Age  class
0   John   20     10
1  Nancy   40     12
2   Sita   70      9
3    Ram   38      5

右連線 (Right Join)

右連線返回右資料框的全部行以及左資料框的所有匹配行。如果左資料框中沒有匹配行,則輸出資料框將在相應的列中填充空值。以下是應用右連線的語法。

import pandas as pd
pd.merge(dataframe1,dataframe2,how=’right’

示例

在這個示例中,我們將對兩個輸入資料框應用右連線,然後返回右連線的輸出。

import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
       "Age": [2,40,78,90,38],
       "Language" : ["Python","Java","C","Python","Salesforce"]}

dic2 = {"Name": ["John","Nancy","Sita","Ram"],
       "Age": [20,40,70,38],
       "class" : [10,12,9,5]}

data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "right")
inner_join.head()

輸出

   Name  Age    Language
0   John    2      Python
1   Mark   40        Java
2  Nancy   78           C
3   Sita   90      Python
4    Ram   38  Salesforce
    Name  Age  class
0   John   20     10
1  Nancy   40     12
2   Sita   70      9
3    Ram   38      5

交叉連線 (Cross Join)

交叉連線返回兩個資料框的笛卡爾積;這意味著它返回兩個資料框中所有行的所有可能組合。

更新於:2023年10月20日

230 次檢視

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告