10 Etapes Pour Groupby De Pandas

GroupBy de Pandas est l’une des opérations les plus fréquemment effectuées dans le cadre de l’analyse de données.

Pandas est sans doute la bibliothèque Python la plus populaire de l’écosystème Data Science. Elle fournit de nombreuses fonctions permettant d’effectuer efficacement des tâches d’analyse et de manipulation de données.

L’une des fonctions Pandas les plus fréquemment utilisées pour l’analyse de données est la fonction groupby de Pandas. Elle permet de regrouper des points de données (c’est-à-dire des lignes) en fonction des valeurs distinctes d’une colonne ou d’un ensemble de colonnes.

Une fois les groupes générés, tu peux facilement appliquer des fonctions d’agrégation à une colonne numérique. Prenons l’exemple d’un ensemble de données contenant des informations sur le sexe et les salaires des employés d’une entreprise.

Pour calculer le salaire moyen des différents sexes, nous pouvons regrouper les lignes en fonction de la colonne du sexe, puis appliquer la fonction moyenne à la colonne du salaire.

Dans cet article, nous allons passer en revue 10 étapes pour apprendre les détails de la fonction groupby. Les étapes consécutives contiennent un exemple basé sur l’étape précédente.

Commençons par importer Pandas et créer un DataFrame avec des données inventées.

import pandas as pd

df = pd.DataFrame({
   "nom": ["John", "Lydia", "Laury", "Arnaud", "Enzo"],
   "genre": ["Homme", "Femme", "Femme", "Homme", "Homme"],
   "taille": [182, 166, 170, 178, 172],
   "education": ["Master", "Master", "Licence", "Licence", "Master"],
   "salaire": [65000, 72000, 74000, 68000, 80000]
})

df
GroupBy de Pandas - DataFrame exemple

Étape 1

La première étape est un exemple très basique. Nous créons des groupes basés sur le genre et appliquons la fonction mean.

df.groupby("genre").mean()

Comme nous ne spécifions pas de colonne numérique, Pandas calcule la valeur moyenne pour chaque colonne numérique. À l’avenir, il faudra spécifier à GroupBy de Pandas de spécifier uniquement les colonnes numériques ou sélectionner manuellement les colonnes (numériques) qui nous intéressent !

Étape 2

Dans certains cas, nous ne voulons appliquer la fonction d’agrégation qu’à une colonne spécifique. Une façon de procéder consiste à filtrer les colonnes avant d’appliquer la fonction groupby.

df[["genre","salaire"]].groupby("genre").mean()

Étape 3

Ce que nous avons fait dans la deuxième étape n’est pas la solution optimale. Un ensemble de données typique de la vie réelle contient plusieurs colonnes et nous pouvons avoir besoin de calculer des agrégations non pas sur toutes les colonnes, mais sur un grand nombre d’entre elles.

Dans ce cas, le filtrage des colonnes est une tâche fastidieuse. Une meilleure méthode consiste à utiliser la fonction NamedAgg de Pandas.

df.groupby("genre").agg(
   salaire_moyen = pd.NamedAgg("salaire","mean")
)

Il suffit de spécifier le nom de la colonne et la fonction d’agrégation. Un autre avantage de l’utilisation de la fonction NamedAgg c’est que nous pouvons attribuer un nom aux valeurs agrégées. C’est nettement plus clair et informatif que d’utiliser le nom d’origine de la colonne.

Étape 4

Il existe même une méthode plus simple que celle de la troisième étape. La syntaxe est la suivante :

df.groupby("genre").agg(salaire_moyen=("salaire","mean"))

J’utilise toujours cette méthode parce qu’elle nécessite le moins de saisie possible 😊 .

Étape 5

Une fois les groupes générés, nous pouvons calculer autant d’agrégations que nécessaire. Par exemple, le code suivant calcule le salaire médian et la taille moyenne pour chaque sexe.

df.groupby("genre").agg(
   salaire_median=("salaire","median"),
   taille_moyenne=("taille","mean")
)

Étape 6

Jusqu’à présent, les groupes sont affichés en tant qu’index d’un DataFrame. Dans certains cas, il est préférable de les afficher sous forme de colonne dans le DataFrame. Nous pouvons y parvenir en utilisant le paramètre as_index.

df.groupby("genre", as_index=False).agg(
   salaire_median=("salaire","median"),
   taille_moyenne=("taille","mean")
)

Cette méthode est préférable, surtout lorsqu’il y a plusieurs groupes.

Étape 7

Tout comme nous pouvons calculer des agrégations sur plusieurs colonnes, nous pouvons créer des groupes basés sur plusieurs colonnes. Si nous transmettons deux colonnes à la fonction groupby, celle-ci crée des groupes basés sur la combinaison de valeurs distinctes dans chaque colonne.

df.groupby(["genre","education"], as_index=False).agg(
   salaire_median=("salaire","median"),
   taille_moyenne=("taille","mean")
)

Veille bien à transmettre les noms des colonnes dans une liste. Sinon, tu obtiendras une erreur.

Étape 8

Ce n’est pas nécessaire dans notre cas, mais lorsque nous avons plusieurs groupes, nous pouvons vouloir trier les groupes sur la base des valeurs agrégées. Supposons que nous ayons 100 colonnes et que nous devions trouver les 3 premiers groupes en termes de salaire moyen le plus élevé. Dans ce cas, il est nécessaire de trier les résultats.

La fonction sort_values peut être utilisée avec la fonction groupby comme suit :

df.groupby(["genre","education"], as_index=False).agg(
   salaire_median=("salaire","median"),
   taille_moyenne=("taille","mean")
).sort_values(by="salaire_median", ascending=False)

Par défaut, les lignes sont triées par ordre croissant. Il est possible de le modifier en utilisant le paramètre ascending.

Étape 9

Notre base de données ne contient pas de valeurs manquantes. Toutefois, les ensembles de données réels sont susceptibles d’en contenir. S’il y a des valeurs manquantes dans la colonne utilisée pour le regroupement, ces lignes sont supprimées par défaut.

Commençons par mettre à jour une valeur manquante dans notre base de données.

df.iloc[4,1] = None
df
df.groupby("genre").agg(salaire_moyen=("salaire","mean"))

Comme tu peux le constater, la valeur manquante (None) dans la colonne ‘genre’ est ignorée. Cependant, il est important de prendre en compte les valeurs manquantes dans de nombreux cas. Nous pouvons définir le paramètre dropna sur False pour inclure les valeurs manquantes dans les résultats.

df.groupby("genre", dropna=False).agg(salaire_moyen=("salaire","mean"))

Étape 10

Nous avons vu comment calculer plusieurs agrégations à l’étape 5. Une autre méthode pour cette opération consiste à passer une liste d’agrégations à la fonction agg.

df.groupby("genre", dropna=False).agg(["mean","count"])

Conclusion sur cette fonction GroupBy de Pandas

Le groupby est une fonction très utilisée pour l’analyse de données. Nous avons couvert presque tout ce que tu dois savoir à son sujet. Il existe quelques détails supplémentaires sur l’utilisation de la fonction groupby, mais tu n’auras que rarement besoin de les utiliser.

Merci pour ta lecture. N’hésite pas à me faire part de tes commentaires.

Dans mon programme Python pour la Data Science, je propose également une section complète dédiée à cette fonction GroupBy appliquée à la Data.

Publications similaires

0 Commentaires
Le plus récent
Le plus ancien Le plus populaire
Commentaires en ligne
Afficher tous les commentaires