Funcții de fereastră glisantă cu pandas

Manipularea datelor de tip serie de timp în Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Funcții de fereastră în pandas

  • Ferestrele identifică subperioade ale seriei de timp
  • Calculează metrici pentru subperioade din fereastră
  • Creează o nouă serie de timp de metrici
  • Două tipuri de ferestre:
    • Glisantă: dimensiune fixă, deplasantă (acest videoclip)
    • Expansivă: conține toate valorile anterioare (videoclipul următor)
Manipularea datelor de tip serie de timp în Python

Calculul unei medii glisante

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)

Calculul unei medii glisante

Manipularea datelor de tip serie de timp în Python

Calculul unei medii glisante

# Integer-based window size
data.rolling(window=30).mean() # fixed # observations
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: număr de zile lucrătoare
  • min_periods: alegeți o valoare < 30 pentru primele zile
Manipularea datelor de tip serie de timp în Python

Calculul unei medii glisante

# Offset-based window size
data.rolling(window='30D').mean() # fixed period length
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D: număr de zile calendaristice
Manipularea datelor de tip serie de timp în Python

Media glisantă pe 90 de zile

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

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

Media glisantă pe 90 de zile

Manipularea datelor de tip serie de timp în Python

Medii glisante pe 90 și 360 de zile

data['mean90'] = r90

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

Medii glisante pe 90 și 360 de zile

Manipularea datelor de tip serie de timp în Python

Metrici glisante multiple (1)

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

r.plot(subplots = True)

Metrici glisante multiple (1)

Manipularea datelor de tip serie de timp în Python

Metrici glisante 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()

Metrici glisante multiple (2)

Manipularea datelor de tip serie de timp în Python

Să exersăm!

Manipularea datelor de tip serie de timp în Python

Preparing Video For Download...