Comment calculer un maximum glissant dans les pandas (avec exemples)
Vous pouvez utiliser les méthodes suivantes pour calculer une valeur maximale glissante dans un DataFrame pandas :
Méthode 1 : calculer le maximum glissant
df['rolling_max'] = df.values_column.cummax()
Méthode 2 : calculer le maximum glissant par groupe
df['rolling_max'] = df.groupby('group_column').values_column.cummax()
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : calculer le maximum glissant
Supposons que nous ayons le DataFrame pandas suivant qui montre les ventes réalisées chaque jour dans un magasin :
import pandas as pd #create DataFrame df = pd.DataFrame({'day': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 'sales': [4, 6, 5, 8, 14, 13, 13, 12, 9, 8, 19, 14]}) #view DataFrame print(df) day sales 0 1 4 1 2 6 2 3 5 3 4 8 4 5 14 5 6 13 6 7 13 7 8 12 8 9 9 9 10 8 10 11 19 11 12 14
Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne qui affiche la valeur maximale glissante des ventes :
#add column that displays rolling maximum of sales df['rolling_max'] = df.sales.cummax() #view updated DataFrame print(df) day sales rolling_max 0 1 4 4 1 2 6 6 2 3 5 6 3 4 8 8 4 5 14 14 5 6 13 14 6 7 13 14 7 8 12 14 8 9 9 14 9 10 8 14 10 11 19 19 11 12 14 19
La nouvelle colonne intitulée Rolling_max affiche la valeur maximale glissante des ventes.
Exemple 2 : calculer le maximum glissant par groupe
Supposons que nous ayons le DataFrame pandas suivant qui montre les ventes réalisées chaque jour dans deux magasins différents :
import pandas as pd #create DataFrame df = pd.DataFrame({'store': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'], 'day': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 'sales': [4, 6, 5, 8, 14, 13, 13, 12, 9, 8, 19, 14]}) #view DataFrame print(df) store day sales 0 A 1 4 1 A 2 6 2 A 3 5 3 A 4 8 4 A 5 14 5 A 6 13 6 B 7 13 7 B 8 12 8 B 9 9 9 B 10 8 10 B 11 19 11 B 12 14
Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne qui affiche la valeur maximale glissante des ventes regroupées par magasin :
#add column that displays rolling maximum of sales grouped by store df['rolling_max'] = df.groupby('store').sales.cummax() #view updated DataFrame print(df) store day sales rolling_max 0 A 1 4 4 1 A 2 6 6 2 A 3 5 6 3 A 4 8 8 4 A 5 14 14 5 A 6 13 14 6 B 7 13 13 7 B 8 12 13 8 B 9 9 13 9 B 10 8 13 10 B 11 19 19 11 B 12 14 19
La nouvelle colonne intitulée Rolling_max affiche la valeur maximale glissante des ventes, regroupées par magasin.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment supprimer des lignes dans Pandas DataFrame en fonction de la condition
Comment filtrer un DataFrame Pandas sur plusieurs conditions
Comment utiliser le filtre « NON IN » dans Pandas DataFrame