En SQL, l'opération GROUP BY divise les données en sous-ensembles en fonction des valeurs des colonnes spécifiées. La clause HAVING applique des contraintes de filtre à ces sous-ensembles. Cette fonctionnalité permet l’agrégation et le filtrage sélectifs des données.
Dans Pandas, la fonctionnalité GROUP BY est disponible via la méthode groupby()
, qui renvoie un objet GroupBy. L'équivalent Pandas de la clause SQL HAVING est la méthode filter()
, qui applique un filtre au sous-ensemble créé par groupby()
.
<code>df.groupby(by_column).filter(filter_function)</code>
Parmi eux :
df
est un DataFrame Pandas. by_column
est la colonne utilisée pour le regroupement. filter_function
est une fonction qui renvoie une valeur booléenne pour chaque groupe. Pour appliquer un filtre sur un ensemble de données groupé dans Pandas, suivez ces étapes :
groupby()
sur un DataFrame. filter()
à chaque groupe en utilisant la méthode filter_function
. filter_function
devrait renvoyer une valeur booléenne pour chaque groupe. Supposons que nous ayons le DataFrame Pandas suivant :
<code>df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])</code>
Pour retrouver les groupes dont la somme dans la colonne B est supérieure à 4, on peut utiliser le code suivant :
<code>result = df.groupby('A').filter(lambda x: x['B'].sum() > 4)</code>
Le résultat sera un nouveau DataFrame contenant les lignes des groupes qui répondent aux critères de filtre :
<code>print(result)</code>
Sortie :
<code> A B 0 1 2 1 1 3</code>
filter_function
peut être n'importe quelle fonction Python valide qui accepte un groupe Pandas en entrée et renvoie une valeur booléenne. filter_function
n'a pas accès aux colonnes utilisées pour le regroupement. Si vous devez accéder à ces colonnes, vous pouvez les regrouper manuellement par colonne avant d'appliquer le filtre. 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!