groupby
de Pandas et l'équivalent de la clause HAVING
de SQL
L'analyse des données implique fréquemment le regroupement et le filtrage des données. La clause GROUP BY
de SQL regroupe les lignes, permettant l'application de la fonction d'agrégation. La méthode groupby
de Pandas reflète cela, mais il lui manque un équivalent direct à la clause HAVING
de SQL.
La clause HAVING
filtre les données groupées en fonction de conditions de valeur globale. Une requête SQL comme celle-ci :
<code class="language-sql">SELECT * ... GROUP BY col_name HAVING condition;</code>
regroupe d'abord par col_name
, puis sélectionne les lignes répondant à la condition d'agrégation.
Pandas y parvient en utilisant la méthode filter
de l'objet groupby
. Cette méthode accepte une fonction qui renvoie un booléen pour chaque groupe. Les groupes évalués à True
sont retenus ; d'autres sont rejetés.
Considérez un Pandas DataFrame df
avec les colonnes 'A' et 'B'. Pour imiter HAVING COUNT(*) > 1
:
<code class="language-python">g = df.groupby('A') filtered_df = g.filter(lambda x: len(x) > 1)</code>
Ici, filter
applique une fonction comptant les lignes par groupe. Les groupes comportant plus d'une ligne sont conservés, ce qui fait que filtered_df
ne contient que ces groupes.
La méthode filter
prend en charge le filtrage complexe ; toute fonction de retour booléen est utilisable. Cela offre une grande flexibilité dans la sélection de sous-ensembles de données groupés en fonction de diverses conditions.
La méthode groupby
de filter
de Pandas réplique efficacement la fonctionnalité de la clause HAVING
de SQL, permettant un filtrage conditionnel efficace des données groupées pour diverses manipulations de données et analyses statistiques.
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!