Data Analysis

Pandas DataFrames: Datum-basierte Filterung meistern

Spread the love

Das effiziente Filtern von Pandas DataFrames anhand von Datumsbereichen ist eine entscheidende Fähigkeit in der Datenanalyse. Pandas bietet verschiedene Methoden, um dies zu erreichen, jede mit ihren Stärken und Schwächen. Dieser Artikel untersucht vier gängige Ansätze und vergleicht deren Syntax, Effizienz und Anwendungsfälle.

Inhaltsverzeichnis

Filtern mit Boolescher Maskierung

Die Boolesche Maskierung bietet den grundlegendsten und flexibelsten Ansatz. Sie erstellt ein boolesches Array (Maske), das Zeilen basierend auf angegebenen Bedingungen filtert. Diese Methode ist sehr gut an komplexe Szenarien anpassbar.


import pandas as pd

data = {'Date': pd.to_datetime(['2023-10-26', '2023-11-15', '2023-12-01', '2024-01-10', '2024-02-20']),
        'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

start_date = pd.to_datetime('2023-11-01')
end_date = pd.to_datetime('2024-01-01')

mask = (df['Date'] >= start_date) & (df['Date'] <= end_date)
filtered_df = df[mask]  #Effizienter als df.loc[mask]
print(filtered_df)

Verwendung der .query()-Methode

Die .query()-Methode bietet eine lesbarere und prägnantere Alternative zum Filtern. Sie ist besonders bei komplexen Bedingungen von Vorteil.


start_date = '2023-11-01'
end_date = '2024-01-01'

filtered_df = df.query('@start_date <= Date <= @end_date')
print(filtered_df)

Anwendung der .isin()-Methode

Die .isin()-Methode eignet sich, wenn Sie Zeilen basierend auf einer Liste spezifischer Daten auswählen müssen, anstatt eines kontinuierlichen Bereichs. Sie ist weniger effizient für große kontinuierliche Bereiche.


dates_to_include = pd.to_datetime(['2023-11-15', '2023-12-01'])
filtered_df = df[df['Date'].isin(dates_to_include)]
print(filtered_df)

Nutzen der .between()-Methode

Die .between()-Methode bietet einen optimierten Ansatz zur Auswahl von Zeilen innerhalb eines kontinuierlichen Datumsbereichs. Sie ist effizient und einfach zu lesen.


start_date = pd.to_datetime('2023-11-01')
end_date = pd.to_datetime('2024-01-01')

filtered_df = df[df['Date'].between(start_date, end_date, inclusive='both')] #inclusive Argument hinzugefügt zur besseren Übersicht
print(filtered_df)

Zusammenfassend bietet Pandas verschiedene Methoden für das datumsbasierte Filtern. Die optimale Wahl hängt von Ihren spezifischen Anforderungen und Ihrem Codierungsstil ab. Die Boolesche Maskierung bietet maximale Flexibilität, .query() verbessert die Lesbarkeit und .between() vereinfacht die Auswahl kontinuierlicher Bereiche. Stellen Sie sicher, dass Ihre Datumsspalte den Datentyp datetime64 hat, um eine optimale Leistung zu gewährleisten.

Schreibe einen Kommentar

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