Die 10 besten Pandas Query-Beispiele und Tools: Ein umfassender Leitfaden
Published on
Pandas ist eine leistungsstarke Python-Bibliothek für Datenmanipulation und -analyse. Eines ihrer mächtigsten Werkzeuge ist die query()
-Funktion. Mit dieser Funktion können Sie Daten in einem DataFrame filtern und manipulieren, indem Sie eine intuitive und effiziente Syntax verwenden. Dieser Artikel wird sich mit den Feinheiten der query()
-Funktion befassen und Ihnen das Wissen vermitteln, das Sie benötigen, um ihr volles Potenzial auszuschöpfen.
Die query()
-Funktion in Pandas funktioniert, indem sie einen booleschen Ausdruck nimmt und ihn mit jeder Zeile in Ihrem DataFrame abgleicht. Nur die Zeilen, die für den Ausdruck True
zurückgeben, werden zurückgegeben und filtern effektiv Ihre Daten. Diese Funktion ist nicht nur leistungsstark, sondern auch effizient und damit ein wesentliches Werkzeug in der Werkzeugkiste eines jeden Datenanalytikers.
Möchten Sie ohne Code schnell Data Visualization aus Python Pandas Dataframe erstellen?
PyGWalker ist eine Python-Bibliothek für explorative Datenanalyse mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Workflow zur Datenanalyse und -visualisierung in Jupyter Notebook vereinfachen, indem es Ihren Pandas DataFrame (und polars DataFrame) in eine benutzerfreundliche Benutzeroberfläche im Stil von Tableau verwandelt.
Teil 1: Das Verständnis von Pandas Query
Was ist eine Pandas Query?
Pandas Query ist eine Funktion in der Pandas-Bibliothek, die es Ihnen ermöglicht, Daten in einem DataFrame mithilfe eines booleschen Ausdrucks zu filtern. Die Funktion gleicht den Ausdruck mit jeder Zeile im DataFrame ab und gibt nur diejenigen Zeilen zurück, für die der Ausdruck True
ergibt. Diese Funktion ist ein leistungsstarkes Werkzeug zur Datenmanipulation und besonders nützlich bei der Arbeit mit großen Datensätzen.
Wie funktioniert Pandas Query?
Pandas Query funktioniert, indem es einen booleschen Ausdruck als Argument nimmt. Dieser Ausdruck wird dann mit jeder Zeile im DataFrame abgeglichen. Wenn der Ausdruck für eine bestimmte Zeile True
ergibt, wird diese Zeile in den Ausgabe-DataFrame aufgenommen. Wenn der Ausdruck False
ergibt, wird die Zeile ausgeschlossen.
Zum Beispiel, betrachten Sie einen DataFrame df
mit einer Spalte 'A'. Wenn wir alle Zeilen filtern möchten, in denen 'A' kleiner als 5 ist, könnten wir die folgende Abfrage verwenden:
df.query('A < 5')
Dies würde einen neuen DataFrame zurückgeben, der nur die Zeilen enthält, in denen 'A' kleiner als 5 ist.
Teil 2: Pandas Query vs Loc
Das Verständnis des Unterschieds
Obwohl sowohl query()
als auch loc[]
zur Datenauswahl in Pandas verwendet werden, funktionieren sie auf leicht unterschiedliche Weise. Die Funktion loc[]
ist eine auf Labels basierte Methode zur Datenauswahl, das heißt, sie wird verwendet, um Daten basierend auf Labels auszuwählen. query()
ist dagegen eine flexiblere Methode, die einen Zeichenkettenausdruck zur Datenauswahl verwendet.
Wenn Sie zum Beispiel Zeilen auswählen möchten, in denen 'A' kleiner als 5 ist, würden Sie loc[]
wie folgt verwenden:
df.loc[df['A'] < 5]
Und mit query()
würden Sie Folgendes verwenden:
df.query('A < 5')
Obwohl beide Methoden dasselbe Ergebnis erzielen, bietet query()
eine lesbarere und prägnantere Syntax, insbesondere bei komplexen Ausdrücken.
Teil 3: Verwendung von Pandas Query zur Datensfilterung
Grundlegende Filterung
Die Hauptverwendung von query()
besteht darin, Daten basierend auf bestimmten Bedingungen zu filtern. Wie wir in den vorherigen Beispielen gesehen haben, können Sie query()
verwenden, um Zeilen auszuwählen, bei denen eine bestimmte Bedingung erfüllt ist. Die Bedingung wird als Zeichenkette angegeben und kann jeden gültigen Python-Ausdruck enthalten.
Wenn Sie zum Beispiel einen DataFrame df
mit den Spalten 'A', 'B' und 'C' haben und alle Zeilen auswählen möchten, bei denen 'A' kleiner als 'B' und 'C' größer als 10 ist, könnten Sie die folgende Abfrage verwenden:
df.query
('A < B and C > 10')
Dies würde einen neuen DataFrame zurückgeben, der nur die Zeilen enthält, bei denen 'A' kleiner als 'B' und 'C' größer als 10 ist.
Filterung mit mehreren Bedingungen
Pandas Query ermöglicht es Ihnen auch, Daten basierend auf mehreren Bedingungen zu filtern. Sie können logische Operatoren wie and
und or
verwenden, um mehrere Bedingungen zu kombinieren.
Wenn Sie zum Beispiel alle Zeilen auswählen möchten, bei denen 'A' kleiner als 5 oder 'B' größer als 10 ist, könnten Sie die folgende Abfrage verwenden:
df.query('A < 5 or B > 10')
Dies würde einen neuen DataFrame zurückgeben, der nur die Zeilen enthält, bei denen entweder 'A' kleiner als 5 oder 'B' größer als 10 ist.
Filterung mit String Contains
Pandas Query kann auch verwendet werden, um Daten basierend auf Zeichenkettenwerten zu filtern. Wenn Sie zum Beispiel einen DataFrame mit einer Spalte 'Name' haben und alle Zeilen auswählen möchten, bei denen 'Name' die Zeichenkette 'John' enthält, könnten Sie die folgende Abfrage verwenden:
df.query('Name.str.contains("John")')
Dies würde einen neuen DataFrame zurückgeben, der nur die Zeilen enthält, bei denen 'Name' die Zeichenkette 'John' enthält.
Teil 4: Fortgeschrittene Verwendung von Pandas Query
Die Verwendung von Query mit DataFrames, die Spaltennamen mit Leerzeichen haben
Wenn Ihr DataFrame Spaltennamen mit Leerzeichen enthält, können Sie dennoch query()
verwenden, indem Sie Rückticks um den Spaltennamen verwenden. Wenn Sie zum Beispiel eine Spalte mit dem Namen 'First Name' haben, könnten Sie die folgende Abfrage verwenden:
df.query('`First Name` == "John"')
Dies würde einen neuen DataFrame zurückgeben, der nur die Zeilen enthält, bei denen 'First Name' 'John' ist.
Die Verwendung von Query zum Auswählen von Zeilen und Spalten
Pandas Query kann auch verwendet werden, um bestimmte Zeilen und Spalten aus einem DataFrame auszuwählen. Wenn Sie zum Beispiel die Spalten 'A' und 'B' für alle Zeilen auswählen möchten, bei denen 'C' größer als 10 ist, könnten Sie die folgende Abfrage verwenden:
df.query('C > 10')[['A', 'B']]
Dies würde ein neues DataFrame zurückgeben, das nur die 'A' und 'B' Spalten für die Zeilen enthält, bei denen 'C' größer als 10 ist.
Teil 5: Optimierung der Pandas-Abfragelleistung
Pandas-Abfrage ist bereits für eine gute Leistung optimiert, aber es gibt einige Dinge, die Sie tun können, um Ihre Abfragen noch schneller auszuführen. Eine der effektivsten Möglichkeiten, die Leistung von Abfragen zu verbessern, besteht darin, vektorisierte Operationen zu verwenden. Dabei handelt es sich um Operationen, die auf gesamte Arrays angewendet werden, anstatt auf einzelne Elemente.
Statt zum Beispiel eine Schleife zu verwenden, um jedes Element in einer Spalte zu durchlaufen, können Sie eine vektorisierte Operation verwenden, um eine Funktion auf die gesamte Spalte auf einmal anzuwenden. Dies kann die Leistung erheblich verbessern, insbesondere bei großen Datensätzen.
Eine weitere Möglichkeit, die Leistung von Abfragen zu verbessern, besteht darin, die Funktion eval()
in Verbindung mit query()
zu verwenden. Die eval()
-Funktion kann komplexe Ausdrücke effizienter auswerten als query()
, und sie kann verwendet werden, um Ihre Abfragen zu beschleunigen.
Wenn Sie zum Beispiel eine komplexe Abfrage haben wie diese:
df.query('A < B and C > D or E < F')
Sie könnten eval()
verwenden, um den Ausdruck effizienter auszuwerten:
df.query(df.eval('A < B and C > D or E < F'))
Teil 6: Pandas-Abfrage für maschinelles Lernen und generative KI
Pandas-Abfrage ist nicht nur nützlich für die Datenanalyse, sondern auch für maschinelles Lernen und generative KI. Durch die Möglichkeit, Daten effizient zu filtern und zu manipulieren, kann query()
Ihnen dabei helfen, Ihre Daten für maschinelles Lernen-Algorithmen vorzubereiten.
Sie können zum Beispiel query()
verwenden, um bestimmte Merkmale aus Ihrem Datensatz auszuwählen oder Ausreißer zu filtern, die sich negativ auf die Leistung Ihres Modells auswirken könnten. Sie können auch query()
verwenden, um neue Merkmale auf der Grundlage vorhandener Merkmale zu erstellen, was die Vorhersagekraft Ihres Modells verbessern kann.
Auch die generative KI, bei der neue Daten auf der Grundlage vorhandener Daten erstellt werden, kann von query()
profitieren. Durch die Möglichkeit, Ihre Daten einfach zu filtern und zu manipulieren, kann Ihnen query()
dabei helfen, vielfältigere und realistischere synthetische Daten zu erstellen.
FAQs
Kann query()
mit DataFrames verwendet werden, die Spaltennamen mit Leerzeichen haben?
Ja, wenn Ihr DataFrame Spaltennamen mit Leerzeichen enthält, können Sie immer noch query()
verwenden, indem Sie Backticks um den Spaltennamen setzen. Wenn Sie zum Beispiel eine Spalte mit dem Namen 'Vorname' haben, könnten Sie die folgende Abfrage verwenden:
df.query('`Vorname` == "John"')
Wie kann Pandas-Abfrage zum Filtern von Daten in einem DataFrame verwendet werden?
Pandas-Abfrage wird verwendet, um Daten basierend auf bestimmten Bedingungen zu filtern. Die Funktion nimmt einen booleschen Ausdruck als Argument, der mit jeder Zeile im DataFrame abgeglichen wird. Wenn der Ausdruck für eine bestimmte Zeile True
ergibt, wird diese Zeile in das Ausgabe-DataFrame aufgenommen.
Was ist der Unterschied zwischen Pandas-Abfrage und loc?
Obwohl sowohl query()
als auch loc[]
für die Datenabfrage in Pandas verwendet werden, funktionieren sie auf leicht unterschiedliche Weise. Die Funktion loc[]
ist eine auf Bezeichnern basierende Methode zur Datenabfrage, was bedeutet, dass sie zur Auswahl von Daten basierend auf Bezeichnern verwendet wird. Andererseits ist query()
eine flexiblere Methode, die einen Zeichenfolgenausdruck zur Datenabfrage verwendet.