Skip to content

Wie man einfach nach einem Wert in einer Spalte in Pandas DataFrame sucht

Updated 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.

PyGWalker für Data Visualization (opens in a new tab)

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

Häufig gestellte Fragen

  1. 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.

  2. 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.

  3. Wie bekomme ich einen einzelnen Wert aus einem DataFrame?

    Um einen einzelnen Wert aus einem DataFrame zu bekommen, können Sie den Zugriffsoperator at oder iat verwenden. Der at-Operator ermöglicht den Zugriff auf einen Wert, indem Sie das Zeilenlabel und den Spaltennamen angeben, während der iat-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.