Panda: come ricampionare le serie temporali con groupby()
Ricampionare i dati delle serie temporali significa aggregare i dati in un nuovo periodo.
Se desideri ricampionare una serie temporale in panda utilizzando l’operatore groupby , puoi utilizzare la seguente sintassi di base:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
Questo particolare esempio raggruppa le righe del DataFrame per colonna negozio , quindi ricampiona le serie temporali per settimana ( freq=’W’ ), quindi calcola la somma dei valori nella colonna vendite .
Tieni presente che possiamo ricampionare i dati delle serie temporali in periodi di tempo diversi, tra cui:
- S : Secondi
- min : minuti
- H : Ore
- J :Giorno
- W : Settimana
- M : Mese
- D : Un quarto
- R : Anno
L’esempio seguente mostra come ricampionare nella pratica i dati delle serie temporali con un’operazione groupby .
Esempio: ricampionare una serie temporale con groupby in Pandas
Supponiamo di avere il seguente DataFrame panda che mostra le vendite totali effettuate ogni giorno in due negozi diversi:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Diciamo che vogliamo raggruppare le righe per negozio , quindi ricampionare le serie temporali per settimana, quindi calcolare la somma dei valori nella colonna delle vendite .
Possiamo usare la seguente sintassi per fare questo:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
Dal risultato possiamo vedere:
- La somma delle vendite per la settimana terminata il 01/08/2023 nel negozio A è 14 .
- La somma delle vendite per la settimana terminata il 01/08/2023 nel negozio B è 0 .
E così via.
Da notare che in questo esempio abbiamo scelto di calcolare la somma dei valori presenti nella colonna vendite .
Tuttavia, potremmo scegliere altri parametri come conteggio, media, mediana, minimo, massimo, ecc.
Sostituisci semplicemente sum() nel codice sopra con count() , Mean() , Median() , ecc. per calcolare la metrica di tua scelta.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in Python:
Come tracciare una serie temporale in Matplotlib
Come tracciare una serie temporale in Seaborn
Come calcolare MAPE dalle serie temporali in Python