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