In diesem Artikel werden wir die Verwendung der Merge-Funktion, der Concat-Funktion und verschiedener Arten von Join-Operationen in Pandas Python untersuchen. Alle Beispiele werden über den pycharm-Editor ausgeführt. Fangen wir mit den Details an!
Verwendung der Zusammenführungsfunktion
Die grundlegende häufig verwendete Syntax der Funktion merge() ist unten angegeben:
pd.merge(df_obj1, df_obj2, how='inner', on=Keine, left_on=Keine, right_on=Keine)Lassen Sie uns die Details der Parameter erklären:
Die ersten zwei df_obj1 und df_obj2 Argumente sind die Namen der DataFrame-Objekte oder -Tabellen.
Das "Wie”-Parameter wird für verschiedene Arten von Join-Operationen verwendet, z. B. „links, rechts, außen und innen“. Die Merge-Funktion verwendet standardmäßig die „innere“ Join-Operation.
Das Argument "auf" enthält den Spaltennamen, für den der Join-Vorgang ausgeführt wird. Diese Spalte muss in beiden DataFrame-Objekten vorhanden sein.
In den Argumenten „left_on“ und „right_on“ ist „left_on“ der Name des Spaltennamens als Schlüssel im linken DataFrame. Das „right_on“ ist der Name der Spalte, die als Schlüssel aus dem rechten DataFrame verwendet wird.
Um das Konzept des Zusammenführens von DataFrames näher zu erläutern, haben wir zwei DataFrame-Objekte genommen – Produkt und Kunde. Die folgenden Details sind im Produkt-DataFrame enthalten:
Produkt=pd.Datenrahmen('Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zähnebürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Der Kunden-DataFrame enthält folgende Angaben:
Kunde=pd.Datenrahmen('ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
Verbinden Sie DataFrames mit einem Schlüssel
Wir können online verkaufte Produkte und die Kunden, die sie gekauft haben, leicht finden. Basierend auf einem Schlüssel „Product_ID“ haben wir also die Inner-Join-Operation für beide DataFrames wie folgt durchgeführt:
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Stadt':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,on='Product_ID'))
Die folgende Ausgabe wird im Fenster angezeigt, nachdem der obige Code ausgeführt wurde:
Wenn die Spalten in beiden DataFrames unterschiedlich sind, schreiben Sie den Namen jeder Spalte explizit mit den Argumenten left_on und right_on wie folgt:
Pandas als pd importierenProdukt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zähnebürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Stadt':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,left_on='Product_Name',right_on='Product_Purchased'))
Die folgende Ausgabe wird auf dem Bildschirm angezeigt:
Verbinden Sie DataFrames mit How Argument
In den folgenden Beispielen erklären wir vier Arten von Joins-Operationen auf Pandas DataFrames:
- Inner Join
- Äußerer Join
- Linker Beitritt
- Rechter Beitritt
Inneres Mitmachen bei Pandas
Wir können einen Inner Join auf mehreren Schlüsseln durchführen. Um weitere Details zu den Produktverkäufen anzuzeigen, nehmen Sie Product_ID, Seller_City aus dem Produkt-DataFrame und Product_ID und „Customer_City“ aus dem Kunden-DataFrame, um herauszufinden, dass entweder der Verkäufer oder der Kunde zur gleichen Stadt gehört. Implementieren Sie die folgenden Codezeilen:
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,how='inner',left_on=['Product_ID','Seller_City'],right_on=['Product_ID','Customer_City']))
Das folgende Ergebnis wird im Fenster angezeigt, nachdem der obige Code ausgeführt wurde:
Vollständige/äußere Teilnahme an Pandas
Outer Joins geben sowohl rechte als auch linke DataFrames-Werte zurück, die entweder Übereinstimmungen haben. Um den Outer-Join zu implementieren, legen Sie das „how“-Argument als „outer“ fest. Lassen Sie uns das obige Beispiel modifizieren, indem wir das Outer-Join-Konzept verwenden. Im folgenden Code werden alle Werte des linken und rechten DataFrames zurückgegeben.
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,on='Product_ID',how='outer'))
Setzen Sie das Indikatorargument auf „Wahr“ s. Sie werden feststellen, dass die neue Spalte „_merge“ am Ende hinzugefügt wird.
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,on='Product_ID',how='outer',indicator=True))
Wie Sie im folgenden Screenshot sehen können, erklären die Werte der Zusammenführungsspalte, welche Zeile zu welchem DataFrame gehört.
Links Mach mit bei Pandas
Left Join zeigt nur Zeilen des linken DataFrame an. Es ist ähnlich dem äußeren Join. Ändern Sie also den Argumentwert "wie" mit "links". Versuchen Sie den folgenden Code, um die Idee von Left Join zu implementieren:
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,on='Product_ID',how='left'))
Mach mit bei Pandas
Der rechte Join hält alle rechten DataFrame-Zeilen rechts zusammen mit den Zeilen, die auch im linken DataFrame vorkommen. In diesem Fall wird das Argument „wie“ als „richtiger“ Wert gesetzt. Führen Sie den folgenden Code aus, um das richtige Join-Konzept zu implementieren:
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.merge(product,customer,on='Product_ID',how='right'))
Im folgenden Screenshot sehen Sie das Ergebnis, nachdem Sie den obigen Code ausgeführt haben:
Verbinden von DataFrames mit der Funktion Concat()
Zwei DataFrames können mit der Concat-Funktion verbunden werden. Die grundlegende Syntax der Verkettungsfunktion ist unten angegeben:
pd.concat([df_obj1, df_obj_2]))Zwei DataFrames-Objekte werden als Argumente übergeben.
Verbinden wir sowohl das DataFrames-Produkt als auch den Kunden über die concat-Funktion. Führen Sie die folgenden Codezeilen aus, um zwei DataFrames zu verbinden:
# Pandas-Bibliothek importierenPandas als pd importieren
Produkt=pd.Datenrahmen(
'Produkt_ID':[101,102,103,104,105,106,107],
'Product_Name':['Kopfhörer','Tasche','Schuhe','Smartphone','Zahnbürste','Armbanduhr','Laptop'],
'Kategorie':['Elektronik','Mode','Mode','Elektronik','Lebensmittel','Mode','Elektronik'],
'Preis':[300.0,1000.50.2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karatschi','Rawalpindi','Islamabad','Karatschi','Faisalabad']
)
Kunde=pd.Datenrahmen(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Alter':[20,21,15,10,31,52,15,18,16],
'Produkt_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['Kopfhörer','NA','Armbanduhr','NA','Schuhe','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
drucken (pd.concat([Produkt,Kunde]))
Fazit:
In diesem Artikel haben wir die Implementierung der Funktionen merge(), concat() und Joins in Pandas Python besprochen. Mit den oben genannten Methoden können Sie ganz einfach zwei DataFrames verbinden und lernen. So implementieren Sie die Join-Operationen „innen, außen, links und rechts“ in Pandas. Hoffentlich führt Sie dieses Tutorial bei der Implementierung der Join-Operationen für verschiedene Arten von DataFrames. Bitte teilen Sie uns Ihre Schwierigkeiten im Fehlerfall mit.