Comment trouver la valeur maximale par groupe chez Pandas



Souvent, vous souhaiterez peut-être trouver la valeur maximale par groupe dans un DataFrame pandas.

Heureusement, cela est facile à faire en utilisant les fonctions groupby() et max() avec la syntaxe suivante :

df.groupby('column_name').max()

Ce tutoriel explique plusieurs exemples d’utilisation pratique de cette fonction à l’aide du DataFrame pandas suivant :

import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   'points':[24, 23, 27, 11, 14, 8, 13],
                   'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print(df)

  team  points  rebounds
0    A      24        11
1    A      23         8
2    B      27         7
3    B      11         6
4    B      14         6
5    C       8         5
6    C      13        12

Exemple 1 : valeur maximale de plusieurs colonnes regroupées par une variable

Le code suivant montre comment trouver la valeur maximale de plusieurs colonnes, regroupées par une variable dans un DataFrame :

#find max values of points and rebounds, grouped by team
df.groupby('team').max().reset_index()


        team	points	rebounds
0	A	24	11
1	B	27	7
2	C	13	12

D’après le résultat, nous pouvons voir que :

  • L’équipe A a une valeur maximale de points de 24 et une valeur maximale de rebonds de 11.
  • L’équipe B a une valeur maximale de points de 27 et une valeur maximale de rebonds de 7.
  • L’équipe C a une valeur maximale de points de 13 et une valeur maximale de rebonds de 12.

Notez que nous avons utilisé la fonction reset_index() pour garantir que l’index correspond à l’index du DataFrame d’origine.

Exemple 2 : valeur maximale d’une seule colonne regroupée par une variable

Le code suivant montre comment trouver la valeur maximale d’une seule colonne, regroupée sur une seule variable :

#find max value of points, grouped by team
df.groupby('team')['points'].max().reset_index()

        team	points
0	A	24
1	B	27
2	C	13

Exemple 3 : Trier par valeurs maximales

Nous pouvons également utiliser la fonction sort_values() pour trier les valeurs maximales.

Nous pouvons spécifier ascending=False pour trier du plus grand au plus petit :

#find max value by team, sort descending
df.groupby('team')['points'].max().reset_index().sort_values(['points'], ascending=False)


        team	points
1	B	27
0	A	24
2	C	13

Ou nous pouvons spécifier ascending=True pour trier du plus petit au plus grand :

#find max value by team, sort ascending 
df.groupby('team')['points'].max().reset_index().sort_values(['points'], ascending=True) 

        team	points
2	C	13
0	A	24
1	B	27

Ressources additionnelles

Comment calculer la somme des colonnes dans Pandas
Comment calculer la moyenne des colonnes dans Pandas
Comment trouver la valeur maximale des colonnes dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *