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.
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>
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.
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 & 1 <= col1')</code>
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!