Come calcolare un massimo mobile nei panda (con esempi)


È possibile utilizzare i seguenti metodi per calcolare un valore massimo mobile in un DataFrame panda:

Metodo 1: calcolare il massimo scorrevole

 df[' rolling_max '] = df. values_column . cummax ()

Metodo 2: calcolare il massimo scorrevole per gruppo

 df[' rolling_max '] = df. groupby (' group_column '). values_column . cummax ()

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: calcolare il massimo scorrevole

Supponiamo di avere il seguente DataFrame panda che mostra le vendite effettuate ogni giorno in un negozio:

 import pandas as pd

#createDataFrame
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

Possiamo utilizzare la seguente sintassi per creare una nuova colonna che visualizza il valore massimo delle vendite mobili:

 #add column that displays rolling maximum of sales
df[' rolling_max '] = df. dirty . 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 nuova colonna intitolata Rolling_max mostra il valore massimo mobile delle vendite.

Esempio 2: calcolare il massimo scorrevole per gruppo

Supponiamo di avere il seguente DataFrame panda che mostra le vendite effettuate ogni giorno in due negozi diversi:

 import pandas as pd

#createDataFrame
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 to 1 4
1 to 2 6
2 to 3 5
3 to 4 8
4 to 5 14
5 to 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

Possiamo utilizzare la seguente sintassi per creare una nuova colonna che visualizza il valore massimo delle vendite raggruppate per negozio:

 #add column that displays rolling maximum of sales grouped by store
df[' rolling_max '] = df. groupby (' store '). dirty . cummax ()

#view updated DataFrame
print (df)

   store day sales rolling_max
0 A 1 4 4
1 to 2 6 6
2 to 3 5 6
3 to 4 8 8
4 to 5 14 14
5 to 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 nuova colonna intitolata Rolling_max mostra il valore massimo mobile delle vendite, raggruppato per negozio.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come eliminare le righe in Pandas DataFrame in base alle condizioni
Come filtrare un Pandas DataFrame su più condizioni
Come utilizzare il filtro “NOT IN” in Pandas DataFrame

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *