Wie kann man Pandas-Datenstrukturen mithilfe der booleschen Indizierung effizient filtern?

DDD
Freigeben: 2024-10-20 12:53:29
Original
753 Leute haben es durchsucht

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

Effiziente Filterung von Pandas-Datenstrukturen mithilfe der booleschen Indizierung

Pandas, eine beliebte Python-Bibliothek zur Datenmanipulation, bietet effiziente Möglichkeiten zum Filtern von Datenrahmen und Serienobjekten. Wenn mehrere Filter nacheinander angewendet werden müssen, ist es wichtig, den Prozess zu optimieren, um unnötiges Kopieren von Daten zu vermeiden.

Boolesche Indizierung: Ein überlegener Ansatz

Herkömmliche Methoden, die reindex() verwenden, führen zu Datenduplizierung und sind für große Datenmengen ineffizient. Die boolesche Indizierung, eine Funktion von Pandas und NumPy, bietet eine schnellere Alternative.

Betrachten Sie das folgende Beispiel:

<code class="python">import pandas as pd

df = pd.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]})

def b(x, col, op, n): 
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]

b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)

filtered_df = f(df, b1, b2)</code>
Nach dem Login kopieren

Dieser Ansatz verwendet die boolesche Indizierung, um die Filtervorgänge effizient durchzuführen. Die b-Funktion erstellt boolesche Reihenobjekte und die f-Funktion kombiniert sie mithilfe der logischen Operatoren von NumPy. Das Ergebnis ist ein neuer DataFrame mit nur den Zeilen, die die angegebenen Kriterien erfüllen.

Pandas' Abfragemethode für verbesserte Leistung

In Pandas Version 0.13 und höher bietet die Abfragemethode eine Alternative zu explizit Kombinieren boolescher Reihen. Es nutzt NuMexpr für eine effiziente Auswertung und bietet eine einfachere Syntax:

<code class="python">filtered_df = df.query('col1 <= 1 &amp; 1 <= col1')</code>
Nach dem Login kopieren

Erweiterbarkeit auf DataFrames

Die für Serienobjekte beschriebenen Techniken können problemlos auf DataFrames erweitert werden. Jeder Filter, den Sie anwenden, wirkt sich auf den ursprünglichen DataFrame aus und schränkt die Ergebnisse schrittweise ein.

Durch die Nutzung der booleschen Indizierung und der optimierten Algorithmen von Pandas können Sie effizient mehrere Filter auf Ihre Datenstrukturen anwenden, ohne die Leistung zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWie kann man Pandas-Datenstrukturen mithilfe der booleschen Indizierung effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage