Pandas Groupby Aggregate

Pandas Groupby Aggregate



La technique groupby est essentielle en raison de la qualité avec laquelle elle agrège les données en termes de performances et de taille de code. Le terme « groupby » décrit généralement une procédure comprenant les étapes suivantes :

  • Scission : En appliquant certaines conditions aux ensembles de données, nous pouvons diviser les données en groupes.
  • Postuler : Un processus où nous appliquons individuellement une méthode à chaque groupe.
  • Combiner : Une procédure pour combiner divers ensembles de données pour former une structure de données après avoir utilisé la méthode groupby().

Dans le processus d'agrégation, une statistique récapitulative pour chaque groupe est calculée. Pour chaque groupe, la méthode d'agrégation renvoie une valeur agrégée (valeur unique). Nous pouvons effectuer plusieurs opérations d'agrégation sur des données groupées après avoir divisé les données en groupes à l'aide de la fonction groupby.







Pourquoi Pandas fournit-il une variété de méthodes d'agrégation de données ?

Les pandas offrent un large éventail de fonctionnalités et de fonctions pour aider à l'analyse et à l'agrégation des données. L'utilisation des méthodes pivot(), groupby() et pivot_table(), par exemple, offre chacune une perspective différente sur la façon dont les données seraient agrégées. Ils fournissent des approches pratiques pour effectuer diverses tâches plutôt que d'être simplement reconditionnés.



Comment utiliser la fonction .agg() dans Pandas

Une moyenne simple ou une somme de valeurs est la fonction d'agrégation la plus fréquemment utilisée. Vous pouvez utiliser la colonne d'un dataframe ou plusieurs colonnes pour appeler une fonction d'agrégation. Vous verrez de nombreuses façons d'agréger les données à l'aide de la méthode Pandas groupby. Pour démontrer à quel point la procédure est plus facile, regardons quelques exemples donnés ci-dessous. Les opérations mathématiques de base comme la somme, le minimum, le maximum, l'écart absolu moyen, l'écart type, la moyenne, la médiane, la variance et le produit font partie des fonctions d'agrégation intégrées les plus fréquemment utilisées. Pour résumer les données, nous pouvons combiner groupby et la fonction agg().



Exemple # 01 : Déterminer la somme des colonnes en regroupant les données à l'aide de la fonction groupby.agg()

Nous allons d'abord créer une trame de données en utilisant la fonction pd.DataFrame() afin de pouvoir regrouper les données de la colonne ou des colonnes de la trame de données, puis déterminer leur valeur moyenne. Nous devons importer les modules de pandas et la bibliothèque numpy avant de créer la dataframe.





Comme vous pouvez le voir, nous avons utilisé le dictionnaire pandas pour créer notre dataframe. Notre base de données df comporte quatre colonnes : « patient », « groupe », « âge » et « bouteilles de sang ». Les valeurs de données ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') sont contenues dans la colonne 'patient' tandis que les valeurs de données ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) et ( 2, 3, 1, 1, 2, 3, 2, 1) sont contenus respectivement dans les colonnes « group », « age » et « blood_bottles ». Supposons que nous devions déterminer la somme des valeurs dans la colonne 'blood_bottles' en regroupant les valeurs dans la colonne 'group'.



Pour les données de groupe « A », la somme des valeurs de « blood_bottles » est de 7. Pour les valeurs de groupe « B » et « C », la somme des valeurs de « blood_bottles » est de 2 et 6, respectivement. Nous pouvons également regrouper plusieurs colonnes pour déterminer la somme de chaque groupe.

Comme on peut le constater, nous avons passé une liste d'étiquettes de colonne, c'est-à-dire ['patient', 'group'] à l'intérieur de la fonction groupby() pour créer les groupes de catégories dans chaque colonne spécifiée. Pour chaque groupe de colonnes spécifiées, nous avons déterminé la somme des valeurs dans 'blood_bottles'. Par exemple, « Ali » se trouve dans les valeurs de colonne « groupe » A et C. Dans le groupe A, la somme des valeurs de « blood_bottles » pour Ali est de 2 et de 5 dans le groupe « C ».

Exemple # 02 : Application de plusieurs fonctions sur une seule colonne de dataframe à l'aide de la fonction groupby.agg()

Plusieurs agrégations peuvent être appliquées avec la méthode 'groupby()' à l'aide de la fonction pandas agg(). Une liste appelable peut être transmise à la méthode. Voyons comment nous pouvons agréger nos données en utilisant les méthodes intégrées de la bibliothèque numpy. Contrairement à l'exemple précédent, nous appliquerons plusieurs fonctions à une seule colonne du dataframe. La fonction pd.DataFrame() sera utilisée pour créer un dataframe pour cela avec au moins une colonne contenant des valeurs numériques.


La trame de données requise a été créée avec une colonne numérique, c'est-à-dire 'notes' avec les valeurs 41, 40, 35, 39, 49, 31, 34 et 42. Il y a 3 autres colonnes 'étudiant', 'sujets' et 'degré' dans notre dataframe qui peut être divisé en groupes en utilisant la fonction groupby(). Les valeurs dans les colonnes 'étudiants' et 'sujets' sont ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') et ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Alors que le degré de colonne contient les valeurs de données sous forme de chaînes, c'est-à-dire ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Supposons que nous devions regrouper les données des « sujets » de la colonne et déterminer à la fois la moyenne et la somme des « notes » de la colonne pour chaque donnée groupée.

Nous avons spécifié le nom de la colonne 'sujets' sous forme de chaîne dans la fonction groupby() pour convertir les données en groupes de catégories. Pour la colonne des marques, nous avons utilisé la méthode agg(), et à l'intérieur de la fonction agg(), nous avons spécifié les fonctions numpy np.sum et np.mean pour trouver la somme et la moyenne des notes de chaque groupe de données dans les sujets de la colonne. La somme et la valeur moyenne de la valeur de groupe « AI » sont respectivement de 91 et 45,5. La somme des notes pour la valeur 'C++' est de 75 et la valeur moyenne est de 37,5. Pour le groupe JAVA, la somme des notes est de 71 et la valeur moyenne est de 35,5, alors que la somme et la valeur moyenne pour Python sont de 74 et 37, respectivement.

Exemple # 03 : Application de plusieurs fonctions sur plusieurs colonnes de la trame de données à l'aide de la fonction groupby.agg()

Plutôt que d'appliquer différentes fonctions à une seule colonne de dataframe, nous pouvons appliquer plusieurs fonctions à différentes colonnes numériques. Nous pouvons utiliser un dictionnaire dans la fonction agg() comme entrée pour appliquer une méthode d'agrégation spécifique aux différentes colonnes de dataframe. Importons les bibliothèques pandas et numpy avant de créer une base de données avec plusieurs colonnes numériques.

Il y a quatre colonnes dans le dataframe nouvellement créé avec les noms 'player', 'least_score', 'highest_score' et 'location'. Dans la colonne 'joueur', nous avons stocké les noms de quelques joueurs sous forme de valeurs de données de chaîne ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), dans la colonne 'least_score' il y a les scores les plus bas des joueurs pour certains matchs (12, 34, 2, 21, 9, 1, 0, 34), tandis que dans la colonne 'highest_score' nous avons les scores les plus élevés des joueurs (12, 34, 2, 21, 9, 1, 0, 34) et dans la colonne 'lieu' il y a les noms des lieux où les joueurs ont joué leurs matchs ('France', 'Angleterre', 'Dubaï', ' Dubaï', 'Angleterre', 'France', 'Dubai', 'France').

Supposons qu'après avoir regroupé les données dans la colonne 'players', nous devons trouver la moyenne des valeurs de la colonne 'least_score' et la somme des valeurs de données 'hightest_score' pour chaque groupe.

Dans la fonction agg(), nous avons passé un dictionnaire python {'highest_score' : 'sum', 'least_score' : 'mean'} pour trouver la somme et la valeur moyenne d'une colonne spécifiée par rapport à chaque groupe. On peut voir que la valeur groupée Alex a la somme de la valeur « highest_score » 132 et la moyenne de la valeur « least_score » 17,5. Pour « Fin », la somme des valeurs est de 199 et la moyenne est de 18,3333333 dans les colonnes « highest_score » et « least_score » respectivement. La valeur de groupe Leo a une somme de 180 dans « highest_score » et une valeur moyenne de 7,666667 dans « least_score ».

Conclusion

Dans ce tutoriel, nous avons discuté des fonctions groupby() et d'agrégation dans pandas. Nous avons également expliqué comment utiliser la fonction groupby.agg(). Nous avons implémenté trois exemples dans cet article pour vous apprendre à utiliser une seule fonction d'agrégation sur une colonne de dataframe en regroupant les données de colonnes simples et multiples, comment appliquer plusieurs fonctions d'agrégation sur une seule colonne d'une dataframe et comment appliquer plusieurs fonctions d'agrégation sur les multiples colonnes de la trame de données à l'aide de la fonction groupby.agg().