Come ricampionare i dati delle serie temporali in python (con esempi)
Ricampionare i dati delle serie temporali significa riassumere o aggregare i dati in un nuovo periodo.
Possiamo usare la seguente sintassi di base per ricampionare i dati delle serie temporali in Python:
#find sum of values in column1 by month weekly_df[' column1 '] = df[' column1 ']. resample (' M '). sum () #find mean of values in column1 by week weekly_df[' column1 '] = df[' column1 ']. resample (' W '). mean ()
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.
Esempio: ricampionare i dati delle serie temporali in Python
Supponiamo di avere il seguente DataFrame panda che mostra le vendite totali effettuate ogni ora da un’azienda in un periodo di un anno:
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #create DataFrame with hourly index df = pd. DataFrame (index= pd.date_range (' 2020-01-06 ', ' 2020-12-27 ', freq=' h ')) #add column to show sales by hour df[' sales '] = np. random . randint (low=0, high=20, size= len (df. index )) #view first five rows of DataFrame df. head () dirty 2020-01-06 00:00:00 12 2020-01-06 01:00:00 15 2020-01-06 02:00:00 0 2020-01-06 03:00:00 3 2020-01-06 04:00:00 3
Se creiamo un grafico a linee per visualizzare i dati di vendita, sarebbe simile a questo:
import matplotlib. pyplot as plt
#plot time series data
plt. plot (df. index , df. sales , linewidth= 3 )
Questo grafico è di difficile interpretazione, quindi possiamo riassumere i dati di vendita per settimana:
#create new DataFrame
weekly_df = pd. DataFrame ()
#create 'sales' column that summarizes total sales by week
weekly_df[' sales '] = df[' sales ']. resample (' W '). sum ()
#view first five rows of DataFrame
weekly_df. head ()
dirty
2020-01-12 1519
2020-01-19 1589
2020-01-26 1540
2020-02-02 1562
2020-02-09 1614
Questo nuovo DataFrame mostra la somma delle vendite settimanali.
Possiamo quindi creare un grafico della serie temporale utilizzando questi dati settimanali:
import matplotlib. pyplot as plt
#plot weekly sales data
plt. plot ( weekly_df.index , weekly_df.sales , linewidth= 3 )
Questo grafico è molto più facile da leggere perché rappresentiamo solo i dati di vendita per 51 settimane individuali, rispetto ai dati di vendita per 8.545 ore individuali nel primo esempio.
Nota : in questo esempio, abbiamo riepilogato i dati di vendita per settimana, ma potremmo anche riassumerli per mese o trimestre se desideriamo tracciare ancora meno punti dati.
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