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

Ajouter un commentaire

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