🐼 Sortieren, Filtern & Kombinieren von DataFrames#
🔁 Sortieren mit sort_values()#
df.sort_values("Alter")
➡️ Sortiert aufsteigend nach einer Spalte
df.sort_values("Note", ascending=False)
➡️ Sortiert absteigend
🔹 Nach mehreren Spalten sortieren:#
df.sort_values(["Studiengang", "Note"])
🔍 Logische Filter & Kombinationen#
🔸 Einfache Filter:#
df[df["Note"] < 2.0]
🔸 Mehrere Bedingungen kombinieren:#
df[(df["Note"] < 2.0) & (df["Studiengang"] == "Informatik")]
Wichtig: Immer Klammern um jede Bedingung und & statt and, | statt or
🔗 Kombinieren von DataFrames#
🔸 Methode 1: pd.concat()
#
Zum aneinanderhängen von Tabellen (wie Zeilen kopieren)
df_neu = pd.concat([df1, df2])
Option
axis=0
(Standard): Zeilen anhängenOption
axis=1
: Spalten nebeneinanderstellen
🔸 Methode 2: pd.merge()
#
Zum Verknüpfen von Tabellen nach Spalte, ähnlich wie JOIN in SQL
df_gesamt = pd.merge(df1, df2, on="Name")
Kombiniert beide Tabellen, wo die Spalte “Name” übereinstimmt
Andere Modi: how=”inner”, how=”left”, how=”outer” (wie SQL-Joins)
📄 Beispiel: Zwei CSV-Dateien verbinden#
🔹 personen.csv#
Name,Alter
Anna,22
Ben,23
Clara,21
🔹 studiengang.csv#
Name,Studiengang
Anna,Informatik
Ben,BWL
Clara,Informatik
🧱 Schrittweise Lösung:#
import pandas as pd
# CSV-Dateien laden
personen = pd.read_csv("personen.csv")
studiengaenge = pd.read_csv("studiengang.csv")
# Tabellen zusammenführen
df = pd.merge(personen, studiengaenge, on="Name")
print(df)
➡️ Ergebnis:
Name Alter Studiengang
0 Anna 22 Informatik
1 Ben 23 BWL
2 Clara 21 Informatik
✅ Zusammenfassung#
Technik |
Beispiel |
---|---|
Sortieren |
|
Filtern mit Bedingung |
|
Kombination mit merge |
|
Kombination mit concat |
|
Mehrere Bedingungen |
(A) & (B) mit Klammern |
🔧 Übung: Daten sinnvoll verbinden#
📄 Gegeben:#
mitarbeiter.csv mit “ID”, “Name”, “Abteilung”
ID,Name,Abteilung
101,Anna Schulz,IT
102,Ben Meier,HR
103,Clara Lange,IT
104,David Koch,Marketing
105,Ella Frank,HR
106,Felix Nowak,Finanzen
gehaelter.csv mit “ID”, “Gehalt”
ID,Gehalt
101,4500
102,3900
103,4800
104,4100
105,3700
106,5300
✅ Aufgabe:#
Lade beide Dateien mit pd.read_csv()
Füge sie mit merge() anhand der ID-Spalte zusammen
Filtere alle Personen mit Gehalt > 4000
Sortiere nach Abteilung und dann nach Gehalt
Optional: Speichere das Ergebnis als auswertung.csv
✅ Lösung:#
💡 Lösung anzeigen
# Zusammenfügen
df = pd.merge(mitarbeiter, gehaelter, on="ID")
# Filtern und sortieren
df = df[df["Gehalt"] > 4000].sort_values(["Abteilung", "Gehalt"], ascending=[True, False])