11. Manejo de series temporales en Pandas

Cuando las fechas son protagonistas, Pandas ofrece utilidades muy poderosas. Podés convertir texto a fechas, usar un índice temporal y resumir datos por períodos.

En este tema trabajaremos sobre un DataFrame pequeño para ilustrar los pasos fundamentales.

11.1 Conversión de fechas (pd.to_datetime)

Los datasets suelen traer fechas como texto. Con pd.to_datetime() las transformás en objetos datetime64[ns] listos para operaciones temporales.

Convertir strings a fechas

import pandas as pd
datos = {
    "Fecha": ["2024-01-01", "2024-01-05", "2024-02-10", "2024-02-15", "2024-03-01"],
    "Ventas": [100, 120, 90, 150, 200]
}
df = pd.DataFrame(datos)
df["Fecha"] = pd.to_datetime(df["Fecha"])
print(df.dtypes)

Salida:

Fecha     datetime64[ns]
Ventas             int64
dtype: object
👉 Una vez convertida, la columna permite filtros por fecha, cálculos y comparaciones temporales.

11.2 Indexación por fechas

Al establecer la fecha como índice accedés a períodos completos con expresiones intuitivas.

Usar la fecha como índice

df = df.set_index("Fecha")
print(df)

Salida:

            Ventas
Fecha             
2024-01-01     100
2024-01-05     120
2024-02-10      90
2024-02-15     150
2024-03-01     200

Selección puntual y rangos

print(df.loc["2024-02-10"])
print(df.loc["2024-01":"2024-02"])

Salida:

Ventas     90
Name: 2024-02-10 00:00:00, dtype: int64
            Ventas
Fecha             
2024-01-01     100
2024-01-05     120
2024-02-10      90
2024-02-15     150
👉 Expresiones como 2024-01 devuelven todo el mes de enero.

11.3 Resampleo y estadísticas temporales

Con resample() reagrupás datos por período (día, semana, mes, trimestre, año) y aplicás funciones como mean(), sum() o count().

Promedio mensual de ventas

print(df.resample("ME").mean())

Salida:

             Ventas
Fecha              
2024-01-31    110.0
2024-02-29    120.0
2024-03-31    200.0

Otras operaciones habituales

print(df.resample("W").sum())
print(df.resample("ME").count())
print(df.resample("ME").agg(lambda x: x.max() - x.min()))
👉 Frecuencias comunes: D (día), W (semana), ME (fin de mes), Q (fin de trimestre), A (fin de año).

Resumen del tema 11

  • pd.to_datetime() convierte cadenas en fechas reales.
  • Indexar por fecha habilita filtros y rangos temporales expresivos.
  • resample() reagrupa por períodos y admite funciones como mean, sum o count.
  • Las agregaciones personalizadas permiten calcular indicadores a medida (por ejemplo, rangos mensuales).