Maison > base de données > tutoriel mysql > Comment obtenir le GROUPE de SQL EN AVANT des fonctionnalités avec le filtrage conditionnel Pandas ?

Comment obtenir le GROUPE de SQL EN AVANT des fonctionnalités avec le filtrage conditionnel Pandas ?

Patricia Arquette
Libérer: 2025-01-10 17:35:41
original
510 Les gens l'ont consulté

How to Achieve SQL's GROUP BY HAVING Functionality with Pandas Conditional Filtering?

Filtrage des groupes de données Pandas : équivalent au GROUP BY HAVING de SQL

Dans l'analyse des données, il est souvent nécessaire de filtrer les données en fonction des conditions appliquées au groupe de données. En SQL, la clause HAVING permet ce type de filtrage conditionnel. Dans Pandas, des fonctionnalités similaires peuvent être obtenues en utilisant une combinaison d’opérations de regroupement et de filtrage.

Afin d'appliquer un filtre sur les données groupées dans Pandas, vous pouvez utiliser la méthode de filtrage fournie dans l'objet groupby. Cette méthode accepte une fonction en entrée et l'applique à chaque groupe. Si la fonction renvoie True pour un groupe, le groupe est conservé sinon, il est exclu ;

Considérons l'exemple suivant :

<code class="language-python">import pandas as pd

df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])

# 按列 A 分组数据框
g = df.groupby('A')

# 过滤以包含超过 1 行的组
filtered_df = g.filter(lambda x: len(x) > 1)

print(filtered_df)</code>
Copier après la connexion

Sortie :

<code>   A  B
0  1  2
1  1  3</code>
Copier après la connexion

Dans cet exemple, l'opération groupby crée un objet de groupe pour chaque valeur distincte de la colonne A. La méthode de filtrage est ensuite appliquée à chaque objet groupe et la fonction len(x) est utilisée pour déterminer si le groupe doit être conservé ou exclu. Dans cet exemple, les groupes comportant plus d'une ligne sont conservés, ce qui donne lieu à un bloc de données filtré.

Vous pouvez également créer des fonctions de filtrage plus complexes, à condition qu'elles renvoient une valeur booléenne. Par exemple, pour filtrer un groupe en fonction de la somme des valeurs de la colonne B, vous utiliserez :

<code class="language-python">filtered_df = g.filter(lambda x: x['B'].sum() == 5)</code>
Copier après la connexion

Notez qu'il peut y avoir un bug potentiel où vous ne pouvez pas accéder aux colonnes utilisées pour le regroupement dans la fonction de filtre. Une solution de contournement consiste à regrouper manuellement le dataframe à l’aide des noms de colonnes.

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.cn
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