Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation und -analyse. Das Filtern von DataFrame-Zeilen basierend auf Spaltenwerten ist eine grundlegende Aufgabe in der Datenverarbeitung. Dieser Artikel untersucht verschiedene Techniken zum effizienten Filtern von Pandas DataFrames, von einfachen bis zu komplexen Szenarien.
Inhaltsverzeichnis
- Grundlegendes Filtern: Einzelne Spalte, einzelne Bedingung
- Negation: Auswahl von Zeilen, die nicht mit einer Bedingung übereinstimmen
- Numerische Vergleiche: Größer als, Kleiner als usw.
- Kombination von Bedingungen: UND- und ODER-Operationen
- Erweitertes Filtern: Mehrere Spalten und komplexe Logik
- Effizientes Filtern mit
isin()
Grundlegendes Filtern: Einzelne Spalte, einzelne Bedingung
Die einfachste Form des Filterns besteht darin, Zeilen auszuwählen, in denen eine bestimmte Spalte mit einem bestimmten Wert übereinstimmt. Dies wird mit boolescher Indizierung erreicht.
import pandas as pd
# Beispiel-DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
# Auswahl der Zeilen, bei denen City 'London' ist
london_residents = df[df['City'] == 'London']
print(london_residents)
Dieser Code erstellt eine boolesche Maske (df['City'] == 'London'
), die True
ist, wenn die Spalte ‚City‘ ‚London‘ ist, und False
andernfalls. Diese Maske wird dann verwendet, um den DataFrame zu indizieren und nur die Zeilen auszuwählen, bei denen die Maske True
ist.
Negation: Auswahl von Zeilen, die nicht mit einer Bedingung übereinstimmen
Um Zeilen auszuwählen, bei denen eine Spalte keinen bestimmten Wert enthält, negieren Sie die boolesche Bedingung mit dem Operator !=
.
# Auswahl der Zeilen, bei denen City NICHT 'London' ist
not_london_residents = df[df['City'] != 'London']
print(not_london_residents)
Numerische Vergleiche: Größer als, Kleiner als usw.
Für numerische Spalten verwenden Sie Vergleichsoperatoren (>
, <
, >=
, <=
), um nach Wertebereichen zu filtern.
# Auswahl der Zeilen, bei denen Age größer als 25 ist
older_than_25 = df[df['Age'] > 25]
print(older_than_25)
# Auswahl der Zeilen, bei denen Age kleiner gleich 25 ist
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)
Kombination von Bedingungen: UND- und ODER-Operationen
Filtern Sie basierend auf mehreren Spaltenwerten, indem Sie boolesche Bedingungen mit den logischen Operatoren &
(UND) und |
(ODER) kombinieren. Schließen Sie jede Bedingung in Klammern ein.
# Auswahl der Zeilen, bei denen City 'London' UND Age größer als 25 ist
london_and_older = df[(df['City'] == 'London') & (df['Age'] > 25)]
print(london_and_older)
# Auswahl der Zeilen, bei denen City 'London' ODER Age größer als 25 ist
london_or_older = df[(df['City'] == 'London') | (df['Age'] > 25)]
print(london_or_older)
Erweitertes Filtern: Mehrere Spalten und komplexe Logik
Für komplexe Szenarien bietet die Methode query()
eine verbesserte Lesbarkeit.
# Verwendung von query() für bessere Lesbarkeit
complex_filter = df.query('(City == "London" and Age > 25) or (Age < 23)')
print(complex_filter)
Effizientes Filtern mit isin()
Die Methode isin()
bietet eine prägnante Möglichkeit zu überprüfen, ob Werte in einer Liste enthalten sind.
cities_to_include = ['London', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)
Dieser Artikel hat verschiedene Techniken zum Filtern von DataFrames in Pandas gezeigt. Die Wahl der richtigen Methode hängt von der Komplexität Ihrer Filterkriterien ab. Denken Sie daran, Klammern bei logischen Operatoren korrekt zu verwenden, um genaue Ergebnisse zu gewährleisten.