Energy QC clean AI-training-safe

European Temperature

Weather-normalized daily electricity demand per European zone: per-zone regression of daily mean load on heating + cooling degree days, with the temperature component stripped out. What remains is the underlying demand trend with weather removed - what utilities and traders use to see real demand growth/decline. Joins ENTSO-E load to NASA POWER degree days.

124K
rows
40
zones
2018-2026
coverage
2.4 MB
download
Source
derived
Licence
Redistributable open data
Updates
Daily
Data through
2026-07-29
Quality
QC clean · 0 failures
Format
Apache Parquet + dictionary

Safe to train on

Built only from a named, redistributable official source under a documented open licence - not scraped web data. No copyright grey zone, no personal data. Ships machine-readable Croissant metadata (ML Commons - loads in Hugging Face / Kaggle / Google), an AI training-licence manifest documenting source, licence and provenance for your model's data governance, and a machine-readable data dictionary (drop it into an agent / RAG prompt so the model knows every column) - all inspectable before you buy.

What's included

  • Daily weather-normalized demand (MW), per-zone HDD+CDD regression
  • Temperature effect removed → see structural demand trend
  • Derived from European load (ENTSO-E) + degree days (NASA POWER)
  • Source: ENTSO-E + NASA POWER (public domain / CC-BY, derived)

Schema

ColumnTypeDescriptionFilledDistinct
zone str ENTSO-E zone 100.0% 40
ts timestamp (UTC) Day 100.0% 3,132
demand_norm_mw float Weather-normalized daily mean demand, MW 100.0% 70,464
unit str Unit 100.0% 1
res_min int Native resolution (daily = 1440) 100.0% 1

Sample & preview

Every purchase ships as Apache Parquet with a data dictionary and the full QC report. A free sample (first rows + schema) is downloadable here - confirm fit before you buy. Source: derived (redistributable open data; attribution passes through - see our Licence).

Don't trust screenshots - drop the sample into your notebook right now.

import pandas as pd
df = pd.read_parquet("european-temperature-adjusted-demand_sample.parquet")
df.info()   # typed columns, gap-aware, ready to join
⬇ Download free Parquet sample or CSV for Excel
Coverage: 40 zones

AT · BE · BG · CH · CZ · DE_LU · DK1 · DK2 · EE · ES · FI · FR · GR · HR · HU · IE_SEM · IT_CALA · IT_CNOR · IT_CSUD · IT_NORD · IT_SARD · IT_SICI · IT_SUD · LT · LV · NL · NO1 · NO2 · NO3 · NO4 · NO5 · PL · PT · RO · SE1 · SE2 · SE3 · SE4 · SI · SK