Pandas `merge()`: Das Verbinden von DataFrames im Detail
Schlagwörter: Pandas, Datenanalyse, DataFrame, Datenverknüpfung
Einführung
Pandas ist eine in der Datenanalyse weit verbreitete Python-Bibliothek. Eine ihrer Kernfunktionen ist `merge()`, die es ermöglicht, zwei oder mehr DataFrame-Objekte auf der Grundlage von gemeinsamen Spalten (oder Indizes) zu kombinieren. Diese Funktion ist essenziell, um Daten aus verschiedenen Quellen zu vereinen und tiefere Einblicke zu gewinnen.
In diesem Artikel werden wir die `merge()`-Funktion von Pandas eingehend untersuchen. Wir behandeln Syntax, Parameter, Optionen und typische Anwendungsfälle. Durch Beispiele und Code-Ausschnitte wird das Verständnis gefördert.
Syntax der `merge()`-Funktion
Die allgemeine Struktur der `merge()`-Funktion sieht wie folgt aus:
python
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False)
Parameter im Detail:
- left: Der erste DataFrame für den Merge-Vorgang.
- right: Der zweite DataFrame, der mit dem ersten kombiniert werden soll.
- how: Die Art des Merges, die bestimmt, welche Zeilen in das Ergebnis einfließen. Mögliche Werte sind: ‚inner‘, ‚left‘, ‚right‘ oder ‚outer‘.
- on: Die Spalte oder Liste von Spalten, die als Schlüssel für die Zusammenführung dienen.
- left_on: Spaltenname(n) aus dem linken DataFrame, die für den Merge verwendet werden.
- right_on: Spaltenname(n) aus dem rechten DataFrame, die für den Merge verwendet werden.
- left_index: Ein boolescher Wert, der angibt, ob der Index des linken DataFrames als Schlüssel dienen soll.
- right_index: Ein boolescher Wert, der angibt, ob der Index des rechten DataFrames als Schlüssel dienen soll.
Optionen der `merge()`-Funktion
Die Funktion bietet darüber hinaus einige Optionen zur Feinabstimmung:
- indicator: Fügt eine Spalte namens ‚_merge‘ hinzu, die den Typ des Merges für jede Zeile kennzeichnet.
- suffixes: Definiert Suffixe, die an die Namen von Spalten angehängt werden, wenn diese in beiden DataFrames vorkommen.
- copy: Gibt an, ob vor dem Merge eine Kopie der Eingabe-DataFrames erstellt werden soll.
- validate: Überprüft vor dem Merge die Datenkonsistenz der Eingabe-DataFrames.
Anwendungsbereiche
Die `merge()`-Funktion findet in zahlreichen Bereichen der Datenanalyse Anwendung:
- Zusammenführung von Daten aus verschiedenen Quellen: Verbinden von Daten aus Datenbanken, CSV-Dateien und anderen Formaten.
- Datenbereinigung und -anreicherung: Hinzufügen von Informationen aus einer Datenquelle zu einer anderen, um Daten zu vervollständigen und zu verbessern.
- Datentransformation: Erstellung neuer Features oder Spalten durch Zusammenführung von Daten.
- Datenaggregation: Zusammenfassung von Daten aus mehreren Quellen, um beispielsweise Mittelwerte zu berechnen.
Beispiele zur Veranschaulichung
Beispiel 1: Einfache Zusammenführung
python
import pandas as pd
left_df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Charlie']
})
right_df = pd.DataFrame({
'id': [2, 3, 4],
'age': [25, 30, 35]
})
merged_df = pd.merge(left_df, right_df, on='id')
print(merged_df)
Ausgabe:
id name age
0 2 Bob 25
1 3 Charlie 30
Beispiel 2: Zusammenführung mit mehreren Schlüsseln
python
left_df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Charlie'],
'city': ['New York', 'London', 'Paris']
})
right_df = pd.DataFrame({
'id': [2, 3, 4],
'age': [25, 30, 35],
'city': ['London', 'Paris', 'Berlin']
})
merged_df = pd.merge(left_df, right_df, on=['id', 'city'])
print(merged_df)
Ausgabe:
id name city age
0 2 Bob London 25
1 3 Charlie Paris 30
Beispiel 3: Zusammenführung basierend auf Indizes
python
left_df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Charlie']
}, index=['a', 'b', 'c'])
right_df = pd.DataFrame({
'age': [25, 30, 35]
}, index=['b', 'c', 'd'])
merged_df = pd.merge(left_df, right_df, left_index=True, right_index=True)
print(merged_df)
Ausgabe:
id name age
0 2 Bob 25
1 3 Charlie 30
Schlussfolgerung
Die `merge()`-Funktion in Pandas ist ein vielseitiges Werkzeug für die Datenintegration und -analyse. Durch flexible Konfigurationsmöglichkeiten können Datenwissenschaftler und Analysten Daten aus unterschiedlichen Quellen zusammenführen, um umfassende Analysen und wertvolle Einsichten zu generieren.
Ein gutes Verständnis der `merge()`-Funktion – ihrer Syntax, Parameter und Optionen – ist für eine effiziente Nutzung von Pandas in der Datenmanipulation unerlässlich. Durch praktische Übung und Experimente mit verschiedenen Merge-Szenarien können Datenexperten ihre Fähigkeiten verbessern und fundierte, datengestützte Entscheidungen treffen.
Häufig gestellte Fragen (FAQs)
1. Wann sollte man `how=’left’` oder `how=’right’` verwenden?
– `how=’left’` behält alle Zeilen des linken DataFrames und fügt passende Zeilen aus dem rechten DataFrame hinzu. `how=’right’` behält alle Zeilen des rechten DataFrames und fügt passende Zeilen des linken DataFrames hinzu.
2. Wie verhindert man Duplikate bei einer Zusammenführung?
– Mit der Option `indicator=True` wird eine Spalte ‚_merge‘ hinzugefügt, die die Art des Merges angibt. So können Duplikate herausgefiltert werden.
3. Wie kann man die Reihenfolge der Spalten im Ergebnis beeinflussen?
– Die Spalten des Ergebnisses können durch `sort=True` alphabetisch sortiert werden.
4. Was ist der Unterschied zwischen `inner`, `left` und `right` Merge?
– `inner` gibt nur übereinstimmende Zeilen zurück. `left` gibt alle Zeilen des linken DataFrames und die passenden des rechten zurück. `right` gibt alle Zeilen des rechten DataFrames und die passenden des linken zurück.
5. Wie kann die Leistung der `merge()`-Funktion verbessert werden?
– Das Setzen von Indizes auf den Spalten, die für den Merge genutzt werden, kann die Performance erhöhen.
6. Was bedeutet `left_index=True` oder `right_index=True`?
– Diese Optionen legen fest, dass die Indizes des jeweiligen DataFrames als Schlüssel für den Merge dienen sollen.
7. Kann man mit `merge()` mehr als zwei DataFrames zusammenführen?
– Ja, man kann mehrere DataFrames nacheinander mergen.
8. Wie kann `merge()` mit relationalen Datenbanken genutzt werden?
– Daten aus Datenbanken können mit `pandas.read_sql()` importiert und dann mit `merge()` verknüpft werden.
9. Wie hilft `merge()` bei der Feature-Generierung?
– Durch die Kombination von Daten aus verschiedenen Quellen entstehen neue Features, die nützliche Informationen für Machine Learning liefern.
10. Welche zusätzlichen Möglichkeiten bietet `merge()` noch?
– Die `merge()`-Funktion bietet weitere Optionen, wie beispielsweise das Festlegen von Suffixen für gleiche Spaltennamen und die Beschränkung des Merges auf bestimmte Spalten.