Funzioni su finestre mobili con pandas

Elaborazione di serie temporali in Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Funzioni finestra in pandas

  • Le finestre identificano sotto-periodi della serie temporale
  • Calcola metriche per i sotto-periodi nella finestra
  • Crea una nuova serie temporale di metriche
  • Due tipi di finestre:
    • Rolling: stessa dimensione, scorrevole (questo video)
    • Expanding: contengono tutti i valori precedenti (prossimo video)
Elaborazione di serie temporali in Python

Calcolare una media mobile

data = pd.read_csv('google.csv', parse_dates=['date'], index_col='date')
DatetimeIndex: 1761 entries, 2010-01-04 to 2016-12-30
Data columns (total 1 columns):
price     1761 non-null float64
dtypes: float64(1)

Funzioni su finestre mobili con pandas.010.png

Elaborazione di serie temporali in Python

Calcolare una media mobile

# Dimensione finestra basata su intero
data.rolling(window=30).mean() # numero fisso di osservazioni
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1732 non-null float64
dtypes: float64(1)
  • window=30: giorni lavorativi
  • min_periods: scegli un valore < 30 per ottenere risultati dai primi giorni
Elaborazione di serie temporali in Python

Calcolare una media mobile

# Dimensione finestra basata su offset
data.rolling(window='30D').mean() # durata fissa del periodo
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D: giorni di calendario
Elaborazione di serie temporali in Python

Media mobile a 90 giorni

r90 = data.rolling(window='90D').mean()

google.join(r90.add_suffix('_mean_90')).plot()

Media mobile a 90 giorni.017.png

Elaborazione di serie temporali in Python

Medie mobili a 90 e 360 giorni

data['mean90'] = r90

r360 = data['price'].rolling(window='360D'.mean()
data['mean360'] = r360; data.plot()

Medie mobili a 90 e 360 giorni.020.png

Elaborazione di serie temporali in Python

Metriche mobili multiple (1)

r = data.price.rolling('90D').agg(['mean', 'std'])

r.plot(subplots = True)

Metriche mobili multiple (1).022.png

Elaborazione di serie temporali in Python

Metriche mobili multiple (2)

rolling = data.google.rolling('360D')

q10 = rolling.quantile(0.1).to_frame('q10')
median = rolling.median().to_frame('median')
q90 = rolling.quantile(0.9).to_frame('q90')
pd.concat([q10, median, q90], axis=1).plot()

Metriche mobili multiple (2).024.png

Elaborazione di serie temporali in Python

Esercitiamoci!

Elaborazione di serie temporali in Python

Preparing Video For Download...