Maison  >  Article  >  développement back-end  >  Comment filtrer efficacement les DataFrame ou séries Pandas avec plusieurs conditions ?

Comment filtrer efficacement les DataFrame ou séries Pandas avec plusieurs conditions ?

DDD
DDDoriginal
2024-10-20 11:56:02367parcourir

How to Efficiently Filter Pandas DataFrame or Series with Multiple Conditions?

Filtrage efficace d'un dataFrame ou d'une série Pandas avec plusieurs conditions

Pandas fournit un certain nombre de méthodes pour filtrer les données, notamment reindex(), apply() et map() . Cependant, lors de l'application de plusieurs filtres, l'efficacité devient un problème.

Pour un filtrage optimisé, envisagez d'utiliser l'indexation booléenne. Pandas et Numpy prennent en charge l'indexation booléenne, qui opère directement sur le tableau de données sous-jacent sans créer de copies inutiles.

Voici un exemple d'indexation booléenne :

<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>

Cette expression renvoie une série Pandas contenant uniquement les lignes où les valeurs de la colonne 'col1' sont supérieures ou égales à 1.

Pour appliquer plusieurs filtres, utilisez les opérateurs logiques '&' (AND) et '|' (OU). Par exemple :

<code class="python">df[(df['col1'] >= 1) &amp; (df['col1'] <=1 )]</code>

Cette expression renvoie un DataFrame contenant uniquement les lignes où les valeurs de la colonne « col1 » sont comprises entre 1 et 1 inclus.

Pour les fonctions d'assistance, envisagez de définir des fonctions qui prenez un DataFrame et renvoyez une série booléenne, vous permettant de combiner plusieurs filtres à l'aide d'opérateurs logiques.

<code class="python">def b(x, col, op, n):
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]</code>

Pandas 0.13 introduit la méthode query(), qui fournit un moyen plus efficace d'exprimer des conditions de filtrage complexes. En supposant des identifiants de colonne valides, le code suivant filtre DataFrame df en fonction de plusieurs conditions :

<code class="python">df.query('col1 <= 1 &amp; 1 <= col1')</code>

En résumé, l'indexation booléenne offre une méthode efficace pour appliquer plusieurs filtres aux Pandas DataFrames ou Series sans créer de copies inutiles. Utilisez des opérateurs logiques et des fonctions d'assistance pour combiner plusieurs filtres pour des fonctionnalités étendues.

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