(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo hacer previsión de series temporales con Prophet en Machine Learning

João Barros 04 de August de 2026 4 min de lectura

Este tutorial muestra cómo hacer previsión de series temporales con Prophet en Machine Learning para obtener previsiones simples, interpretar estacionalidad y gestionar festivos. Es útil para planificar inventario, ventas o capacidad con un método robusto y fácil de usar.

Requisitos previos

  • Python 3.8+ y pip
  • Bibliotecas: pandas, prophet, matplotlib (instalar vía pip)
  • Un conjunto de datos con fechas y un valor (ej.: vendas_diarias.csv)

Paso 1: Instalar e importar las bibliotecas

Instalar Prophet (el paquete se llama prophet) más pandas y matplotlib. Luego importar lo esencial. Si hay problemas en la instalación, verificar el compilador C++ o usar una distribución conda.

pip install pandas prophet matplotlib
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

Paso 2: Preparar los datos en el formato que Prophet exige

Prophet espera dos columnas: ds (fechas) y y (valor). Cargar el archivo, convertir la columna de fecha y resumir por día si es necesario.

# Ejemplo mínimo
df = pd.read_csv('vendas_diarias.csv')
df['ds'] = pd.to_datetime(df['data'])
df = df[['ds', 'vendas']].rename(columns={'vendas':'y'})
# Opcional: ordenar y rellenar días faltantes
df = df.sort_values('ds').reset_index(drop=True)

Paso 3: Explorar la serie y tratar valores extremos

Visualizar la serie para entender tendencias, estacionalidad y outliers. Decidir si imputar valores nulos o winsorizar outliers antes de entrenar.

df.plot(x='ds', y='y', figsize=(10,4))
plt.title('Serie temporal de ventas')
plt.show()

# Ejemplo simple de imputación
df['y'] = df['y'].fillna(method='ffill')

Paso 4: Crear y ajustar el modelo Prophet

Crear un modelo Prophet básico. Puede configurar estacionalidad anual, semanal, y añadir festivos. Ajustar changepoint_prior_scale para controlar la sensibilidad a cambios bruscos (overfitting vs underfitting).

# Modelo básico con estacionalidad semanal y anual
m = Prophet(yearly_seasonality=True, weekly_seasonality=True, daily_seasonality=False)
# Si tiene festivos, crear DataFrame de festivos y añadir
# feriados = pd.DataFrame({'ds': [...], 'holiday': [...]})
# m.add_country_holidays(country_name='PT')

# Ajuste del modelo
m.fit(df)

Paso 5: Generar previsiones y intervalos de confianza

Crear un DataFrame de futuro con el período deseado (por ej. 30 días) y predecir. Prophet devuelve la previsión con intervalo (yhat, yhat_lower, yhat_upper).

future = m.make_future_dataframe(periods=30, freq='D')
forecast = m.predict(future)

# Ver algunas columnas útiles
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())

Paso 6: Visualizar e interpretar resultados

Visualizar la previsión y los componentes para ver tendencia, estacionalidad y efectos de festivos. Esto ayuda a interpretar el porqué de las previsiones.

m.plot(forecast)
plt.title('Previsión con Prophet')
plt.show()

m.plot_components(forecast)
plt.show()

Paso 7: Validar el modelo (backtesting simple)

Hacer validación temporal: separar los últimos N días como prueba, entrenar en el resto y comparar previsiones con valores reales usando métricas como MAE o RMSE.

from sklearn.metrics import mean_absolute_error, mean_squared_error

# Ejemplo: validar últimos 30 días
train = df.iloc[:-30]
test = df.iloc[-30:]

m2 = Prophet(yearly_seasonality=True, weekly_seasonality=True)
m2.fit(train)
future2 = m2.make_future_dataframe(periods=30, freq='D')
forecast2 = m2.predict(future2)
pred = forecast2.set_index('ds').loc[test['ds'], 'yhat']

mae = mean_absolute_error(test['y'], pred)
rmse = mean_squared_error(test['y'], pred, squared=False)
print('MAE:', mae, 'RMSE:', rmse)

Verificar el resultado

Confirmar que el gráfico de previsión incluye la línea yhat y que los componentes muestran estacionalidad. Validar con MAE/RMSE y comprobar si los errores están dentro de la tolerancia del negocio. Si los intervalos yhat_lower/upper cubren la mayoría de los puntos reales, el modelo está calibrado.

Conclusión

Has aprendido a preparar datos, entrenar Prophet, generar previsiones y validar con backtesting. Próximos pasos: experimentar con changepoint_prior_scale, añadir regresores externos (promociones, precios) y usar cross-validation avanzada de Prophet. Consejo: comienza con modelos simples y añade complejidad solo cuando los errores lo justifiquen.