IESO Load Examples#
Retrieves data from the Independent Electricity System Operator of Canada. https://www.ieso.ca/
import pandas as pd
import gridstatus
from gridstatus.ieso import IESO
ieso = IESO()
print(gridstatus.list_isos())
Name Id Class 0 Midcontinent ISO miso MISO 1 California ISO caiso CAISO 2 PJM pjm PJM 3 Electric Reliability Council of Texas ercot Ercot 4 Southwest Power Pool spp SPP 5 New York ISO nyiso NYISO 6 ISO New England isone ISONE 7 Independent Electricity System Operator ieso IESO
Get Five Minute Load#
Five minute load for the market and Ontario. From https://reports-public.ieso.ca/public/RealtimeConstTotals/
yesterday_start = pd.Timestamp.now().normalize() - pd.Timedelta(days=1)
today_start = yesterday_start + pd.Timedelta(days=1)
load = ieso.get_load(date=yesterday_start, end=today_start)
load.head(5)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 24/24 [00:01<00:00, 12.68it/s]
Interval Start | Interval End | Market Total Load | Ontario Load | |
---|---|---|---|---|
0 | 2024-01-15 00:00:00-05:00 | 2024-01-15 00:05:00-05:00 | 19_160.0000 | 16_159.8000 |
1 | 2024-01-15 00:05:00-05:00 | 2024-01-15 00:10:00-05:00 | 19_131.7000 | 16_131.7000 |
2 | 2024-01-15 00:10:00-05:00 | 2024-01-15 00:15:00-05:00 | 19_073.1000 | 16_073.5000 |
3 | 2024-01-15 00:15:00-05:00 | 2024-01-15 00:20:00-05:00 | 19_056.0000 | 16_053.8000 |
4 | 2024-01-15 00:20:00-05:00 | 2024-01-15 00:25:00-05:00 | 18_871.8000 | 15_871.7000 |
Load Forecast#
Hourly load forecast for Ontario through tomorrow. https://www.ieso.ca/-/media/Files/IESO/Power-Data/Ontario-Demand-multiday.ashx
load_forecast = ieso.get_load_forecast("latest")
load_forecast.head(5)
Interval Start | Interval End | Publish Time | Ontario Load Forecast | |
---|---|---|---|---|
0 | 2024-01-11 00:00:00-05:00 | 2024-01-11 01:00:00-05:00 | 2024-01-16 19:52:18-05:00 | 16_243.0000 |
1 | 2024-01-11 01:00:00-05:00 | 2024-01-11 02:00:00-05:00 | 2024-01-16 19:52:18-05:00 | 15_464.0000 |
2 | 2024-01-11 02:00:00-05:00 | 2024-01-11 03:00:00-05:00 | 2024-01-16 19:52:18-05:00 | 15_048.0000 |
3 | 2024-01-11 03:00:00-05:00 | 2024-01-11 04:00:00-05:00 | 2024-01-16 19:52:18-05:00 | 14_821.0000 |
4 | 2024-01-11 04:00:00-05:00 | 2024-01-11 05:00:00-05:00 | 2024-01-16 19:52:18-05:00 | 14_797.0000 |
Zonal Load Forecast#
Hourly zonal load forecast up to 34 days in the future for Ontario, East, and West. https://reports-public.ieso.ca/public/OntarioZonalDemand
zonal_load_forecast = ieso.get_zonal_load_forecast("latest")
zonal_load_forecast.tail(5)
Interval Start | Interval End | Publish Time | Ontario Load Forecast | East Load Forecast | West Load Forecast | |
---|---|---|---|---|---|---|
835 | 2024-02-19 19:00:00-05:00 | 2024-02-19 20:00:00-05:00 | 2024-01-16 09:01:05-05:00 | 19_573.0000 | 19_027.0000 | 546.0000 |
836 | 2024-02-19 20:00:00-05:00 | 2024-02-19 21:00:00-05:00 | 2024-01-16 09:01:05-05:00 | 19_162.0000 | 18_616.0000 | 546.0000 |
837 | 2024-02-19 21:00:00-05:00 | 2024-02-19 22:00:00-05:00 | 2024-01-16 09:01:05-05:00 | 18_557.0000 | 18_017.0000 | 540.0000 |
838 | 2024-02-19 22:00:00-05:00 | 2024-02-19 23:00:00-05:00 | 2024-01-16 09:01:05-05:00 | 17_826.0000 | 17_296.0000 | 530.0000 |
839 | 2024-02-19 23:00:00-05:00 | 2024-02-20 00:00:00-05:00 | 2024-01-16 09:01:05-05:00 | 17_080.0000 | 16_564.0000 | 516.0000 |
Fuel Mix#
We can get the historical and real-time mix of fuel types used in the IESO region.
today = pd.Timestamp.now().normalize()
ten_days_ago = today - pd.Timedelta(days=10)
fuel_mix = ieso.get_fuel_mix(ten_days_ago, today)
fuel_mix.head()
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:11<00:00, 1.11s/it]
Interval Start | Interval End | Biofuel | Gas | Hydro | Nuclear | Solar | Wind | |
---|---|---|---|---|---|---|---|---|
0 | 2024-01-06 00:00:00-05:00 | 2024-01-06 01:00:00-05:00 | 22.0000 | 5_038.0000 | 3_833.0000 | 9_449.0000 | 0.0000 | 297.0000 |
1 | 2024-01-06 01:00:00-05:00 | 2024-01-06 02:00:00-05:00 | 18.0000 | 4_202.0000 | 3_643.0000 | 9_443.0000 | 0.0000 | 415.0000 |
2 | 2024-01-06 02:00:00-05:00 | 2024-01-06 03:00:00-05:00 | 18.0000 | 3_805.0000 | 3_610.0000 | 9_448.0000 | 0.0000 | 511.0000 |
3 | 2024-01-06 03:00:00-05:00 | 2024-01-06 04:00:00-05:00 | 18.0000 | 3_991.0000 | 3_565.0000 | 9_453.0000 | 0.0000 | 496.0000 |
4 | 2024-01-06 04:00:00-05:00 | 2024-01-06 05:00:00-05:00 | 18.0000 | 3_725.0000 | 3_690.0000 | 9_452.0000 | 0.0000 | 675.0000 |
Generator Output and Capability/Available Capacity#
We can see the output for all assets in IESO on an hourly basis. The variable generators (wind and solar) have a forecast and an available capacity. The non-variable generators have a capability.
gen_output = ieso.get_generator_report_hourly(today)
gen_output.head()
Interval Start | Interval End | Generator Name | Fuel Type | Output MW | Capability MW | Available Capacity MW | Forecast MW | |
---|---|---|---|---|---|---|---|---|
0 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | ATIKOKAN-G1 | BIOFUEL | 0.0000 | 215.0000 | NaN | NaN |
1 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | CALSTOCKGS | BIOFUEL | 22.0000 | 38.0000 | NaN | NaN |
2 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | TBAYBOWATER CTS | BIOFUEL | 0.0000 | 50.0000 | NaN | NaN |
3 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | BRIGHTON BEACH | GAS | 241.0000 | 565.0000 | NaN | NaN |
4 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | CARDINAL | GAS | 0.0000 | 184.0000 | NaN | NaN |
gen_output[gen_output["Fuel Type"] == "SOLAR"].head()
Interval Start | Interval End | Generator Name | Fuel Type | Output MW | Capability MW | Available Capacity MW | Forecast MW | |
---|---|---|---|---|---|---|---|---|
128 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | GRANDSF | SOLAR | 0.0000 | NaN | 100.0000 | 0.0000 |
129 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | KINGSTONSF | SOLAR | 0.0000 | NaN | 0.0000 | 0.0000 |
130 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | NANTICOKE SOLAR | SOLAR | 0.0000 | NaN | 44.0000 | 0.0000 |
131 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | NORTHLAND POWER SOLAR FACILITIES | SOLAR | 0.0000 | NaN | 40.0000 | 0.0000 |
132 | 2024-01-16 00:00:00-05:00 | 2024-01-16 01:00:00-05:00 | SOUTHGATE SF | SOLAR | 0.0000 | NaN | 50.0000 | 0.0000 |
gen_output.groupby(["Fuel Type", "Interval Start", "Interval End"]).sum(
numeric_only=True
).tail()
Output MW | Capability MW | Available Capacity MW | Forecast MW | |||
---|---|---|---|---|---|---|
Fuel Type | Interval Start | Interval End | ||||
WIND | 2024-01-16 14:00:00-05:00 | 2024-01-16 15:00:00-05:00 | 3_011.0000 | 0.0000 | 4_896.0000 | 3_035.0000 |
2024-01-16 15:00:00-05:00 | 2024-01-16 16:00:00-05:00 | 3_115.0000 | 0.0000 | 4_896.0000 | 3_171.0000 | |
2024-01-16 16:00:00-05:00 | 2024-01-16 17:00:00-05:00 | 2_945.0000 | 0.0000 | 4_896.0000 | 3_031.0000 | |
2024-01-16 17:00:00-05:00 | 2024-01-16 18:00:00-05:00 | 2_842.0000 | 0.0000 | 4_916.0000 | 2_908.0000 | |
2024-01-16 18:00:00-05:00 | 2024-01-16 19:00:00-05:00 | 2_877.0000 | 0.0000 | 4_916.0000 | 2_946.0000 |