Electricity Demand Data

A Python-based project focused on collecting, processing, and forecasting hourly electricity demand data.
https://github.com/open-energy-transition/demandcast

Category: Energy Systems
Sub Category: Load and Demand Forecasting

Keywords from Contributors

energy-system-model

Last synced: about 2 hours ago
JSON representation

Repository metadata

Retrieve historic electricity demand data and generate synthetic future demand predictions using our ML model

README.md

About

DemandCast is a Python-based project focused on collecting, processing, and forecasting hourly electricity demand data. The aim of this project is to support energy planning studies by using machine learning models to generate hourly time series of future electricity demand or for countries without available data.

Features

  • Retrieval of open hourly and sub-hourly electricity demand data from public sources (ETL).
  • Retrieval of weather and socio-economic data (ETL).
  • Forecasting using machine learning models (models).
  • Modular design for adding new countries or data sources.
  • Support for reproducible, containerized development.

The project is in active development, we are always looking for suggestions and contributions!

Repository structure

demandcast/
├── docs/                   # Project documentation (MkDocs)
├── ETL/                    # Scripts for extracting, transforming, and loading data
├── models/                 # Machine learning models for demand forecasting
├── .devcontainer/          # Development container configuration
├── .github/                # Github specifics such as actions
├── .gitignore              # File lists that git ignores
├── .pre-commit-config.yaml # Pre-commit configuration
├── .python-version         # Python version
├── CONTRIBUTING.md         # Guide to contributing
├── Dockerfile              # Docker setup for containerized runs
├── mkdocs.yml              # Documentation configuration file
├── pyproject.toml          # Project metadata and dependencies
├── ruff.toml               # Ruff configuration
└── uv.lock                 # Lockfile for project's dependencies

Data collection progress

Find the code that we used to retrieve the data in their respective files inside the ETL folder.

Getting started

1. Clone the repository

git clone https://github.com/open-energy-transition/demandcast.git
cd demandcast

2. Set up your environment

This project uses uv as a pacakge manager. It can be used within the provided Dockerfile or installed standalone (see installing uv)

uv sync

Alternatively, you may use conda to install the packages listed in pyproject.toml.

3. Run scripts

Scripts can be run directly using:

uv run path/to/script.py

If you have chosen conda as your package manager, you can run scripts with:

python path/to/script.py

Jupyter notebooks (details) can be launched with:

uv run --with jupyter jupyter lab --allow-root

Development workflow

Run tests and check test coverage

uv run pytest
uv run pytest --cov --cov-report term-missing

Pre-commit and lint code

uvx ruff format
uvx ruff check --fix
uvx mypy
uvx pre-commit

Documentation

The documentation is currently hosted on GitHub pages connected to this repository. It is built with mkdocs.

To run it locally:

uv run mkdocs serve

Contributing

We welcome contributions in the form of:

  • Country-specific ETL modules
  • New or improved forecasting models
  • Documentation and testing enhancements

Please follow the repository’s structure and submit your changes via pull request.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: about 22 hours ago

Total Commits: 34
Total Committers: 4
Avg Commits per committer: 8.5
Development Distribution Score (DDS): 0.559

Commits in past year: 34
Committers in past year: 4
Avg Commits per committer in past year: 8.5
Development Distribution Score (DDS) in past year: 0.559

Name Email Commits
Enrico Antonini 5****i 15
Kevin Steijn 1****s 13
pre-commit-ci[bot] 6****] 4
Vamsipriya22 g****2@g****m 2

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 16
Total pull requests: 104
Average time to close issues: about 1 month
Average time to close pull requests: 13 days
Total issue authors: 2
Total pull request authors: 4
Average comments per issue: 0.75
Average comments per pull request: 0.24
Merged pull request: 82
Bot issues: 0
Bot pull requests: 10

Past year issues: 16
Past year pull requests: 104
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 13 days
Past year issue authors: 2
Past year pull request authors: 4
Past year average comments per issue: 0.75
Past year average comments per pull request: 0.24
Past year merged pull request: 82
Past year bot issues: 0
Past year bot pull requests: 10

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/open-energy-transition/demandcast

Top Issue Authors

  • eantonini (12)
  • ElectricMountains (4)

Top Pull Request Authors

  • eantonini (42)
  • ElectricMountains (37)
  • Vamsipriya22 (15)
  • pre-commit-ci[bot] (10)

Top Issue Labels

  • Enhancement (14)
  • good first issue (2)

Top Pull Request Labels

  • Python (78)
  • Docs (47)
  • GitHub Actions (29)

Dependencies

Dockerfile docker
  • python 3.12 build
pyproject.toml pypi
  • mkdocs-material >=9.5.50
uv.lock pypi
  • babel 2.16.0
  • certifi 2024.12.14
  • charset-normalizer 3.4.1
  • click 8.1.8
  • colorama 0.4.6
  • electric-demand-data 0.1.0
  • ghp-import 2.1.0
  • idna 3.10
  • iniconfig 2.0.0
  • jinja2 3.1.5
  • markdown 3.7
  • markupsafe 3.0.2
  • mergedeep 1.3.4
  • mkdocs 1.6.1
  • mkdocs-get-deps 0.2.0
  • mkdocs-material 9.5.50
  • mkdocs-material-extensions 1.3.1
  • packaging 24.2
  • paginate 0.5.7
  • pathspec 0.12.1
  • platformdirs 4.3.6
  • pluggy 1.5.0
  • pygments 2.19.1
  • pymdown-extensions 10.14.1
  • pytest 8.3.4
  • python-dateutil 2.9.0.post0
  • pyyaml 6.0.2
  • pyyaml-env-tag 0.1
  • regex 2024.11.6
  • requests 2.32.3
  • six 1.17.0
  • urllib3 2.3.0
  • watchdog 6.0.0

Score: 3.7841896339182615