Python Advanced Series — Series de Tiempo

20. Resampling e interpolación

20. Resampling and Interpolation

Convierte registros que ocurren a horas aleatorias en una tabla continua, rellenando huecos matemáticamente.

Convert records that occur at random times into a continuous table, filling gaps mathematically.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Agrupar registros por intervalos regulares de tiempo y rellenar valores faltantes mediante interpolación.

Group records into regular time intervals and fill missing values using interpolation.

Datos sintéticos

Synthetic data

timestampvalor
2026-01-01 08:0310
2026-01-01 08:2218
2026-01-01 08:5130

Ejemplo base

Base example

import pandas as pd

# Agrupa y rellena / Group and interpolate
df_continuo = df.resample("15T").mean().interpolate()

Resultado esperado

Expected result

timestampvalor_interpolado
08:0010.0
08:1516.0
08:3022.0
08:4528.0

Script completo

Complete script

# ==========================================================
# Python Advanced Topic 20
# Resampling and Interpolation for Time Series
# ==========================================================

import pandas as pd

df = pd.DataFrame({
    "timestamp": [
        "2026-01-01 08:03",
        "2026-01-01 08:22",
        "2026-01-01 08:51",
        "2026-01-01 09:10"
    ],
    "valor": [10, 18, 30, 40]
})

df["timestamp"] = pd.to_datetime(df["timestamp"])
df = df.set_index("timestamp").sort_index()

# Convert irregular records into regular 15-minute intervals
df_continuo = df.resample("15min").mean().interpolate()

df_continuo.to_csv("time_series_resampled.csv")
print(df_continuo)

Salida esperada en consola

Expected console output

                     valor
timestamp                 
2026-01-01 08:00:00   10.0
2026-01-01 08:15:00   16.0
2026-01-01 08:30:00   22.0
2026-01-01 08:45:00   28.0
2026-01-01 09:00:00   34.0

Aplicaciones reales

Real-world applications

  • Normalizar sensores o eventos.
  • Preparar datos para forecasting.
  • Rellenar huecos en series de tiempo.
  • Crear indicadores por intervalos regulares.
  • Normalize sensors or events.
  • Prepare data for forecasting.
  • Fill gaps in time series.
  • Create indicators by regular intervals.

Recomendaciones

Recommendations

  • No interpolar eventos categóricos sin criterio.
  • Revisar si los huecos son demasiado grandes.
  • Definir frecuencia según el negocio.
  • Conservar datos originales irregulares.
  • Do not interpolate categorical events without a clear rule.
  • Check whether gaps are too large.
  • Define frequency based on the business.
  • Keep the original irregular data.

Valor del tópico

Topic value

Resampling e interpolación convierten eventos desordenados en una serie continua, lista para análisis temporal y modelos predictivos.

Resampling and interpolation turn irregular events into a continuous series, ready for temporal analysis and predictive models.