Maison  >  Article  >  développement back-end  >  Comment filtrer efficacement les structures de données Pandas à l'aide de l'indexation booléenne ?

Comment filtrer efficacement les structures de données Pandas à l'aide de l'indexation booléenne ?

DDD
DDDoriginal
2024-10-20 12:53:29757parcourir

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

Filtrage efficace des 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.

Indexation booléenne : une approche supérieure

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.

Méthode de requête de Pandas pour des performances améliorées

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

Extensibilité aux DataFrames

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn