Python in Excel für die DatenanalyseDaten filtern mit Pandas – Bedingungen in Python in Excel
Filtern als wichtiges Werkzeug für die Datenanalyse
In der Praxis geht es bei Datenanalysen selten darum, den gesamten Datensatz zu betrachten. Viel häufiger möchten Sie gezielt Antworten auf konkrete Fragen erhalten, zum Beispiel:
- Welche Verkäufe liegen über 100 EUR?
- Welche Transaktionen stammen aus Deutschland?
- Welche Produkte enthalten das Wort „Laptop“?
- Welche Verkäufe haben eine hohe Stückzahl?
In Excel würden Sie dafür typischerweise Filter setzen oder Pivot-Tabellen verwenden. Mit Python in Excel geht das deutlich strukturierter – und vor allem reproduzierbar.
Voraussetzung: Um Python in Excel zu nutzen, aktivieren Sie eine Zelle mit =PY in der Bearbeitungsleiste. Anschließend können Sie Pandas und die xl()-Funktion verwenden, um auf Excel-Daten zuzugreifen.
Datensatz in Python laden
Zunächst importieren Sie Pandas und laden die Daten aus der Excel-Datei oder Ihrer jeweiligen Datenquelle:
import pandas as pd
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz
Damit steht der gesamte Datensatz als DataFrame zur Verfügung. Er enthält im folgenden Beispiel die Spalten „Datum“, „Land“, „Stadt“, „Produkt“, „Preis“, „Verkaufsmenge“ und „Vertriebskanal“.
Tipp zum Rückgabetyp: Damit die gefilterte Tabelle direkt in Ihren Excel-Zellen erscheint, stellen Sie in der Bearbeitungsleiste oben links den Ausgabemodus von Python-Objekt auf Excel-Wert um.
Tipp für Datumsspalten: Wenn Ihre Datumsspalte nicht korrekt als Datum erkannt wird, wandeln Sie sie vor dem Filtern um:
umsatz["Datum"] = pd.to_datetime(umsatz["Datum"])
Einfache Filterbedingungen definieren
Nun wollen Sie die Umsatzdaten genauer analysieren. Dazu haben Sie spezielle Fragen formuliert (siehe oben).
Um die jeweiligen Antworten auf der Grundlage Ihres Datensatzes zu finden, definieren Sie die folgenden Befehle mit Python in Excel.
Beispiel: Verkäufe mit Preis über 50 EUR
import pandas as pd
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz[umsatz["Preis"] > 50]
Erklärung:
- umsatz["Preis"] > 50 erzeugt eine Bedingung.
- Pandas filtert alle Zeilen, die diese Bedingung erfüllen.
- Das Ergebnis enthält nur Transaktionen mit höherem Preis.
Hinweis: Beachten Sie, dass Filter mit eckigen Klammern [] definiert werden.
Weitere Beispiele für die Anwendung der Filterfunktion mit Pandas in Python sind:
Verkäufe mit geringer Verkaufsmenge
umsatz[umsatz["Verkaufsmenge"] < 10]
Preise zwischen 50 EUR und 100 EUR
umsatz[umsatz["Preis"].between(50, 100)]
Verkäufe ab einem bestimmten Datum
umsatz[umsatz["Datum"] >= "2024-01-01"]
Beachten Sie hier die Schreibweise des Datums in Pandas: JJJJ-MM-TT (alternativ: MM-TT-JJJJ)
Noch eleganter ist dafür .loc[], das Filtern und Spaltenauswahl in einem Schritt kombiniert:
umsatz.loc[umsatz["Preis"] > 50, ["Produkt", "Preis", "Land"]]
Im nächsten Schritt möchten Sie wissen, wie viele Zeilen das Filterergebnis enthält:
gefiltert = umsatz[umsatz["Preis"] > 50]
len(gefiltert)
Alternativ können Sie auch die folgende Anweisung verwenden:
gefiltert.shape[0]
Datumsbasiertes Filtern – Monat oder Jahr
Neben dem Filtern ab einem bestimmten Datum können Sie auch gezielt nach Jahr oder Monat filtern. Zum Beispiel filtern Sie mit folgendem Befehl alle Datensätze, deren Datum im Monat März (3) liegt.
umsatz[umsatz["Datum"].dt.month == 3]
Entsprechend filtern Sie so alle Datensätze des Jahres 2024:
umsatz[umsatz["Datum"].dt.year == 2024]
Filterbedingungen, die beide erfüllt sein sollen, entsprechen der logischen UND-Beziehung. Dafür gilt für Pandas und Python:
- & bedeutet UND.
- Runde Klammern () um die einzelnen Bedingungen sind zwingend erforderlich.
Der entsprechende Befehl für eine ODER-Bedingung lautet:
umsatz[(umsatz["Land"] == "Deutschland") | (umsatz["Land"] == "Österreich")]
Hier gilt: | (senkrechter Strich) bedeutet ODER.
Besonders lesbare Alternative – die .query()-Methode
Für komplexere Bedingungen bietet Pandas eine sehr übersichtliche Syntax:
umsatz.query("Preis > 50 and Verkaufsmenge > 20")
Hier definieren Sie die UND-Bedingung mit and und die ODER-Bedingung mit or.
umsatz.query("Land == 'Deutschland' or Land == 'Österreich'")
Dynamische Filter aus Excel-Zellen
Sie können Werte direkt aus Zellen einbinden. Das heißt, ändert man den Zellenwert, aktualisiert sich der Filter automatisch. Beispiel: Der Vergleichswert steht in Ihrer Excel-Tabelle in der Zelle B2:
vergleichwert = xl("B2")
umsatz.query("Preis > @vergleichwert")
Ablauf:
- Sie holen den Vergleichswert mit xl("B2") aus der Zelle B2 und übergeben ihn an die Variable vergleichwert.
- Dann selektieren Sie aus dem Datensatz mit umsatz.query alle Daten, für die der Preis größer (>) ist als der vergleichwert (Wert in Zelle B2).
- Die Variable übergeben Sie an die Abfrage mit dem Zeichen @.
Teiltext suchen (Enthält-Filter)
umsatz[umsatz["Produkt"].str.contains("Laptop", na=False)]
Das na=False sorgt dafür, dass leere Zellen keine Fehlermeldung verursachen.
Groß-/Kleinschreibung ignorieren
umsatz[umsatz["Produkt"].str.contains("laptop", case=False, na=False)]
Zeilen ohne leere Werte in der Spalte „Land“ filtern
umsatz.dropna(subset=["Land"])
Explizit leere Werte filtern
umsatz[umsatz["Land"].notna()]
Mehrere Werte gleichzeitig filtern
Wenn Sie mehrere Werte prüfen möchten, ist die Funktion .isin() sehr hilfreich.
Beispiel: Mehrere Länder auswählen
umsatz[umsatz["Land"].isin(["Deutschland", "Schweiz"])]
Das ist deutlich eleganter als viele ODER-Bedingungen.
Kombination der Negation mit .isin()
Möchten Sie mehrere Werte ausschließen, funktioniert das durch die Kombination von ~ und .isin():
Alle Länder außer Deutschland, Österreich und Schweiz
umsatz[~umsatz["Land"].isin(["Deutschland", "Österreich", "Schweiz"])]
Tipp nach dem Filtern: Oft ist es praktisch, den Index zurückzusetzen:
gefiltert = umsatz[~(umsatz["Land"] == "Deutschland")].reset_index(drop=True)
Häufige Fehler beim Filtern mit Python
Gerade am Anfang passieren oft kleine Fehler. Zum Beispiel fehlende Klammern. So ist es richtig:
umsatz[(umsatz["Preis"] > 50) & (umsatz["Verkaufsmenge"] > 20)]
In Pandas-Filtern müssen Sie die Symbole & (Und) und | (Oder) verwenden, da diese auf den gesamten Datensatz gleichzeitig wirken. Ausnahmen bildet die .query()-Methode, dort können Sie and und or schreiben.
Achten Sie auf die genaue Schreibweise der Spaltennamen. Leerzeichen und Sonderzeichen müssen exakt übernommen werden.
Wenn ein Vergleich nicht funktioniert, prüfen Sie den Datentyp der Spalte mit umsatz.dtypes.
Ein häufiger Fehler: Der direkte Vergleich mit None funktioniert in Pandas nicht korrekt, da NaN-Werte sich beim Vergleich anders verhalten. Falsch wäre: umsatz[umsatz["Land"] == None]
Richtig ist:
umsatz[umsatz["Land"].isna()]
Warum Filtern mit Pandas so mächtig ist
Im Vergleich zu manuellem Filtern bietet Pandas entscheidende Vorteile:
- Reproduzierbar: Die Filterlogik bleibt fest im Code gespeichert.
- Keine manuellen Schritte: Bei neuen Daten wird der Filter automatisch korrekt angewendet.
- Komplexität: Sie können beliebig viele Bedingungen verknüpfen, ohne den Überblick zu verlieren – besonders übersichtlich mit .query() und dynamischen Excel-Zellen.
- Große Datenmengen: Pandas arbeitet auch bei Zehntausenden Zeilen extrem schnell.
Tipp für sehr große Datenmengen: Die .query()-Methode ist oft effizienter als die []-Syntax, da sie intern optimiert ist.
Ein komplexes Beispiel für Filter mit Pandas und Python
Hier noch ein Beispiel, das mehrere Filtertechniken kombiniert:
hochwertige_deutschland_online = umsatz.query("Preis > 100 and Land == 'Deutschland'").query("Vertriebskanal == 'Online'").reset_index(drop=True)
Dieser Code filtert
- zuerst nach hohen Preisen und Deutschland,
- anschließend nach dem Vertriebskanal „Online“ und
- setzt den Index zurück – perfekt für eine saubere Ausgabe in Excel.
Möchten Sie dabei nur bestimmte Spalten anzeigen, ergänzen Sie einfach eine Spaltenauswahl:
hochwertige_deutschland_online[["Produkt", "Preis", "Verkaufsmenge"]]
Fazit
Das Filtern von Daten gehört zu den wichtigsten Fähigkeiten in der Datenanalyse. Mit Pandas können Sie einfache Bedingungen formulieren, Text- und Zahlenfilter kombinieren und gezielt genau die Informationen extrahieren, die Sie für Ihre Entscheidung benötigen.
Mit den hier gezeigten Techniken (inklusive .query(), .loc[], Spaltenauswahl und dynamischer Zellverknüpfung) können Sie im nächsten Schritt interaktive Dashboards in Excel bauen.














