Data Analysis

Pandas DataFrame Filterung meistern: Ein umfassender Leitfaden

Spread the love

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

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert