ForecastAgent / forecasting.py
ashantharosary's picture
Upload 8 files
c493ccf verified
Raw
History Blame Contribute Delete
992 Bytes
import pandas as pd
import plotly.express as px
from prophet import Prophet
class ForecastEngine:
def forecast(self, df, date_col, val_col):
# Validate column presence
if date_col not in df.columns or val_col not in df.columns:
raise ValueError(f"Selected columns not found: {date_col}, {val_col}")
df2 = df[[date_col, val_col]].copy()
df2.rename(columns={date_col: "ds", val_col: "y"}, inplace=True)
# Convert datetime with validation
df2["ds"] = pd.to_datetime(df2["ds"], errors="coerce")
df2.dropna(subset=["ds", "y"], inplace=True)
if df2.empty:
raise ValueError("Filtered DataFrame is empty. Check date/value columns.")
model = Prophet()
model.fit(df2)
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)
fig = px.line(forecast, x="ds", y="yhat", title="Forecast")
return forecast, fig