Wie man einfach nach einem Wert in einer Spalte in Pandas DataFrame sucht
Published on
Als Data Scientist wird es eine der häufigsten Aufgaben sein, nach einem bestimmten Wert in einem großen Datensatz zu suchen, insbesondere in Pandas DataFrame. Pandas DataFrame ist ein leistungsstarkes Werkzeug zur Manipulation, Transformation und Analyse von Daten. Wenn Sie jedoch nicht wissen, wie Sie effizient nach einem Wert in einer bestimmten Spalte suchen können, werden Sie möglicherweise mehr Zeit und Aufwand als nötig aufwenden. In dieser Anleitung werden wir verschiedene Techniken zur Suche nach einem Wert in einer DataFrame-Spalte mithilfe von Pandas erkunden, mit praktischen Beispielen und Code-Schnipseln, um Ihnen den Einstieg zu erleichtern.
Möchten Sie Data Visualization schnell und ohne Code aus einem 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 Datenvisualisierung in Jupyter Notebook vereinfachen, indem es Ihren Pandas-Dataframe (und Polars-Dataframe) in eine Tableau-ähnliche Benutzeroberfläche für visuelle Exploration verwandelt.
Pandas DataFrame
Bevor wir uns darauf konzentrieren, nach einem Wert in einer Pandas DataFrame-Spalte zu suchen, wollen wir zuerst ein besseres Verständnis davon bekommen, was ein Pandas DataFrame ist. Ein Pandas DataFrame ist eine zweidimensionale, veränderbare, tabellarische Datenstruktur mit beschrifteten Achsen (Zeilen und Spalten). Es ähnelt einer Tabellenkalkulation oder einer SQL-Tabelle und ist eine der am häufigsten verwendeten Datenstrukturen für die Datenanalyse und -manipulation in Python. Die Zeilen und Spalten haben jeweils eindeutige Beschriftungen, die zum Zugriff auf einzelne Elemente im DataFrame verwendet werden können.
Hier ist ein Beispiel für das Erstellen eines Pandas DataFrame mithilfe eines Wörterbuchs:
import pandas as pd
data = {'Name': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
'Age': [27, 21, 24, 30, 29],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female'],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Rio de Janeiro']}
df = pd.DataFrame(data)
print(df)
Ausgabe:
Name Age Gender City
0 John 27 Male New York
1 Emma 21 Female London
2 Peter 24 Male Paris
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de Janeiro
In diesem Beispiel haben wir ein Pandas DataFrame mit vier Spalten erstellt, nämlich 'Name', 'Age', 'Gender' und 'City'. Die Zeilen sind mit ganzen Zahlen ab 0 beschriftet. Wir können auf einzelne Spalten und Zeilen mithilfe verschiedener Methoden wie Indizierung, Slicing und Boolescher Indizierung zugreifen.
Suche nach einem Wert in einer DataFrame-Spalte
Angenommen, wir möchten nun nach einem bestimmten Wert in der 'Age'-Spalte des oben genannten Pandas DataFrame suchen. Wir können den folgenden Code verwenden, um dies zu erreichen:
value = 27
result = df[df['Age'] == value]
print(result)
Ausgabe:
Name Age Gender City
0 John 27 Male New York
In diesem Beispiel haben wir den Wert 27 der Variable 'value' zugewiesen. Dann haben wir die Boolesche Indizierung verwendet, um nur die Zeilen auszuwählen, bei denen die 'Age'-Spalte den Wert 27 aufweist. Schließlich haben wir das resultierende DataFrame gedruckt, das nur eine Zeile enthält, bei der die 'Age'-Spalte 27 ist.
Wir können auch andere Boolesche Operatoren wie >
, <
, >=
, <=
und !=
verwenden, um nach Werten in einer DataFrame-Spalte zu suchen. Um beispielsweise nach allen Zeilen zu suchen, bei denen die 'Age'-Spalte größer oder gleich 25 ist, können wir den folgenden Code verwenden:
result = df[df['Age'] >= 25]
print(result)
Ausgabe:
Name Age Gender City
0 John 27 Male New York
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de Janeiro
Dieser Code wählt nur die Zeilen aus, bei denen die 'Age'-Spalte größer oder gleich 25 ist.
Wir können auch die Methode 'isin()' verwenden, um nach mehreren Werten in einer DataFrame-Spalte zu suchen. Um beispielsweise nach allen Zeilen zu suchen, bei denen die 'City'-Spalte entweder 'Paris' oder 'Tokyo' ist, können wir den folgenden Code verwenden:
cities = ['Paris', 'Tokyo']
result = df[df['City'].isin(cities)]
print(result)
Ausgabe:
Name Age Gender City
2 Peter 24 Male Paris
3 David 30 Male Tokyo
Dieser Code wählt nur die Zeilen aus, bei denen die 'City'-Spalte entweder 'Paris' oder 'Tokyo' entspricht.
Es ist erwähnenswert, dass die oben genannten Methoden das ursprüngliche DataFrame nicht verändern. Stattdessen wird eine Kopie des DataFrames erstellt, die den Suchkriterien entspricht.
Verbesserung der Suchleistung
Bei der Arbeit mit großen Datensätzen kann die Suche nach Werten in einer DataFrame-Spalte eine zeitaufwändige Aufgabe sein. Um die Suchleistung zu verbessern, können wir die Methode 'loc[]' verwenden, mit der eine spezifische Spalten- und Zeilenauswahl basierend auf der Beschriftung möglich ist. Durch die Verwendung dieser Methode können wir die gesamte DataFrame-Suche vermeiden und uns nur auf die Zeilen konzentrieren, die unsere Suchkriterien erfüllen.
Angenommen, wir möchten beispielsweise nach dem Wert 27 in der 'Age'-Spalte eines großen DataFrame mit Millionen von Zeilen suchen. Wir können den folgenden Code verwenden, um dies zu erreichen:
value = 27
result = df.loc[df['Age'] == value]
print(result)
Ausgabe:
Name Age Gender City
0 John 27 Male New York
In diesem Beispiel haben wir die Methode 'loc[]' verwendet, um nur die Zeilen auszuwählen, bei denen die 'Age'-Spalte den Wert 27 aufweist. Diese Methode ist viel schneller als die Boolesche Indizierung auf dem gesamten DataFrame, da sie nur auf den Zeilen mit den Suchkriterien operiert. Eine weitere Möglichkeit, die Suchleistung zu verbessern, besteht darin, das DataFrame nach der interessierenden Spalte zu sortieren und dann die binäre Suche zu verwenden, um nach dem Wert zu suchen. Um das DataFrame nach der Spalte 'Alter' zu sortieren, können wir den folgenden Code verwenden:
df.sort_values(by='Alter', inplace=True)
print(df)
Ausgabe:
Name Alter Geschlecht Stadt
1 Emma 21 weiblich London
2 Peter 24 männlich Paris
0 John 27 männlich New York
4 Sophie 29 weiblich Rio de Janeiro
3 David 30 männlich Tokyo
Dieser Code sortiert das DataFrame nach der Spalte 'Alter' in aufsteigender Reihenfolge. Dann können wir die Methode 'searchsorted()' verwenden, um eine binäre Suche in der Spalte 'Alter' nach dem Wert durchzuführen. Hier ist ein Beispiel:
wert = 27
ergebnis = df.iloc[df['Alter'].searchsorted(wert)]
print(ergebnis)
Ausgabe:
Name Emma
Alter 21
Geschlecht weiblich
Stadt London
Name: 1, dtype: object
In diesem Beispiel haben wir die Methode 'searchsorted()' verwendet, um den Wert 27 in der Spalte 'Alter' zu suchen. Diese Methode gibt den Index des Werts zurück, wenn er in der Spalte existiert, oder den Index des nächsten höheren Werts, wenn er nicht existiert. Dann haben wir die Methode 'iloc[]' verwendet, um die Zeile mit dem angegebenen Index abzurufen.
Fazit
Die Suche nach einem Wert in einer DataFrame-Spalte ist eine gängige Aufgabe in der Datenanalyse und -manipulation, insbesondere in Pandas DataFrame. In diesem Leitfaden haben wir verschiedene Techniken zur Suche nach einem Wert in einer DataFrame-Spalte mit Pandas erkundet, mit praktischen Beispielen und Code-Schnipseln, um Ihnen den Einstieg zu erleichtern. Wir haben auch Möglichkeiten zur Verbesserung der Suchleistung diskutiert, wie z.B. die Verwendung der Methode 'loc[]' oder eine binäre Suche in einem sortierten DataFrame. Mit diesen Techniken können Sie die benötigten Daten leicht, genau und schnell extrahieren.
Links
- Wie man ein Pandas DataFrame in eine Python-Liste umwandelt
- Wie man ein Pandas DataFrame nach dem Index sortiert
- Wie man eine Pandas Series in ein DataFrame umwandelt
- Wie man eine Liste von Spaltennamen im PySpark Dataframe erstellt
- Wie man ein Pandas DataFrame in Python anhängt
- Wie man eine Spalte in einem Pandas DataFrame umbenennt
Häufig gestellte Fragen
-
Wie suche ich nach einem bestimmten Wert in einer DataFrame-Spalte?
Um nach einem bestimmten Wert in einer DataFrame-Spalte zu suchen, können Sie die boolische Indizierung verwenden. Sie können eine boolsche Bedingung erstellen, indem Sie die Spaltenwerte mit dem gewünschten Wert vergleichen und diese Bedingung dann verwenden, um das DataFrame zu filtern. Das resultierende DataFrame enthält nur die Zeilen, in denen der Spaltenwert mit dem gewünschten Wert übereinstimmt.
-
Wie bekomme ich einen bestimmten Wert aus einer Spalte in Pandas?
Um einen bestimmten Wert aus einer Spalte in Pandas zu bekommen, können Sie den Indexoperator
[]
verwenden. Geben Sie den Spaltennamen innerhalb der Klammern und den Zeilenindex an, um den Wert an dieser spezifischen Stelle abzurufen. Der zurückgegebene Wert ist der einzelne Wert aus der Spalte. -
Wie bekomme ich einen einzelnen Wert aus einem DataFrame?
Um einen einzelnen Wert aus einem DataFrame zu bekommen, können Sie den Zugriffsoperator
at
oderiat
verwenden. Derat
-Operator ermöglicht den Zugriff auf einen Wert, indem Sie das Zeilenlabel und den Spaltennamen angeben, während deriat
-Operator den Zugriff auf einen Wert ermöglicht, indem Sie den Zeilenindex und den Spaltenindex angeben. Diese Operatoren bieten eine schnelle und effiziente Möglichkeit, einen einzelnen Wert aus einem DataFrame abzurufen.