Fonctions à fenêtre glissante avec pandas

Manipuler des séries chronologiques en Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Fonctions de fenêtre dans pandas

  • Les fenêtres découpent votre série chronologique en sous-périodes
  • Calculer des mesures pour les sous-périodes dans la fenêtre
  • Créer une nouvelle série chronologique de mesures
  • Deux types de fenêtres :
    • Rolling : taille fixe, glissante (cette vidéo)
    • Expanding : contient toutes les valeurs précédentes (prochaine vidéo)
Manipuler des séries chronologiques en Python

Calcul d'une moyenne glissante

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)

ch3_1_v2 - Rolling Window Functions with Pandas.010.png

Manipuler des séries chronologiques en Python

Calcul d'une moyenne glissante

# Taille de fenêtre basée sur un entier
data.rolling(window=30).mean() # nb d'observations fixe
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 : nb de jours ouvrables
  • min_periods : choisir une valeur < 30 pour obtenir des résultats dès les premiers jours
Manipuler des séries chronologiques en Python

Calcul d'une moyenne glissante

# Taille de fenêtre basée sur un décalage (offset)
data.rolling(window='30D').mean() # durée fixe
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D : nb de jours civils
Manipuler des séries chronologiques en Python

Moyenne glissante sur 90 jours

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

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

ch3_1_v2 - Rolling Window Functions with Pandas.017.png

Manipuler des séries chronologiques en Python

Moyennes glissantes sur 90 et 360 jours

data['mean90'] = r90

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

ch3_1_v2 - Rolling Window Functions with Pandas.020.png

Manipuler des séries chronologiques en Python

Mesures glissantes multiples (1)

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

r.plot(subplots = True)

ch3_1_v2 - Rolling Window Functions with Pandas.022.png

Manipuler des séries chronologiques en Python

Mesures glissantes multiples (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()

ch3_1_v2 - Rolling Window Functions with Pandas.024.png

Manipuler des séries chronologiques en Python

Passons à la pratique !

Manipuler des séries chronologiques en Python

Preparing Video For Download...