Funciones de ventana móvil con pandas

Manipulación de series temporales en Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Funciones de ventana en pandas

  • Las ventanas identifican subperíodos de tu serie temporal
  • Calcula métricas para subperíodos dentro de la ventana
  • Crea una nueva serie temporal de métricas
  • Dos tipos de ventanas:
    • Móvil: mismo tamaño, se desliza (este video)
    • Acumulativa: contiene todos los valores previos (siguiente video)
Manipulación de series temporales en Python

Calcular una media móvil

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)

Funciones de ventana móvil con Pandas.010.png

Manipulación de series temporales en Python

Calcular una media móvil

# Tamaño de ventana basado en entero
data.rolling(window=30).mean() # nº fijo de observaciones
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: nº de días hábiles
  • min_periods: elige un valor < 30 para obtener resultados en los primeros días
Manipulación de series temporales en Python

Calcular una media móvil

# Tamaño de ventana basado en desplazamiento
data.rolling(window='30D').mean() # periodo de longitud fija
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D: nº de días naturales
Manipulación de series temporales en Python

Media móvil de 90 días

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

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

Funciones de ventana móvil con Pandas.017.png

Manipulación de series temporales en Python

Medias móviles de 90 y 360 días

data['mean90'] = r90

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

Funciones de ventana móvil con Pandas.020.png

Manipulación de series temporales en Python

Métricas móviles múltiples (1)

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

r.plot(subplots = True)

Funciones de ventana móvil con Pandas.022.png

Manipulación de series temporales en Python

Métricas móviles múltiples (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()

Funciones de ventana móvil con Pandas.024.png

Manipulación de series temporales en Python

¡Vamos a practicar!

Manipulación de series temporales en Python

Preparing Video For Download...