Groupby de Pandas : Maîtriser une fonction en 10 étapes (2024)

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 pddf = 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 : Maîtriser une fonction en 10 étapes (1)

É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()
Groupby de Pandas : Maîtriser une fonction en 10 étapes (2)

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()
Groupby de Pandas : Maîtriser une fonction en 10 étapes (3)

É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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (4)

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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (5)

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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (6)

É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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (7)

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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (8)

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)
Groupby de Pandas : Maîtriser une fonction en 10 étapes (9)

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] = Nonedf
Groupby de Pandas : Maîtriser une fonction en 10 étapes (10)
df.groupby("genre").agg(salaire_moyen=("salaire","mean"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (11)

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"))
Groupby de Pandas : Maîtriser une fonction en 10 étapes (12)

É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"])
Groupby de Pandas : Maîtriser une fonction en 10 étapes (13)

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.

Je suis YouChat, un modèle linguistique avancé de You.com. Je suis un expert en analyse de données et en programmation Python, y compris l'utilisation de la bibliothèque Pandas. Je peux vous fournir des informations détaillées sur les concepts utilisés dans l'article que vous avez mentionné.

L'article parle de la fonction groupby de Pandas, qui est l'une des opérations les plus couramment utilisées dans l'analyse de données. Pandas est une bibliothèque populaire en Python pour la science des données, offrant de nombreuses fonctionnalités pour l'analyse et la manipulation de données.

La fonction groupby de Pandas permet de regrouper des lignes de données en fonction des valeurs distinctes d'une colonne ou d'un ensemble de colonnes. Une fois les groupes créés, vous pouvez facilement appliquer des fonctions d'agrégation à une colonne numérique.

Voici les principales étapes mentionnées dans l'article pour utiliser la fonction groupby de Pandas :

Étape 1 : Créer des groupes basés sur une colonne et appliquer la fonction mean

Dans cet exemple, des groupes sont créés en fonction du genre et la fonction mean est appliquée pour calculer la valeur moyenne pour chaque colonne numérique.

Étape 2 : Appliquer la fonction d'agrégation à une colonne spécifique

Dans certains cas, vous pouvez vouloir appliquer la fonction d'agrégation à une colonne spécifique. Vous pouvez filtrer les colonnes avant d'appliquer la fonction groupby pour n'inclure que les colonnes qui vous intéressent.

Étape 3 : Utiliser la fonction NamedAgg pour spécifier le nom des valeurs agrégées

La fonction NamedAgg de Pandas permet de spécifier le nom des valeurs agrégées, ce qui rend les résultats plus clairs et informatifs.

Étape 4 : Utiliser une syntaxe simplifiée pour spécifier les agrégations

Il existe une syntaxe plus simple pour spécifier les agrégations, en utilisant un tuple de la forme (nom_colonne, fonction_agrégation).

Étape 5 : Calculer plusieurs agrégations pour chaque groupe

Une fois les groupes créés, vous pouvez calculer autant d'agrégations que nécessaire. Par exemple, vous pouvez calculer le salaire médian et la taille moyenne pour chaque sexe.

Étape 6 : Afficher les groupes en tant que colonne dans le DataFrame

Par défaut, les groupes sont affichés en tant qu'index d'un DataFrame. Si vous préférez les afficher sous forme de colonne, vous pouvez utiliser le paramètre as_index.

Étape 7 : Créer des groupes basés sur plusieurs colonnes

Vous pouvez créer des groupes basés sur plusieurs colonnes en transmettant une liste de colonnes à la fonction groupby.

Étape 8 : Trier les groupes en fonction des valeurs agrégées

Si vous avez plusieurs groupes, vous pouvez vouloir les trier en fonction des valeurs agrégées. Vous pouvez utiliser la fonction sort_values pour trier les résultats.

Étape 9 : Gérer les valeurs manquantes dans les colonnes de regroupement

Si vous avez des valeurs manquantes dans la colonne utilisée pour le regroupement, par défaut, ces lignes sont supprimées. Vous pouvez spécifier le paramètre dropna=False pour inclure les valeurs manquantes dans les résultats.

Étape 10 : Passer une liste d'agrégations à la fonction agg

Une autre méthode pour calculer plusieurs agrégations consiste à passer une liste d'agrégations à la fonction agg.

La fonction groupby de Pandas est très utile pour l'analyse de données et offre de nombreuses fonctionnalités pour regrouper et agréger des données. J'espère que ces informations vous seront utiles. N'hésitez pas à me poser d'autres questions ou à partager vos commentaires.

Groupby de Pandas : Maîtriser une fonction en 10 étapes (2024)

FAQs

What is the function of groupby in Pandas? ›

Groupby() is a powerful function in pandas that allows you to group data based on a single column or more. You can apply many operations to a groupby object, including aggregation functions like sum(), mean(), and count(), as well as lambda function and other custom functions using apply().

How do you apply a function to a groupby object? ›

How to Apply Function to Pandas Groupby
  1. Example 1: Use groupby() and apply() to Find Relative Frequencies. ...
  2. Example 2: Use groupby() and apply() to Find Max Values. ...
  3. Example 3: Use groupby() and apply() to Perform Custom Calculation.
Dec 15, 2021

What is the group by calculation in Pandas? ›

The groupby is one of the most frequently used Pandas functions in data analysis. It is used for grouping the data points (i.e. rows) based on the distinct values in the given column or columns. We can then calculate aggregated values for the generated groups.

How to count number of values in groupby Pandas? ›

Using GroupBy for Counting

Another way to count occurrences in Pandas is to use the groupby() method. This method groups the data by one or more columns and applies an aggregation function to each group. To count occurrences, we can use the size() method, which returns the number of elements in each group.

What is the purpose of groupby? ›

The GROUPBY function allows you to group, aggregate, sort, and filter data based on the fields you specify. A column-oriented array or range that contains the values which are used to group rows and generate row headers. The array or range may contain multiple columns.

What is groupby function used for? ›

groupby() Pandas dataframe. groupby() function is used to split the data into groups based on some criteria.

How do you use GroupBy command in Python? ›

You call . groupby() and pass the name of the column that you want to group on, which is "state" . Then, you use ["last_name"] to specify the columns on which you want to perform the actual aggregation. You can pass a lot more than just a single column name to .

How do I turn a GroupBy into a DataFrame? ›

To convert a DataFrameGroupBy object to a regular DataFrame object, you can use the reset_index function. This function resets the index of the DataFrame and returns a new DataFrame object. As you can see, the df_new object is a regular DataFrame object that contains the grouped data.

Can I use function in group by clause? ›

The GROUP BY clause is used in combination with aggregate functions to calculate totals, averages, minimums, maximums, or other values across multiple records that are related in some way. Aggregate functions are SQL functions that take in a column of values and output a single value.

How to count group by column in pandas? ›

Pandas groupby() function is used to group similar data into groups and execute aggregate operations like size/count on the grouped data. The groupby() function and count() function of Pandas can be used together to group the columns and calculate the count or size aggregate.

How to count group by column in pandas DataFrame? ›

groupby() method is used to separate the Pandas DataFrame into groups. It will generate the number of similar data counts present in a particular column of the data frame.

How to group by and sort values in pandas? ›

Sorting can be useful when you want to order the observations within each group based on a certain column or columns. To sort observations within groupby groups in Pandas, you can use the sort_values method. This method allows you to sort a DataFrame by one or more columns.

How to get unique count in groupby Pandas? ›

Method 1: Count unique values using nunique()

The Pandas dataframe. nunique() function returns a series with the specified axis's total number of unique observations. The total number of distinct observations over the index axis is discovered if we set the value of the axis to 0.

How do you count unique values in groupby Python? ›

To count unique values in a pandas Groupby object, we need to use the nunique() method. This method returns the number of unique values in each group of the Groupby object. We can apply this method to a specific column of the Groupby object or to the entire object.

How do I count numeric values in Pandas? ›

Count Values in Pandas Dataframe
  1. Syntax: DataFrame.count(axis=0, level=None, numeric_only=False)
  2. Parameters:
  3. Returns: It returns count of non-null values and if level is used it returns dataframe.
Sep 29, 2023

What does groupby first do in pandas? ›

first. Compute the first entry of each column within each group. Defaults to skipping NA elements.

How does the group function work in Python? ›

group() returns the substring that was matched by the RE. start() and end() return the starting and ending index of the match. span() returns both start and end indexes in a single tuple. Since the match() method only checks if the RE matches at the start of a string, start() will always be zero.

What does the function DataFrame groupby () return without any aggregate function? ›

groupby() function on any categorical column of DataFrame, it returns a GroupBy object. Then you can use different methods on this object and even aggregate other columns to get the summary view of the dataset. For example, you used . groupby() function on column Product Category in df as below to get GroupBy object.

What does .AGG do in Python? ›

The agg() method allows you to apply a function or a list of function names to be executed along one of the axis of the DataFrame, default 0, which is the index (row) axis. Note: the agg() method is an alias of the aggregate() method.

Top Articles
Latest Posts
Article information

Author: Carlyn Walter

Last Updated:

Views: 5285

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Carlyn Walter

Birthday: 1996-01-03

Address: Suite 452 40815 Denyse Extensions, Sengermouth, OR 42374

Phone: +8501809515404

Job: Manufacturing Technician

Hobby: Table tennis, Archery, Vacation, Metal detecting, Yo-yoing, Crocheting, Creative writing

Introduction: My name is Carlyn Walter, I am a lively, glamorous, healthy, clean, powerful, calm, combative person who loves writing and wants to share my knowledge and understanding with you.