ReEDS: Electricity demand profiles 2025
Authors/Creators
Description
This record provides modeled hourly state-level electricity demand profiles for the contiguous United States (U.S.), produced by Evolved Energy Research (EER) using the EnergyPathways model and used in the Regional Energy Deployment System (ReEDS) model.
Additional details are provided in the ReEDS documentation.
Demand assumptions
Demand profiles represent gross end-use load (i.e., distributed generation is not subtracted) in hour-ending format, in units of [MWh/h].
Profiles are generated bottom-up using sectoral electricity demand assumptions described in the EER 2024 Annual Decarbonization Perspective (ADP) and corresponding Technical Documentation. The ReEDS User Guide provides a lookup table between the scenario naming used in the ADP and ReEDS, and the ReEDS documentation provides a high-level description of the scenarios.
Temporal resolution
Demand profiles are defined for 7 model years (2021, 2025, 2030, 2035, 2040, 2045, 2050); for each model year, 15 weather years (2007–2013 + 2016–2023) of bottom-up hourly profiles are provided. "Model" years define the sectoral mix of demand-site technologies and "weather" years define the temperature and calendar days (weekdays / weekends / holidays); both impact the hourly profiles. All profiles are at hourly resolution in U.S. Central Standard Time (UTC–06:00). For leap years, the final day of the weather year (December 31) is dropped, such that each weather year contains 8760 hours.
File structure
Modeled electricity demand profiles are saved as hierarchical Data Format (HDF5) files. The following Python function can be used to read a capacity factor .h5 file into a pandas dataframe:
import h5py
import pandas as pd
def read_demand_profile(filepath):
"""
Read a demand profile from `filepath` and return a pandas dataframe.
Usage:
`df = read_profile('/path/to/filename.h5')`
"""
encoding = 'utf-8'
with h5py.File(filepath, 'r') as f:
years = list(f.keys())
first_year = years[0]
not_states = ['columns', 'datetime']
states = [i for i in list(f[first_year].keys()) if i not in not_states]
dictout = {}
for year in years:
for state in states:
dictout[year,state] = pd.Series(f[year][state][:])
df = pd.concat(dictout, axis=1, names=('year','state'))
df.index = pd.to_datetime(
pd.Series(f[first_year]['datetime'], name='datetime')
.str.decode(encoding)
)
return df
Files
Files
(382.1 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:02aa8607339b482dc70af5facd009796
|
133.0 MB | Download |
|
md5:93c3381e19acc9ceedfc0a135d1e6370
|
131.1 MB | Download |
|
md5:385b0f7ef9117390a10ea2ada1c0961b
|
118.0 MB | Download |