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

Barbara Streisand
Libérer: 2024-10-20 11:57:30
original
571 Les gens l'ont consulté

How to Efficiently Filter Pandas Data Objects Using Boolean Indexing?

Filtrage efficace des trames de données et des séries Pandas à l'aide de l'indexation booléenne

Dans les scénarios d'analyse de données, l'application de plusieurs filtres pour affiner les résultats est souvent cruciale. Cet article vise à aborder une approche efficace pour enchaîner plusieurs opérations de comparaison sur des objets de données Pandas.

Le défi

L'objectif est de traiter un dictionnaire d'opérateurs relationnels et de les appliquer de manière additive à un Pandas donné. Series ou DataFrame, résultant en un ensemble de données filtré. Cette opération nécessite de minimiser la copie inutile des données, en particulier lorsqu'il s'agit de grands ensembles de données.

Solution : indexation booléenne

Pandas fournit un mécanisme très efficace pour filtrer les données à l'aide de l'indexation booléenne. L'indexation booléenne implique la création de conditions logiques, puis l'indexation des données à l'aide de ces conditions. Prenons l'exemple suivant :

<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>
Copier après la connexion

Cette ligne de code sélectionne toutes les lignes du DataFrame df où la valeur dans la colonne 'col1' est supérieure ou égale à 1. Le résultat est un nouvel objet Series contenant les valeurs filtrées.

Pour appliquer plusieurs filtres, nous pouvons combiner des conditions booléennes à l'aide d'opérateurs logiques comme & (et) et | (ou). Par exemple :

<code class="python">df[(df['col1'] >= 1) & (df['col1'] <= 1)]
Copier après la connexion

Cette opération filtre les lignes où « col1 » est à la fois supérieur ou égal à 1 et inférieur ou égal à 1.

Fonctions d'assistance

Pour simplifier le processus d'application de plusieurs filtres, nous pouvons créer des fonctions d'assistance :

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

def f(x, *b):
    return x[(np.logical_and(*b))]
Copier après la connexion

La fonction b crée une condition booléenne pour une colonne et un opérateur donnés, tandis que f applique plusieurs conditions booléennes à un DataFrame ou une série.

Exemple d'utilisation

Pour utiliser ces fonctions, nous pouvons fournir un dictionnaire de critères de filtrage :

<code class="python">filters = {'>=': [1], '<=': [1]}</code>
Copier après la connexion
<code class="python">b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)
filtered_df = f(df, b1, b2)</code>
Copier après la connexion

Ce code applique les filtres au 'col1' colonne dans le DataFrame df et renvoie un nouveau DataFrame avec les résultats filtrés.

Fonctionnalité améliorée

Pandas 0.13 a introduit la méthode de requête, qui offre un moyen pratique d'appliquer des filtres à l'aide d'expressions de chaîne. Pour les identifiants de colonne valides, le code suivant devient possible :

<code class="python">df.query('col1 <= 1 & 1 <= col1')</code>
Copier après la connexion

Cette ligne réalise le même filtrage que notre exemple précédent en utilisant une syntaxe plus concise.

En utilisant l'indexation booléenne et les fonctions d'assistance, nous pouvons appliquer efficacement plusieurs filtres aux trames de données et aux séries Pandas. Cette approche minimise la copie des données et améliore les performances, en particulier lorsque vous travaillez avec de grands ensembles de données.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!