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)
交叉連線返回兩個資料框的笛卡爾積;這意味著它返回兩個資料框中所有行的所有可能組合。
廣告