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

Aggiungi un commento

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