Quick Start
Quick Start
This guide shows you how to download electricity data and run a simple forecast in just a few steps.
-
Set up environment
import os# Set your ENTSOE API keyos.environ["ENTSOE_API_KEY"] = "your-api-key-here"# Optional: Configure multithreading (requires Python 3.13t+)os.environ["PYTHON_GIL"] = "0"os.environ["MAX_THREADS"] = "16" -
Download data with DataPipeline
from epftoolbox2.pipelines import DataPipelinefrom epftoolbox2.data.sources import EntsoeSource, OpenMeteoSource, CalendarSourcefrom epftoolbox2.data.transformers import ResampleTransformer, LagTransformerfrom epftoolbox2.data.validators import NullCheckValidatorpipeline = (DataPipeline().add_source(EntsoeSource(country_code="PL",api_key=os.environ["ENTSOE_API_KEY"],type=["load", "price"])).add_source(OpenMeteoSource(latitude=52.2297,longitude=21.0122,horizon=7,prefix="warsaw")).add_source(CalendarSource(country="PL",holidays="binary",weekday="onehot",daylight_hours=True)).add_transformer(ResampleTransformer(freq="1h")).add_transformer(LagTransformer(columns=["load_actual"],lags=[1, 2, 7],freq="day")).add_validator(NullCheckValidator(columns=["load_actual", "price"])))df = pipeline.run(start="2023-01-01", end="2024-04-01", cache=True)print(f"Downloaded {len(df)} rows with {len(df.columns)} columns") -
Train models with ModelPipeline
from epftoolbox2.pipelines import ModelPipelinefrom epftoolbox2.models import OLSModel, LassoCVModelfrom epftoolbox2.evaluators import MAEEvaluatorfrom epftoolbox2.exporters import ExcelExporter, TerminalExporterpredictors = ["load_actual","is_monday_d+{horizon}","is_tuesday_d+{horizon}","is_wednesday_d+{horizon}","is_thursday_d+{horizon}","is_friday_d+{horizon}","is_saturday_d+{horizon}","is_sunday_d+{horizon}","is_holiday_d+{horizon}","daylight_hours_d+{horizon}","load_actual_d-1","load_actual_d-7","warsaw_temperature_2m_d+{horizon}",]pipeline = (ModelPipeline().add_model(OLSModel(predictors=predictors, training_window=365, name="OLS")).add_model(LassoCVModel(predictors=predictors, training_window=365, cv=5, name="LassoCV")).add_evaluator(MAEEvaluator()).add_exporter(TerminalExporter()).add_exporter(ExcelExporter("results.xlsx")))report = pipeline.run(data=df,test_start="2024-02-01",test_end="2024-03-01",target="price",horizon=7,save_dir="results",) -
Analyze results
# Overall summaryprint(report.summary())# By forecast horizonprint(report.by_horizon())# By hour of dayprint(report.by_hour())
Expected Output
Summary┏━━━━━━━━━━┳━━━━━━━━━┓┃ model ┃ MAE ┃┡━━━━━━━━━━╇━━━━━━━━━┩│ OLS │ 26.0199 ││ LassoCV │ 28.1098 │└──────────┴─────────┘What’s Next?
Data Pipeline Overview Learn about sources, transformers, and validators
Model Pipeline Overview Configure models, evaluators, and exporters