Filtern und Auswählen von Daten mit Python
Swipe um das Menü anzuzeigen
Auswählen und Filtern sind die häufigsten Operationen bei der Datenmanipulation. Auswählen ermöglicht das gezielte Auswählen bestimmter Spalten, während Filtern das Eingrenzen der Zeilen anhand spezifischer Kriterien oder Bedingungen erlaubt.
In den meisten realen Szenarien ist es nicht notwendig, mit jeder einzelnen Spalte oder Zeile eines Datasets zu arbeiten. Große Tabellen können Hunderte von Spalten und Millionen von Zeilen enthalten, von denen die meisten für die jeweilige Analyse irrelevant sein können. In diesem Kapitel wird gezeigt, wie Sie mit den Methoden select() und filter() genau die benötigten Daten herausfiltern können.
Auswählen bestimmter Spalten
Die Methode select() ermöglicht das Erstellen eines neuen DataFrames, der nur die ausgewählten Spalten enthält. Dadurch wird der Speicherbedarf des Clusters reduziert und die Ergebnisse werden übersichtlicher.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Beachte, dass Spark das ursprüngliche df nicht verändert. Stattdessen wird ein neues DataFrame namens selected_df erstellt. Möchte man alle Spalten außer einer auswählen oder während der Auswahl eine Berechnung durchführen, verwendet man eine fortgeschrittenere Syntax. Für grundlegende Aufgaben ist das Übergeben der Spaltennamen als Strings jedoch der Standardansatz.
Filtern von Zeilen mit Bedingungen
Die Methode filter() (oder ihr Alias where()) wirkt wie ein Sieb für die Daten. Es wird eine Bedingung angegeben, und Spark behält nur die Zeilen, bei denen diese Bedingung erfüllt ist.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Es können Standard-Vergleichsoperatoren wie == (gleich), != (ungleich), > (größer als) und < (kleiner als) verwendet werden.
Kombination mehrerer Filter
Häufig müssen mehrere Regeln gleichzeitig angewendet werden. Dafür können Filter verkettet oder logische Operatoren wie "Und" (&) und "Oder" (|) verwendet werden.
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
Beim Kombinieren von Filtern mit & oder | sollte jede einzelne Bedingung immer in Klammern gesetzt werden. Dadurch wird sichergestellt, dass Spark die Logik korrekt auswertet.
Auswahl und Filterung in einem Schritt
Da Spark eine "fluent" API verwendet, können diese Befehle in einer einzigen Codezeile miteinander verkettet werden. Dies ist ein sehr gängiges Muster im professionellen Data Engineering:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Überprüfung der Arbeit
Nach jeder Auswahl oder Filterung empfiehlt es sich, ein count() auszuführen. Wenn Sie mit 10.000 Zeilen beginnen und nach einem Filter 0 Zeilen übrig sind, könnte Ihre Filterbedingung zu streng sein oder einen Tippfehler in den Zeichenfolgenwerten enthalten.
1. Welche Methode würden Sie verwenden, wenn Sie nur 3 Spalten aus einer Tabelle mit 50 Spalten auswählen möchten?
2. Wie filtert man in Python korrekt nach Zeilen, bei denen "Total_Profit" größer als 1000 ist?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen