Saltar al contingut principal
Capítol 1.2 bàsic pandas datetime transformacions

L'índex temporal de pandas: trucs essencials

3 min lectura
Domina la selecció per data, el resampleig, el desplaçament de sèries i les operacions amb finestres mòbils en pandas.

Una de les majors avantatges de treballar amb sèries temporals en pandas és que l’índex no és només una etiqueta: és una eina que et permet filtrar, agregar i transformar dades sense escriure bucles.

En aquest subcapítol veuràs els patrons que usaràs una i altra vegada: seleccionar rangs de dates, canviar la freqüència de la sèrie i calcular estadístiques mòbils.


Seleccionar rangs de dates

Quan l’índex és un DatetimeIndex, pots usar strings per seleccionar períodes.

import pandas as pd
import numpy as np

dates = pd.date_range(start="2020-01-01", periods=365, freq="D")
serie = pd.Series(np.random.randn(365).cumsum(), index=dates)

# Tot l'any 2020
serie_2020 = serie["2020"]

# Des de març fins a juny
serie_q2 = serie["2020-03":"2020-06"]

# Només un mes concret
serie_marc = serie["2020-03"]

Aquesta sintaxi és molt més llegible que filtrar amb màscares booleanes sobre columnes de data.


Canviar la freqüència amb resample

resample és com groupby però per al temps. Et permet passar de dades diàries a setmanals, mensuals o anuals.

# Dades diàries a mensuals: mitjana de cada mes
serie_mensual = serie.resample("ME").mean()

# Dades diàries a setmanals: suma de cada setmana
serie_setmanal = serie.resample("W").sum()

# Màxim anual
serie_anual_max = serie.resample("YE").max()

Fixa’t que ME significa “final de mes” i YE “final d’any”. Aquestes etiquetes van canviar en pandas 2.2; si uses una versió anterior potser necessites M i Y.


Desplaçar sèries amb shift

shift mou els valors cap endavant o cap enrere en el temps. És útil per crear variables retardades.

# Valor del dia anterior
serie_lag1 = serie.shift(1)

# Diferència respecte al dia anterior
serie_diff = serie.diff()

# Variació percentual respecte al dia anterior
serie_pct = serie.pct_change() * 100

El lag més bàsic és la base de molts models de forecasting: predir el valor de demà utilitzant els valors d’avui, ahir i la setmana passada.


Finestres mòbils

Les finestres mòbils permeten calcular estadístiques sobre un tram lliscant de la sèrie.

# Mitjana mòbil de 7 dies
mitjana_7 = serie.rolling(window=7).mean()

# Desviació estàndard mòbil de 30 dies
std_30 = serie.rolling(window=30).std()

# Mínim mòbil de 14 dies
min_14 = serie.rolling(window=14).min()

La mitjana mòbil és especialment útil per suavitzar el soroll i veure la tendència subjacent.


Resum

En aquest subcapítol has vist com aprofitar l’índex temporal de pandas per a:

  • Seleccionar períodes amb strings.
  • Canviar la freqüència amb resample.
  • Crear lags i diferències amb shift i diff.
  • Calcular estadístiques mòbils amb rolling.

Aquestes operacions són el 80 % del treball diari amb sèries temporals. El següent pas és aprendre a visualitzar-los correctament.