Maison > Article > développement back-end > Comment filtrer efficacement les structures de données Pandas à l'aide de l'indexation booléenne ?
Pandas, une bibliothèque Python populaire pour la manipulation de données, offre des moyens efficaces de filtrer les objets DataFrames et Series. Lorsque plusieurs filtres doivent être appliqués consécutivement, il est essentiel d'optimiser le processus pour éviter la copie inutile des données.
Les méthodes traditionnelles utilisant reindex() entraînent une duplication des données et sont inefficaces pour les grands ensembles de données. L'indexation booléenne, une fonctionnalité de Pandas et NumPy, offre une alternative plus rapide.
Considérez l'exemple suivant :
<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>
Cette approche utilise l'indexation booléenne pour effectuer efficacement les opérations de filtrage. La fonction b crée des objets de série booléenne et la fonction f les combine à l'aide des opérateurs logiques de NumPy. Le résultat est un nouveau DataFrame avec uniquement les lignes qui répondent aux critères spécifiés.
Dans Pandas version 0.13 et supérieure, la méthode de requête fournit une alternative à explicitement combinant des séries booléennes. Il exploite NuMexpr pour une évaluation efficace et offre une syntaxe plus simple :
<code class="python">filtered_df = df.query('col1 <= 1 & 1 <= col1')</code>
Les techniques décrites pour les objets Series peuvent être facilement étendues aux DataFrames. Chaque filtre que vous appliquez agira sur le DataFrame d'origine, affinant progressivement les résultats.
En tirant parti de l'indexation booléenne et des algorithmes optimisés de Pandas, vous pouvez appliquer efficacement plusieurs filtres à vos structures de données sans compromettre les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!