From 55467ed60f8027d1367a303e64f77112d03746bc Mon Sep 17 00:00:00 2001 From: daniel-rdt Date: Thu, 17 Jul 2025 14:17:54 +0200 Subject: [PATCH 1/6] feat: share testing notebook for pecd data --- notebooks/test_pecd.ipynb | 671 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 671 insertions(+) create mode 100644 notebooks/test_pecd.ipynb diff --git a/notebooks/test_pecd.ipynb b/notebooks/test_pecd.ipynb new file mode 100644 index 0000000000..97bc7dcc8f --- /dev/null +++ b/notebooks/test_pecd.ipynb @@ -0,0 +1,671 @@ +{ + "cells": [ + { + "cell_type": "raw", + "id": "34b0c9d21186ed1b", + "metadata": {}, + "source": [ + "SPDX-FileCopyrightText: Open Energy Transition gGmbH\n", + "SPDX-License-Identifier: MIT" + ] + }, + { + "cell_type": "markdown", + "id": "26c90410", + "metadata": {}, + "source": [ + "This notebooks compares the available PECD data with the necessary data for TYNDP Scenarios for:\n", + "- [Wind Offshore](#wind-offshore)\n", + "- [Wind Onshore](#wind-onshore)\n", + "- [LF Solar PV Rooftop](#pv-rooftop)\n", + "- [LF Solar PV Utility](#pv-utility)" + ] + }, + { + "cell_type": "markdown", + "id": "fb198b53545bc593", + "metadata": {}, + "source": [ + "# Imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22c0b3ba418ce49e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "id": "86ce443498ca0a12", + "metadata": {}, + "source": "# Load raw data" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95e919de88c25b3b", + "metadata": {}, + "outputs": [], + "source": [ + "offshore_hubs = pd.read_excel(\n", + " \"../data/tyndp_2024_bundle/Offshore hubs/GENERATOR.xlsx\",\n", + " sheet_name=\"ZONE_POTENTIAL\",\n", + ").replace(\"UK\", \"GB\", regex=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cbc562242c1ed4f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-17T09:03:08.674263Z", + "start_time": "2025-07-17T09:03:08.562171Z" + } + }, + "outputs": [], + "source": [ + "investment_data_generators = pd.read_excel(\n", + " \"../data/tyndp_2024_bundle/Investment Datasets/GENERATOR.xlsx\"\n", + ")\n", + "investment_data_trajectories = pd.read_excel(\n", + " \"../data/tyndp_2024_bundle/Investment Datasets/TRAJECTORY.xlsx\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "c7d621dd49ebd185", + "metadata": {}, + "source": [ + "# Load processed PECD data & compare" + ] + }, + { + "cell_type": "markdown", + "id": "5e5456d0a1947b3", + "metadata": {}, + "source": [ + "\n", + "## Wind Offshore" + ] + }, + { + "cell_type": "markdown", + "id": "0e9fec86", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Wind Offshore for 2030" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1f880209ce3a46d", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_offshore = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Offshore_2030.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "67c47bb8", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "450247c8", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_offshore.loc[:, (pecd_offshore == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d3a8b85", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_not_available = set(pecd_offshore.loc[:, (pecd_offshore == 0).all()].columns)\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "4d50ced2", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0610400d", + "metadata": {}, + "outputs": [], + "source": [ + "tech_not_available = set(offshore_hubs.query(\"MAX_MW == 0\").OFFSHORE_NODE.unique())\n", + "tech_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "c3749668", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7767c4cf", + "metadata": {}, + "outputs": [], + "source": [ + "difference = list(pecd_not_available.difference(tech_not_available))\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "35b7fcb9", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a5f083b", + "metadata": {}, + "outputs": [], + "source": [ + "offshore_hubs.query(\"OFFSHORE_NODE in @difference\")" + ] + }, + { + "cell_type": "markdown", + "id": "9059480a", + "metadata": {}, + "source": [ + "In fact the nodes `GROR002`, `MTOR001` and `HROH001` are included in the Offshore Hub data and have a max capacity > 0.\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Wind Offshore`!" + ] + }, + { + "cell_type": "markdown", + "id": "93b9906ddb5f87c2", + "metadata": {}, + "source": [ + "\n", + "## Wind Onshore" + ] + }, + { + "cell_type": "markdown", + "id": "5e60de54", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Wind Onshore for 2030" + ] + }, + { + "cell_type": "markdown", + "id": "9d9dd04b", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3149b7e6", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_onshore = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Onshore_2030.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1b9b2624", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b4cc646", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_onshore.loc[:, (pecd_onshore == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a9112f8", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_not_available = set(pecd_onshore.loc[:, (pecd_onshore == 0).all()].columns)\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "e0a204c2", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89db92e7", + "metadata": {}, + "outputs": [], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Wind Onshore') and `MAX CAPACITY [MW]` == 0\"\n", + " ).NODE.unique()\n", + ")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e54a1a5", + "metadata": {}, + "outputs": [], + "source": [ + "difference = list(pecd_not_available.difference(tech_not_available))\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "902fb244", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8e0f3c0a", + "metadata": {}, + "outputs": [], + "source": [ + "investment_data_trajectories.query(\"NODE in @difference\")" + ] + }, + { + "cell_type": "markdown", + "id": "af5ad185ab905530", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Wind Onshore`!" + ] + }, + { + "cell_type": "markdown", + "id": "30b33c59c28b4c4c", + "metadata": {}, + "source": [ + "\n", + "## LF Solar PV Rooftop" + ] + }, + { + "cell_type": "markdown", + "id": "c6dc29ef", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Solar PV Rooftop for 2030" + ] + }, + { + "cell_type": "markdown", + "id": "73c40fa5", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "884abc41", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_solar_rooftop = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2030.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "a0b85494", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2498958", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "424774cd", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_not_available = set(\n", + " pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()].columns\n", + ")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "57de3260", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92e8070c", + "metadata": {}, + "outputs": [], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Solar PV Rooftop') and `MAX CAPACITY [MW]` == 0\"\n", + " ).NODE.unique()\n", + ")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fb226b2b", + "metadata": {}, + "outputs": [], + "source": [ + "difference = list(pecd_not_available.difference(tech_not_available))\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "eed61667", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00c3d1d9", + "metadata": {}, + "outputs": [], + "source": [ + "investment_data_trajectories.query(\n", + " \"NODE in @difference and TECHNOLOGY == 'Solar PV Rooftop'\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "cedb0959", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Solar PV Rooftop`!" + ] + }, + { + "cell_type": "markdown", + "id": "8e01f764f0aa06a3", + "metadata": {}, + "source": [ + "\n", + "## LF Solar PV Utility" + ] + }, + { + "cell_type": "markdown", + "id": "1af6aad9", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Solar PV Utility for 2030" + ] + }, + { + "cell_type": "markdown", + "id": "733f8363", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd209c2b", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_solar_utility = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2030.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1608532d", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aafed306", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3514ecc0", + "metadata": {}, + "outputs": [], + "source": [ + "pecd_not_available = set(\n", + " pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()].columns\n", + ")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "f12ba18c", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7ea162c", + "metadata": {}, + "outputs": [], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Solar PV Utility') and `MAX CAPACITY [MW]` == 0\"\n", + " ).NODE.unique()\n", + ")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "491b16b5", + "metadata": {}, + "outputs": [], + "source": [ + "difference = list(pecd_not_available.difference(tech_not_available))\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "1d136ab4", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51b9ad4b", + "metadata": {}, + "outputs": [], + "source": [ + "investment_data_trajectories.query(\n", + " \"NODE in @difference and TECHNOLOGY == 'Solar PV Utility'\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9890be4c", + "metadata": {}, + "source": [ + "in fact, the missing nodes `AL00` and `SE01` are included in the investment data set and have a max capacity > 0.\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Solar PV Utility`!" + ] + }, + { + "cell_type": "markdown", + "id": "f87a8edf7e1277d3", + "metadata": {}, + "source": [ + "## Solar CSP" + ] + }, + { + "cell_type": "markdown", + "id": "20e253fb8875bb41", + "metadata": {}, + "source": [ + "Check if solar CSP is indeed modelled in TYNDP as there is limited to no mention of Solar CSP in the methodology report and the Scenario results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52e14eb1", + "metadata": {}, + "outputs": [], + "source": [ + "investment_data_trajectories.query(\"TECHNOLOGY.str.contains('CSP')\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fcf7a28b", + "metadata": {}, + "outputs": [], + "source": [ + "investment_data_generators.query(\"TECHNOLOGY.str.contains('CSP')\")" + ] + }, + { + "cell_type": "markdown", + "id": "0911b58c", + "metadata": {}, + "source": [ + "Solar CSP has no specified trajectory or potential. It appears for all scenarios in the investment generator datasets, however with no CAPEX, OPEX or efficiency." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "", + "language": "python", + "name": "" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 6758b64ebf85cff4bf3b126136670c1a9fb5a551 Mon Sep 17 00:00:00 2001 From: daniel-rdt Date: Thu, 24 Jul 2025 11:42:47 +0200 Subject: [PATCH 2/6] doc: include test notebook outputs --- notebooks/test_pecd.ipynb | 2645 +++++++++++++++++++++++++++++++++++-- 1 file changed, 2526 insertions(+), 119 deletions(-) diff --git a/notebooks/test_pecd.ipynb b/notebooks/test_pecd.ipynb index 97bc7dcc8f..e11d0ef5d7 100644 --- a/notebooks/test_pecd.ipynb +++ b/notebooks/test_pecd.ipynb @@ -31,13 +31,18 @@ }, { "cell_type": "code", - "execution_count": null, "id": "22c0b3ba418ce49e", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.114825Z", + "start_time": "2025-07-24T09:40:26.101062Z" + } + }, "source": [ "import pandas as pd" - ] + ], + "outputs": [], + "execution_count": 11 }, { "cell_type": "markdown", @@ -47,28 +52,31 @@ }, { "cell_type": "code", - "execution_count": null, "id": "95e919de88c25b3b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.224255Z", + "start_time": "2025-07-24T09:40:26.124698Z" + } + }, "source": [ "offshore_hubs = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Offshore hubs/GENERATOR.xlsx\",\n", " sheet_name=\"ZONE_POTENTIAL\",\n", ").replace(\"UK\", \"GB\", regex=True)" - ] + ], + "outputs": [], + "execution_count": 12 }, { "cell_type": "code", - "execution_count": null, "id": "8cbc562242c1ed4f", "metadata": { "ExecuteTime": { - "end_time": "2025-07-17T09:03:08.674263Z", - "start_time": "2025-07-17T09:03:08.562171Z" + "end_time": "2025-07-24T09:40:26.328742Z", + "start_time": "2025-07-24T09:40:26.236743Z" } }, - "outputs": [], "source": [ "investment_data_generators = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Investment Datasets/GENERATOR.xlsx\"\n", @@ -76,7 +84,9 @@ "investment_data_trajectories = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Investment Datasets/TRAJECTORY.xlsx\"\n", ")" - ] + ], + "outputs": [], + "execution_count": 13 }, { "cell_type": "markdown", @@ -105,15 +115,20 @@ }, { "cell_type": "code", - "execution_count": null, "id": "d1f880209ce3a46d", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.342732Z", + "start_time": "2025-07-24T09:40:26.337687Z" + } + }, "source": [ "pecd_offshore = pd.read_csv(\n", " \"../resources/test-sector-tyndp/pecd_data_Wind_Offshore_2030.csv\", index_col=0\n", ")" - ] + ], + "outputs": [], + "execution_count": 14 }, { "cell_type": "markdown", @@ -125,24 +140,271 @@ }, { "cell_type": "code", - "execution_count": null, "id": "450247c8", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.360131Z", + "start_time": "2025-07-24T09:40:26.351652Z" + } + }, "source": [ "pecd_offshore.loc[:, (pecd_offshore == 0).all()]" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " ALOR001 BGOR001 CYOR001 GROR002 HROH001 MEOR001 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " MTOR001 UAOR001 GBOH001 GBOH002 \n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 \n", + "\n", + "[168 rows x 10 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ALOR001BGOR001CYOR001GROR002HROH001MEOR001MTOR001UAOR001GBOH001GBOH002
2013-03-01 00:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.00.00.00.0
.................................
2013-03-07 19:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.00.00.00.0
\n", + "

168 rows × 10 columns

\n", + "
" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 15 }, { "cell_type": "code", - "execution_count": null, "id": "8d3a8b85", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.388904Z", + "start_time": "2025-07-24T09:40:26.385991Z" + } + }, "source": [ "pecd_not_available = set(pecd_offshore.loc[:, (pecd_offshore == 0).all()].columns)\n", "pecd_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALOR001',\n", + " 'BGOR001',\n", + " 'CYOR001',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'GROR002',\n", + " 'HROH001',\n", + " 'MEOR001',\n", + " 'MTOR001',\n", + " 'UAOR001'}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 16 }, { "cell_type": "markdown", @@ -154,14 +416,40 @@ }, { "cell_type": "code", - "execution_count": null, "id": "0610400d", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.420221Z", + "start_time": "2025-07-24T09:40:26.415199Z" + } + }, "source": [ "tech_not_available = set(offshore_hubs.query(\"MAX_MW == 0\").OFFSHORE_NODE.unique())\n", "tech_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALOR001',\n", + " 'BGOR001',\n", + " 'CYOR001',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'MEOR001',\n", + " 'NOMOH01',\n", + " 'NONOH01',\n", + " 'NOSOH02',\n", + " 'SEOH001',\n", + " 'UAOR001'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 17 }, { "cell_type": "markdown", @@ -173,14 +461,30 @@ }, { "cell_type": "code", - "execution_count": null, "id": "7767c4cf", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.460556Z", + "start_time": "2025-07-24T09:40:26.457951Z" + } + }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "['MTOR001', 'HROH001', 'GROR002']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 18 }, { "cell_type": "markdown", @@ -192,13 +496,927 @@ }, { "cell_type": "code", - "execution_count": null, "id": "6a5f083b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.495159Z", + "start_time": "2025-07-24T09:40:26.482738Z" + } + }, "source": [ "offshore_hubs.query(\"OFFSHORE_NODE in @difference\")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " OFFSHORE_NODE OFFSHORE_NODE_TYPE YEAR SCENARIO TECH1 \\\n", + "255 GROR002 Radial 2030 Distributed Energy AC_FB_R \n", + "256 GROR002 Radial 2035 Distributed Energy AC_FB_R \n", + "257 GROR002 Radial 2040 Distributed Energy AC_FB_R \n", + "258 GROR002 Radial 2045 Distributed Energy AC_FB_R \n", + "259 GROR002 Radial 2050 Distributed Energy AC_FB_R \n", + "260 GROR002 Radial 2030 Global Ambition AC_FB_R \n", + "261 GROR002 Radial 2035 Global Ambition AC_FB_R \n", + "262 GROR002 Radial 2040 Global Ambition AC_FB_R \n", + "263 GROR002 Radial 2045 Global Ambition AC_FB_R \n", + "264 GROR002 Radial 2050 Global Ambition AC_FB_R \n", + "265 GROR002 Radial 2030 National Trends AC_FB_R \n", + "266 GROR002 Radial 2035 National Trends AC_FB_R \n", + "267 GROR002 Radial 2040 National Trends AC_FB_R \n", + "268 GROR002 Radial 2045 National Trends AC_FB_R \n", + "269 GROR002 Radial 2050 National Trends AC_FB_R \n", + "270 HROH001 Hub 2030 Distributed Energy AC_FB_R \n", + "271 HROH001 Hub 2035 Distributed Energy AC_FB_R \n", + "272 HROH001 Hub 2040 Distributed Energy AC_FB_R \n", + "273 HROH001 Hub 2045 Distributed Energy AC_FB_R \n", + "274 HROH001 Hub 2050 Distributed Energy AC_FB_R \n", + "275 HROH001 Hub 2030 Global Ambition AC_FB_R \n", + "276 HROH001 Hub 2035 Global Ambition AC_FB_R \n", + "277 HROH001 Hub 2040 Global Ambition AC_FB_R \n", + "278 HROH001 Hub 2045 Global Ambition AC_FB_R \n", + "279 HROH001 Hub 2050 Global Ambition AC_FB_R \n", + "280 HROH001 Hub 2030 National Trends AC_FB_R \n", + "281 HROH001 Hub 2035 National Trends AC_FB_R \n", + "282 HROH001 Hub 2040 National Trends AC_FB_R \n", + "283 HROH001 Hub 2045 National Trends AC_FB_R \n", + "284 HROH001 Hub 2050 National Trends AC_FB_R \n", + "435 MTOR001 Radial 2030 Distributed Energy AC_FB_R \n", + "436 MTOR001 Radial 2035 Distributed Energy AC_FB_R \n", + "437 MTOR001 Radial 2040 Distributed Energy AC_FB_R \n", + "438 MTOR001 Radial 2045 Distributed Energy AC_FB_R \n", + "439 MTOR001 Radial 2050 Distributed Energy AC_FB_R \n", + "440 MTOR001 Radial 2030 Global Ambition AC_FB_R \n", + "441 MTOR001 Radial 2035 Global Ambition AC_FB_R \n", + "442 MTOR001 Radial 2040 Global Ambition AC_FB_R \n", + "443 MTOR001 Radial 2045 Global Ambition AC_FB_R \n", + "444 MTOR001 Radial 2050 Global Ambition AC_FB_R \n", + "445 MTOR001 Radial 2030 National Trends AC_FB_R \n", + "446 MTOR001 Radial 2035 National Trends AC_FB_R \n", + "447 MTOR001 Radial 2040 National Trends AC_FB_R \n", + "448 MTOR001 Radial 2045 National Trends AC_FB_R \n", + "449 MTOR001 Radial 2050 National Trends AC_FB_R \n", + "\n", + " TECH2 TECH3 TECH4 TECH5 TECH6 EXISTING_MW MARGIN_MW \\\n", + "255 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "256 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "257 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "258 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "259 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "260 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "261 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "262 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "263 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "264 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "265 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "266 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "267 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "268 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "269 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "270 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "271 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "272 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "273 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "274 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "275 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "276 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "277 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "278 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "279 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "280 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "281 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "282 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "283 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "284 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "435 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "436 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "437 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "438 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "439 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "440 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "441 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "442 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "443 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "444 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "445 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "446 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "447 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "448 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "449 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "\n", + " MAX_MW \n", + "255 510.0 \n", + "256 1030.0 \n", + "257 1550.0 \n", + "258 2550.0 \n", + "259 3000.0 \n", + "260 510.0 \n", + "261 1030.0 \n", + "262 1550.0 \n", + "263 2550.0 \n", + "264 3000.0 \n", + "265 510.0 \n", + "266 1030.0 \n", + "267 1550.0 \n", + "268 2550.0 \n", + "269 3000.0 \n", + "270 510.0 \n", + "271 855.0 \n", + "272 1200.0 \n", + "273 2100.0 \n", + "274 3000.0 \n", + "275 510.0 \n", + "276 855.0 \n", + "277 1200.0 \n", + "278 2100.0 \n", + "279 3000.0 \n", + "280 510.0 \n", + "281 855.0 \n", + "282 1200.0 \n", + "283 2100.0 \n", + "284 3000.0 \n", + "435 50.0 \n", + "436 225.0 \n", + "437 400.0 \n", + "438 400.0 \n", + "439 400.0 \n", + "440 50.0 \n", + "441 225.0 \n", + "442 400.0 \n", + "443 400.0 \n", + "444 400.0 \n", + "445 50.0 \n", + "446 225.0 \n", + "447 400.0 \n", + "448 400.0 \n", + "449 400.0 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OFFSHORE_NODEOFFSHORE_NODE_TYPEYEARSCENARIOTECH1TECH2TECH3TECH4TECH5TECH6EXISTING_MWMARGIN_MWMAX_MW
255GROR002Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
256GROR002Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
257GROR002Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
258GROR002Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
259GROR002Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
260GROR002Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
261GROR002Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
262GROR002Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
263GROR002Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
264GROR002Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
265GROR002Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
266GROR002Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
267GROR002Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
268GROR002Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
269GROR002Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
270HROH001Hub2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
271HROH001Hub2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
272HROH001Hub2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
273HROH001Hub2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
274HROH001Hub2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
275HROH001Hub2030Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
276HROH001Hub2035Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
277HROH001Hub2040Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
278HROH001Hub2045Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
279HROH001Hub2050Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
280HROH001Hub2030National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
281HROH001Hub2035National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
282HROH001Hub2040National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
283HROH001Hub2045National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
284HROH001Hub2050National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
435MTOR001Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
436MTOR001Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
437MTOR001Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
438MTOR001Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
439MTOR001Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
440MTOR001Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
441MTOR001Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
442MTOR001Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
443MTOR001Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
444MTOR001Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
445MTOR001Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
446MTOR001Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
447MTOR001Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
448MTOR001Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
449MTOR001Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
\n", + "
" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 19 }, { "cell_type": "markdown", @@ -237,15 +1455,20 @@ }, { "cell_type": "code", - "execution_count": null, "id": "3149b7e6", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.527640Z", + "start_time": "2025-07-24T09:40:26.522662Z" + } + }, "source": [ "pecd_onshore = pd.read_csv(\n", " \"../resources/test-sector-tyndp/pecd_data_Wind_Onshore_2030.csv\", index_col=0\n", ")" - ] + ], + "outputs": [], + "execution_count": 20 }, { "cell_type": "markdown", @@ -257,24 +1480,201 @@ }, { "cell_type": "code", - "execution_count": null, "id": "4b4cc646", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.558612Z", + "start_time": "2025-07-24T09:40:26.551596Z" + } + }, "source": [ "pecd_onshore.loc[:, (pecd_onshore == 0).all()]" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 6 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1MT00ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.0
.....................
2013-03-07 19:00:000.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.0
\n", + "

168 rows × 6 columns

\n", + "
" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 21 }, { "cell_type": "code", - "execution_count": null, "id": "3a9112f8", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.603639Z", + "start_time": "2025-07-24T09:40:26.600605Z" + } + }, "source": [ "pecd_not_available = set(pecd_onshore.loc[:, (pecd_onshore == 0).all()].columns)\n", "pecd_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 22 }, { "cell_type": "markdown", @@ -286,10 +1686,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "89db92e7", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.640566Z", + "start_time": "2025-07-24T09:40:26.635595Z" + } + }, "source": [ "tech_not_available = set(\n", " investment_data_trajectories.query(\n", @@ -297,18 +1700,47 @@ " ).NODE.unique()\n", ")\n", "tech_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'DEKF', 'DKKF', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 23 }, { "cell_type": "code", - "execution_count": null, "id": "1e54a1a5", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.667570Z", + "start_time": "2025-07-24T09:40:26.664907Z" + } + }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'ITCO']" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 24 }, { "cell_type": "markdown", @@ -320,13 +1752,63 @@ }, { "cell_type": "code", - "execution_count": null, "id": "8e0f3c0a", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.693255Z", + "start_time": "2025-07-24T09:40:26.688214Z" + } + }, "source": [ "investment_data_trajectories.query(\"NODE in @difference\")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 25 }, { "cell_type": "markdown", @@ -365,15 +1847,20 @@ }, { "cell_type": "code", - "execution_count": null, "id": "884abc41", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.724915Z", + "start_time": "2025-07-24T09:40:26.719758Z" + } + }, "source": [ "pecd_solar_rooftop = pd.read_csv(\n", " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2030.csv\", index_col=0\n", ")" - ] + ], + "outputs": [], + "execution_count": 26 }, { "cell_type": "markdown", @@ -385,26 +1872,215 @@ }, { "cell_type": "code", - "execution_count": null, "id": "d2498958", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.758746Z", + "start_time": "2025-07-24T09:40:26.751541Z" + } + }, "source": [ "pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()]" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 27 }, { "cell_type": "code", - "execution_count": null, "id": "424774cd", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.791842Z", + "start_time": "2025-07-24T09:40:26.788677Z" + } + }, "source": [ "pecd_not_available = set(\n", " pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()].columns\n", ")\n", "pecd_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 28 }, { "cell_type": "markdown", @@ -416,10 +2092,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "92e8070c", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.818146Z", + "start_time": "2025-07-24T09:40:26.813378Z" + } + }, "source": [ "tech_not_available = set(\n", " investment_data_trajectories.query(\n", @@ -427,18 +2106,63 @@ " ).NODE.unique()\n", ")\n", "tech_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'BA00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'EE00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'LT00',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'ME00',\n", + " 'NON1',\n", + " 'PL00',\n", + " 'SE01',\n", + " 'SK00'}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 29 }, { "cell_type": "code", - "execution_count": null, "id": "fb226b2b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.858363Z", + "start_time": "2025-07-24T09:40:26.855881Z" + } + }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'ITCO']" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 30 }, { "cell_type": "markdown", @@ -450,15 +2174,65 @@ }, { "cell_type": "code", - "execution_count": null, "id": "00c3d1d9", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.877482Z", + "start_time": "2025-07-24T09:40:26.872446Z" + } + }, "source": [ "investment_data_trajectories.query(\n", " \"NODE in @difference and TECHNOLOGY == 'Solar PV Rooftop'\"\n", ")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 31 }, { "cell_type": "markdown", @@ -497,15 +2271,20 @@ }, { "cell_type": "code", - "execution_count": null, "id": "fd209c2b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.909172Z", + "start_time": "2025-07-24T09:40:26.904991Z" + } + }, "source": [ "pecd_solar_utility = pd.read_csv(\n", " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2030.csv\", index_col=0\n", ")" - ] + ], + "outputs": [], + "execution_count": 32 }, { "cell_type": "markdown", @@ -517,26 +2296,215 @@ }, { "cell_type": "code", - "execution_count": null, "id": "aafed306", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.927436Z", + "start_time": "2025-07-24T09:40:26.921227Z" + } + }, "source": [ "pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()]" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 33 }, { "cell_type": "code", - "execution_count": null, "id": "3514ecc0", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:26.961776Z", + "start_time": "2025-07-24T09:40:26.958889Z" + } + }, "source": [ "pecd_not_available = set(\n", " pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()].columns\n", ")\n", "pecd_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 34 }, { "cell_type": "markdown", @@ -548,10 +2516,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "d7ea162c", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:27.001301Z", + "start_time": "2025-07-24T09:40:26.996434Z" + } + }, "source": [ "tech_not_available = set(\n", " investment_data_trajectories.query(\n", @@ -559,18 +2530,68 @@ " ).NODE.unique()\n", ")\n", "tech_not_available" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'BE00',\n", + " 'CH00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'EE00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'LT00',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'MT00',\n", + " 'NOM1',\n", + " 'NON1',\n", + " 'NOS0',\n", + " 'PL00',\n", + " 'SE02',\n", + " 'SE03',\n", + " 'SE04',\n", + " 'SI00',\n", + " 'SK00'}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 35 }, { "cell_type": "code", - "execution_count": null, "id": "491b16b5", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:27.025682Z", + "start_time": "2025-07-24T09:40:27.023293Z" + } + }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'ITCO', 'SE01']" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 36 }, { "cell_type": "markdown", @@ -582,15 +2603,120 @@ }, { "cell_type": "code", - "execution_count": null, "id": "51b9ad4b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:27.048390Z", + "start_time": "2025-07-24T09:40:27.042683Z" + } + }, "source": [ "investment_data_trajectories.query(\n", " \"NODE in @difference and TECHNOLOGY == 'Solar PV Utility'\"\n", ")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " NODE SCENARIO TECHNOLOGY YEAR MIN CAPACITY [MW] \\\n", + "1580 SE01 All Solar PV Utility 2030 0.0 \n", + "1581 SE01 All Solar PV Utility 2035 0.0 \n", + "1582 SE01 All Solar PV Utility 2040 0.0 \n", + "1583 SE01 All Solar PV Utility 2045 0.0 \n", + "1584 SE01 All Solar PV Utility 2050 0.0 \n", + "\n", + " MAX CAPACITY [MW] \n", + "1580 1000.0 \n", + "1581 1500.0 \n", + "1582 2000.0 \n", + "1583 2500.0 \n", + "1584 3000.0 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
1580SE01AllSolar PV Utility20300.01000.0
1581SE01AllSolar PV Utility20350.01500.0
1582SE01AllSolar PV Utility20400.02000.0
1583SE01AllSolar PV Utility20450.02500.0
1584SE01AllSolar PV Utility20500.03000.0
\n", + "
" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 37 }, { "cell_type": "markdown", @@ -620,23 +2746,304 @@ }, { "cell_type": "code", - "execution_count": null, "id": "52e14eb1", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:27.138356Z", + "start_time": "2025-07-24T09:40:27.133387Z" + } + }, "source": [ "investment_data_trajectories.query(\"TECHNOLOGY.str.contains('CSP')\")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 38 }, { "cell_type": "code", - "execution_count": null, "id": "fcf7a28b", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-24T09:40:27.173921Z", + "start_time": "2025-07-24T09:40:27.166849Z" + } + }, "source": [ "investment_data_generators.query(\"TECHNOLOGY.str.contains('CSP')\")" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + " NODE YEAR SCENARIO TECHNOLOGY CAPEX [€/MW] OPEX[€/MW/a] \\\n", + "4 All 2030 Distributed Energy Solar CSP 0.0 0.0 \n", + "27 All 2030 Global Ambition Solar CSP 0.0 0.0 \n", + "50 All 2030 National Trends Solar CSP 0.0 0.0 \n", + "73 All 2035 Distributed Energy Solar CSP 0.0 0.0 \n", + "96 All 2035 Global Ambition Solar CSP 0.0 0.0 \n", + "119 All 2035 National Trends Solar CSP 0.0 0.0 \n", + "142 All 2040 Distributed Energy Solar CSP 0.0 0.0 \n", + "165 All 2040 Global Ambition Solar CSP 0.0 0.0 \n", + "188 All 2040 National Trends Solar CSP 0.0 0.0 \n", + "211 All 2045 Distributed Energy Solar CSP 0.0 0.0 \n", + "234 All 2045 Global Ambition Solar CSP 0.0 0.0 \n", + "257 All 2045 National Trends Solar CSP 0.0 0.0 \n", + "280 All 2050 Distributed Energy Solar CSP 0.0 0.0 \n", + "303 All 2050 Global Ambition Solar CSP 0.0 0.0 \n", + "326 All 2050 National Trends Solar CSP 0.0 0.0 \n", + "\n", + " EFFICIENCY \n", + "4 NaN \n", + "27 NaN \n", + "50 NaN \n", + "73 NaN \n", + "96 NaN \n", + "119 NaN \n", + "142 NaN \n", + "165 NaN \n", + "188 NaN \n", + "211 NaN \n", + "234 NaN \n", + "257 NaN \n", + "280 NaN \n", + "303 NaN \n", + "326 NaN " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODEYEARSCENARIOTECHNOLOGYCAPEX [€/MW]OPEX[€/MW/a]EFFICIENCY
4All2030Distributed EnergySolar CSP0.00.0NaN
27All2030Global AmbitionSolar CSP0.00.0NaN
50All2030National TrendsSolar CSP0.00.0NaN
73All2035Distributed EnergySolar CSP0.00.0NaN
96All2035Global AmbitionSolar CSP0.00.0NaN
119All2035National TrendsSolar CSP0.00.0NaN
142All2040Distributed EnergySolar CSP0.00.0NaN
165All2040Global AmbitionSolar CSP0.00.0NaN
188All2040National TrendsSolar CSP0.00.0NaN
211All2045Distributed EnergySolar CSP0.00.0NaN
234All2045Global AmbitionSolar CSP0.00.0NaN
257All2045National TrendsSolar CSP0.00.0NaN
280All2050Distributed EnergySolar CSP0.00.0NaN
303All2050Global AmbitionSolar CSP0.00.0NaN
326All2050National TrendsSolar CSP0.00.0NaN
\n", + "
" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 39 }, { "cell_type": "markdown", @@ -649,9 +3056,9 @@ ], "metadata": { "kernelspec": { - "display_name": "", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "" + "name": "python3" }, "language_info": { "codemirror_mode": { From abb59137783325667f09839c2ab5f97cee2144cd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 24 Jul 2025 09:44:22 +0000 Subject: [PATCH 3/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- notebooks/test_pecd.ipynb | 2373 +------------------------------------ 1 file changed, 53 insertions(+), 2320 deletions(-) diff --git a/notebooks/test_pecd.ipynb b/notebooks/test_pecd.ipynb index e11d0ef5d7..c82cc6811c 100644 --- a/notebooks/test_pecd.ipynb +++ b/notebooks/test_pecd.ipynb @@ -42,7 +42,7 @@ "import pandas as pd" ], "outputs": [], - "execution_count": 11 + "execution_count": null }, { "cell_type": "markdown", @@ -66,7 +66,7 @@ ").replace(\"UK\", \"GB\", regex=True)" ], "outputs": [], - "execution_count": 12 + "execution_count": null }, { "cell_type": "code", @@ -86,7 +86,7 @@ ")" ], "outputs": [], - "execution_count": 13 + "execution_count": null }, { "cell_type": "markdown", @@ -128,7 +128,7 @@ ")" ], "outputs": [], - "execution_count": 14 + "execution_count": null }, { "cell_type": "markdown", @@ -150,225 +150,8 @@ "source": [ "pecd_offshore.loc[:, (pecd_offshore == 0).all()]" ], - "outputs": [ - { - "data": { - "text/plain": [ - " ALOR001 BGOR001 CYOR001 GROR002 HROH001 MEOR001 \\\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "... ... ... ... ... ... ... \n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "\n", - " MTOR001 UAOR001 GBOH001 GBOH002 \n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 \n", - "... ... ... ... ... \n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 \n", - "\n", - "[168 rows x 10 columns]" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ALOR001BGOR001CYOR001GROR002HROH001MEOR001MTOR001UAOR001GBOH001GBOH002
2013-03-01 00:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.00.00.00.0
.................................
2013-03-07 19:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.00.00.00.0
\n", - "

168 rows × 10 columns

\n", - "
" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 15 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -383,28 +166,8 @@ "pecd_not_available = set(pecd_offshore.loc[:, (pecd_offshore == 0).all()].columns)\n", "pecd_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'ALOR001',\n", - " 'BGOR001',\n", - " 'CYOR001',\n", - " 'GBOH001',\n", - " 'GBOH002',\n", - " 'GROR002',\n", - " 'HROH001',\n", - " 'MEOR001',\n", - " 'MTOR001',\n", - " 'UAOR001'}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 16 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -427,29 +190,8 @@ "tech_not_available = set(offshore_hubs.query(\"MAX_MW == 0\").OFFSHORE_NODE.unique())\n", "tech_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'ALOR001',\n", - " 'BGOR001',\n", - " 'CYOR001',\n", - " 'GBOH001',\n", - " 'GBOH002',\n", - " 'MEOR001',\n", - " 'NOMOH01',\n", - " 'NONOH01',\n", - " 'NOSOH02',\n", - " 'SEOH001',\n", - " 'UAOR001'}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 17 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -472,19 +214,8 @@ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [ - { - "data": { - "text/plain": [ - "['MTOR001', 'HROH001', 'GROR002']" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 18 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -506,917 +237,8 @@ "source": [ "offshore_hubs.query(\"OFFSHORE_NODE in @difference\")" ], - "outputs": [ - { - "data": { - "text/plain": [ - " OFFSHORE_NODE OFFSHORE_NODE_TYPE YEAR SCENARIO TECH1 \\\n", - "255 GROR002 Radial 2030 Distributed Energy AC_FB_R \n", - "256 GROR002 Radial 2035 Distributed Energy AC_FB_R \n", - "257 GROR002 Radial 2040 Distributed Energy AC_FB_R \n", - "258 GROR002 Radial 2045 Distributed Energy AC_FB_R \n", - "259 GROR002 Radial 2050 Distributed Energy AC_FB_R \n", - "260 GROR002 Radial 2030 Global Ambition AC_FB_R \n", - "261 GROR002 Radial 2035 Global Ambition AC_FB_R \n", - "262 GROR002 Radial 2040 Global Ambition AC_FB_R \n", - "263 GROR002 Radial 2045 Global Ambition AC_FB_R \n", - "264 GROR002 Radial 2050 Global Ambition AC_FB_R \n", - "265 GROR002 Radial 2030 National Trends AC_FB_R \n", - "266 GROR002 Radial 2035 National Trends AC_FB_R \n", - "267 GROR002 Radial 2040 National Trends AC_FB_R \n", - "268 GROR002 Radial 2045 National Trends AC_FB_R \n", - "269 GROR002 Radial 2050 National Trends AC_FB_R \n", - "270 HROH001 Hub 2030 Distributed Energy AC_FB_R \n", - "271 HROH001 Hub 2035 Distributed Energy AC_FB_R \n", - "272 HROH001 Hub 2040 Distributed Energy AC_FB_R \n", - "273 HROH001 Hub 2045 Distributed Energy AC_FB_R \n", - "274 HROH001 Hub 2050 Distributed Energy AC_FB_R \n", - "275 HROH001 Hub 2030 Global Ambition AC_FB_R \n", - "276 HROH001 Hub 2035 Global Ambition AC_FB_R \n", - "277 HROH001 Hub 2040 Global Ambition AC_FB_R \n", - "278 HROH001 Hub 2045 Global Ambition AC_FB_R \n", - "279 HROH001 Hub 2050 Global Ambition AC_FB_R \n", - "280 HROH001 Hub 2030 National Trends AC_FB_R \n", - "281 HROH001 Hub 2035 National Trends AC_FB_R \n", - "282 HROH001 Hub 2040 National Trends AC_FB_R \n", - "283 HROH001 Hub 2045 National Trends AC_FB_R \n", - "284 HROH001 Hub 2050 National Trends AC_FB_R \n", - "435 MTOR001 Radial 2030 Distributed Energy AC_FB_R \n", - "436 MTOR001 Radial 2035 Distributed Energy AC_FB_R \n", - "437 MTOR001 Radial 2040 Distributed Energy AC_FB_R \n", - "438 MTOR001 Radial 2045 Distributed Energy AC_FB_R \n", - "439 MTOR001 Radial 2050 Distributed Energy AC_FB_R \n", - "440 MTOR001 Radial 2030 Global Ambition AC_FB_R \n", - "441 MTOR001 Radial 2035 Global Ambition AC_FB_R \n", - "442 MTOR001 Radial 2040 Global Ambition AC_FB_R \n", - "443 MTOR001 Radial 2045 Global Ambition AC_FB_R \n", - "444 MTOR001 Radial 2050 Global Ambition AC_FB_R \n", - "445 MTOR001 Radial 2030 National Trends AC_FB_R \n", - "446 MTOR001 Radial 2035 National Trends AC_FB_R \n", - "447 MTOR001 Radial 2040 National Trends AC_FB_R \n", - "448 MTOR001 Radial 2045 National Trends AC_FB_R \n", - "449 MTOR001 Radial 2050 National Trends AC_FB_R \n", - "\n", - " TECH2 TECH3 TECH4 TECH5 TECH6 EXISTING_MW MARGIN_MW \\\n", - "255 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", - "256 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", - "257 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", - "258 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", - "259 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", - "260 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", - "261 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", - "262 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", - "263 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", - "264 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", - "265 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", - "266 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", - "267 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", - "268 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", - "269 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", - "270 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", - "271 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", - "272 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", - "273 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", - "274 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", - "275 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", - "276 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", - "277 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", - "278 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", - "279 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", - "280 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", - "281 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", - "282 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", - "283 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", - "284 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", - "435 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", - "436 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", - "437 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "438 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "439 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "440 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", - "441 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", - "442 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "443 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "444 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "445 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", - "446 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", - "447 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "448 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "449 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", - "\n", - " MAX_MW \n", - "255 510.0 \n", - "256 1030.0 \n", - "257 1550.0 \n", - "258 2550.0 \n", - "259 3000.0 \n", - "260 510.0 \n", - "261 1030.0 \n", - "262 1550.0 \n", - "263 2550.0 \n", - "264 3000.0 \n", - "265 510.0 \n", - "266 1030.0 \n", - "267 1550.0 \n", - "268 2550.0 \n", - "269 3000.0 \n", - "270 510.0 \n", - "271 855.0 \n", - "272 1200.0 \n", - "273 2100.0 \n", - "274 3000.0 \n", - "275 510.0 \n", - "276 855.0 \n", - "277 1200.0 \n", - "278 2100.0 \n", - "279 3000.0 \n", - "280 510.0 \n", - "281 855.0 \n", - "282 1200.0 \n", - "283 2100.0 \n", - "284 3000.0 \n", - "435 50.0 \n", - "436 225.0 \n", - "437 400.0 \n", - "438 400.0 \n", - "439 400.0 \n", - "440 50.0 \n", - "441 225.0 \n", - "442 400.0 \n", - "443 400.0 \n", - "444 400.0 \n", - "445 50.0 \n", - "446 225.0 \n", - "447 400.0 \n", - "448 400.0 \n", - "449 400.0 " - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
OFFSHORE_NODEOFFSHORE_NODE_TYPEYEARSCENARIOTECH1TECH2TECH3TECH4TECH5TECH6EXISTING_MWMARGIN_MWMAX_MW
255GROR002Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
256GROR002Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
257GROR002Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
258GROR002Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
259GROR002Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
260GROR002Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
261GROR002Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
262GROR002Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
263GROR002Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
264GROR002Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
265GROR002Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
266GROR002Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
267GROR002Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
268GROR002Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
269GROR002Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
270HROH001Hub2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
271HROH001Hub2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
272HROH001Hub2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
273HROH001Hub2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
274HROH001Hub2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
275HROH001Hub2030Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
276HROH001Hub2035Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
277HROH001Hub2040Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
278HROH001Hub2045Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
279HROH001Hub2050Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
280HROH001Hub2030National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
281HROH001Hub2035National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
282HROH001Hub2040National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
283HROH001Hub2045National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
284HROH001Hub2050National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
435MTOR001Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
436MTOR001Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
437MTOR001Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
438MTOR001Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
439MTOR001Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
440MTOR001Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
441MTOR001Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
442MTOR001Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
443MTOR001Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
444MTOR001Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
445MTOR001Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
446MTOR001Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
447MTOR001Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
448MTOR001Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
449MTOR001Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
\n", - "
" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 19 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -1468,7 +290,7 @@ ")" ], "outputs": [], - "execution_count": 20 + "execution_count": null }, { "cell_type": "markdown", @@ -1490,164 +312,8 @@ "source": [ "pecd_onshore.loc[:, (pecd_onshore == 0).all()]" ], - "outputs": [ - { - "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 6 columns]" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LUB1LUF1LUV1MT00ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.0
.....................
2013-03-07 19:00:000.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.0
\n", - "

168 rows × 6 columns

\n", - "
" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 21 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -1662,19 +328,8 @@ "pecd_not_available = set(pecd_onshore.loc[:, (pecd_onshore == 0).all()].columns)\n", "pecd_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 22 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -1701,19 +356,8 @@ ")\n", "tech_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'DEKF', 'DKKF', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 23 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -1728,19 +372,8 @@ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [ - { - "data": { - "text/plain": [ - "['ITVI', 'ITCO']" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 24 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -1762,53 +395,8 @@ "source": [ "investment_data_trajectories.query(\"NODE in @difference\")" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Empty DataFrame\n", - "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", - "Index: []" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", - "
" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 25 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -1860,7 +448,7 @@ ")" ], "outputs": [], - "execution_count": 26 + "execution_count": null }, { "cell_type": "markdown", @@ -1882,176 +470,8 @@ "source": [ "pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()]" ], - "outputs": [ - { - "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 7 columns]" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", - "

168 rows × 7 columns

\n", - "
" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 27 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -2068,19 +488,8 @@ ")\n", "pecd_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 28 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2107,35 +516,8 @@ ")\n", "tech_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'AL00',\n", - " 'BA00',\n", - " 'DEKF',\n", - " 'DKKF',\n", - " 'EE00',\n", - " 'FR00',\n", - " 'GR00',\n", - " 'GR03',\n", - " 'LT00',\n", - " 'LUB1',\n", - " 'LUF1',\n", - " 'LUV1',\n", - " 'ME00',\n", - " 'NON1',\n", - " 'PL00',\n", - " 'SE01',\n", - " 'SK00'}" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 29 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -2150,19 +532,8 @@ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [ - { - "data": { - "text/plain": [ - "['ITVI', 'ITCO']" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 30 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2186,53 +557,8 @@ " \"NODE in @difference and TECHNOLOGY == 'Solar PV Rooftop'\"\n", ")" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Empty DataFrame\n", - "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", - "Index: []" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", - "
" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 31 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2284,7 +610,7 @@ ")" ], "outputs": [], - "execution_count": 32 + "execution_count": null }, { "cell_type": "markdown", @@ -2306,176 +632,8 @@ "source": [ "pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()]" ], - "outputs": [ - { - "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 7 columns]" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", - "

168 rows × 7 columns

\n", - "
" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 33 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -2492,19 +650,8 @@ ")\n", "pecd_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 34 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2531,40 +678,8 @@ ")\n", "tech_not_available" ], - "outputs": [ - { - "data": { - "text/plain": [ - "{'BE00',\n", - " 'CH00',\n", - " 'DEKF',\n", - " 'DKKF',\n", - " 'EE00',\n", - " 'FR00',\n", - " 'GR00',\n", - " 'GR03',\n", - " 'LT00',\n", - " 'LUB1',\n", - " 'LUF1',\n", - " 'LUV1',\n", - " 'MT00',\n", - " 'NOM1',\n", - " 'NON1',\n", - " 'NOS0',\n", - " 'PL00',\n", - " 'SE02',\n", - " 'SE03',\n", - " 'SE04',\n", - " 'SI00',\n", - " 'SK00'}" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 35 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -2579,19 +694,8 @@ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [ - { - "data": { - "text/plain": [ - "['ITVI', 'ITCO', 'SE01']" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 36 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2615,108 +719,8 @@ " \"NODE in @difference and TECHNOLOGY == 'Solar PV Utility'\"\n", ")" ], - "outputs": [ - { - "data": { - "text/plain": [ - " NODE SCENARIO TECHNOLOGY YEAR MIN CAPACITY [MW] \\\n", - "1580 SE01 All Solar PV Utility 2030 0.0 \n", - "1581 SE01 All Solar PV Utility 2035 0.0 \n", - "1582 SE01 All Solar PV Utility 2040 0.0 \n", - "1583 SE01 All Solar PV Utility 2045 0.0 \n", - "1584 SE01 All Solar PV Utility 2050 0.0 \n", - "\n", - " MAX CAPACITY [MW] \n", - "1580 1000.0 \n", - "1581 1500.0 \n", - "1582 2000.0 \n", - "1583 2500.0 \n", - "1584 3000.0 " - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
1580SE01AllSolar PV Utility20300.01000.0
1581SE01AllSolar PV Utility20350.01500.0
1582SE01AllSolar PV Utility20400.02000.0
1583SE01AllSolar PV Utility20450.02500.0
1584SE01AllSolar PV Utility20500.03000.0
\n", - "
" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 37 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -2756,53 +760,8 @@ "source": [ "investment_data_trajectories.query(\"TECHNOLOGY.str.contains('CSP')\")" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Empty DataFrame\n", - "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", - "Index: []" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", - "
" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 38 + "outputs": [], + "execution_count": null }, { "cell_type": "code", @@ -2816,234 +775,8 @@ "source": [ "investment_data_generators.query(\"TECHNOLOGY.str.contains('CSP')\")" ], - "outputs": [ - { - "data": { - "text/plain": [ - " NODE YEAR SCENARIO TECHNOLOGY CAPEX [€/MW] OPEX[€/MW/a] \\\n", - "4 All 2030 Distributed Energy Solar CSP 0.0 0.0 \n", - "27 All 2030 Global Ambition Solar CSP 0.0 0.0 \n", - "50 All 2030 National Trends Solar CSP 0.0 0.0 \n", - "73 All 2035 Distributed Energy Solar CSP 0.0 0.0 \n", - "96 All 2035 Global Ambition Solar CSP 0.0 0.0 \n", - "119 All 2035 National Trends Solar CSP 0.0 0.0 \n", - "142 All 2040 Distributed Energy Solar CSP 0.0 0.0 \n", - "165 All 2040 Global Ambition Solar CSP 0.0 0.0 \n", - "188 All 2040 National Trends Solar CSP 0.0 0.0 \n", - "211 All 2045 Distributed Energy Solar CSP 0.0 0.0 \n", - "234 All 2045 Global Ambition Solar CSP 0.0 0.0 \n", - "257 All 2045 National Trends Solar CSP 0.0 0.0 \n", - "280 All 2050 Distributed Energy Solar CSP 0.0 0.0 \n", - "303 All 2050 Global Ambition Solar CSP 0.0 0.0 \n", - "326 All 2050 National Trends Solar CSP 0.0 0.0 \n", - "\n", - " EFFICIENCY \n", - "4 NaN \n", - "27 NaN \n", - "50 NaN \n", - "73 NaN \n", - "96 NaN \n", - "119 NaN \n", - "142 NaN \n", - "165 NaN \n", - "188 NaN \n", - "211 NaN \n", - "234 NaN \n", - "257 NaN \n", - "280 NaN \n", - "303 NaN \n", - "326 NaN " - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODEYEARSCENARIOTECHNOLOGYCAPEX [€/MW]OPEX[€/MW/a]EFFICIENCY
4All2030Distributed EnergySolar CSP0.00.0NaN
27All2030Global AmbitionSolar CSP0.00.0NaN
50All2030National TrendsSolar CSP0.00.0NaN
73All2035Distributed EnergySolar CSP0.00.0NaN
96All2035Global AmbitionSolar CSP0.00.0NaN
119All2035National TrendsSolar CSP0.00.0NaN
142All2040Distributed EnergySolar CSP0.00.0NaN
165All2040Global AmbitionSolar CSP0.00.0NaN
188All2040National TrendsSolar CSP0.00.0NaN
211All2045Distributed EnergySolar CSP0.00.0NaN
234All2045Global AmbitionSolar CSP0.00.0NaN
257All2045National TrendsSolar CSP0.00.0NaN
280All2050Distributed EnergySolar CSP0.00.0NaN
303All2050Global AmbitionSolar CSP0.00.0NaN
326All2050National TrendsSolar CSP0.00.0NaN
\n", - "
" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 39 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -3056,9 +789,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "", "language": "python", - "name": "python3" + "name": "" }, "language_info": { "codemirror_mode": { From 949ac861635bfa558d76964dd67b13dca12361e3 Mon Sep 17 00:00:00 2001 From: daniel-rdt Date: Thu, 24 Jul 2025 11:56:21 +0200 Subject: [PATCH 4/6] doc: include test notebook outputs without notebook hook --- .pre-commit-config.yaml | 14 +- notebooks/test_pecd.ipynb | 2489 +++++++++++++++++++++++++++++++++++-- 2 files changed, 2385 insertions(+), 118 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 44fd5c5ad2..48fb83e4bf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,13 +34,13 @@ repos: types_or: [python, rst, markdown] files: ^(scripts|doc)/ -# Remove output from Jupyter notebooks -- repo: https://github.com/aflc/pre-commit-jupyter - rev: v1.2.1 - hooks: - - id: jupyter-notebook-cleanup - args: ['--remove-kernel-metadata'] - exclude: examples/solve-on-remote.ipynb +## Remove output from Jupyter notebooks +#- repo: https://github.com/aflc/pre-commit-jupyter +# rev: v1.2.1 +# hooks: +# - id: jupyter-notebook-cleanup +# args: ['--remove-kernel-metadata'] +# exclude: examples/solve-on-remote.ipynb # YAML formatting - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks diff --git a/notebooks/test_pecd.ipynb b/notebooks/test_pecd.ipynb index c82cc6811c..051494fa85 100644 --- a/notebooks/test_pecd.ipynb +++ b/notebooks/test_pecd.ipynb @@ -34,15 +34,15 @@ "id": "22c0b3ba418ce49e", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.114825Z", - "start_time": "2025-07-24T09:40:26.101062Z" + "end_time": "2025-07-24T09:55:18.631684Z", + "start_time": "2025-07-24T09:55:18.056039Z" } }, "source": [ "import pandas as pd" ], "outputs": [], - "execution_count": null + "execution_count": 1 }, { "cell_type": "markdown", @@ -55,8 +55,8 @@ "id": "95e919de88c25b3b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.224255Z", - "start_time": "2025-07-24T09:40:26.124698Z" + "end_time": "2025-07-24T09:55:18.810330Z", + "start_time": "2025-07-24T09:55:18.634704Z" } }, "source": [ @@ -66,15 +66,15 @@ ").replace(\"UK\", \"GB\", regex=True)" ], "outputs": [], - "execution_count": null + "execution_count": 2 }, { "cell_type": "code", "id": "8cbc562242c1ed4f", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.328742Z", - "start_time": "2025-07-24T09:40:26.236743Z" + "end_time": "2025-07-24T09:55:19.022702Z", + "start_time": "2025-07-24T09:55:18.911456Z" } }, "source": [ @@ -86,7 +86,7 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 3 }, { "cell_type": "markdown", @@ -118,8 +118,8 @@ "id": "d1f880209ce3a46d", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.342732Z", - "start_time": "2025-07-24T09:40:26.337687Z" + "end_time": "2025-07-24T09:55:19.038396Z", + "start_time": "2025-07-24T09:55:19.030066Z" } }, "source": [ @@ -128,7 +128,7 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 4 }, { "cell_type": "markdown", @@ -143,31 +143,268 @@ "id": "450247c8", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.360131Z", - "start_time": "2025-07-24T09:40:26.351652Z" + "end_time": "2025-07-24T09:55:19.057383Z", + "start_time": "2025-07-24T09:55:19.047437Z" } }, "source": [ "pecd_offshore.loc[:, (pecd_offshore == 0).all()]" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " ALOR001 BGOR001 CYOR001 GROR002 HROH001 MEOR001 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " MTOR001 UAOR001 GBOH001 GBOH002 \n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 \n", + "\n", + "[168 rows x 10 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ALOR001BGOR001CYOR001GROR002HROH001MEOR001MTOR001UAOR001GBOH001GBOH002
2013-03-01 00:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.00.00.00.0
.................................
2013-03-07 19:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.00.00.00.0
\n", + "

168 rows × 10 columns

\n", + "
" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 5 }, { "cell_type": "code", "id": "8d3a8b85", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.388904Z", - "start_time": "2025-07-24T09:40:26.385991Z" + "end_time": "2025-07-24T09:55:19.167395Z", + "start_time": "2025-07-24T09:55:19.164085Z" } }, "source": [ "pecd_not_available = set(pecd_offshore.loc[:, (pecd_offshore == 0).all()].columns)\n", "pecd_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALOR001',\n", + " 'BGOR001',\n", + " 'CYOR001',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'GROR002',\n", + " 'HROH001',\n", + " 'MEOR001',\n", + " 'MTOR001',\n", + " 'UAOR001'}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 6 }, { "cell_type": "markdown", @@ -182,16 +419,37 @@ "id": "0610400d", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.420221Z", - "start_time": "2025-07-24T09:40:26.415199Z" + "end_time": "2025-07-24T09:55:19.196383Z", + "start_time": "2025-07-24T09:55:19.190599Z" } }, "source": [ "tech_not_available = set(offshore_hubs.query(\"MAX_MW == 0\").OFFSHORE_NODE.unique())\n", "tech_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALOR001',\n", + " 'BGOR001',\n", + " 'CYOR001',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'MEOR001',\n", + " 'NOMOH01',\n", + " 'NONOH01',\n", + " 'NOSOH02',\n", + " 'SEOH001',\n", + " 'UAOR001'}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 7 }, { "cell_type": "markdown", @@ -206,16 +464,27 @@ "id": "7767c4cf", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.460556Z", - "start_time": "2025-07-24T09:40:26.457951Z" + "end_time": "2025-07-24T09:55:19.231902Z", + "start_time": "2025-07-24T09:55:19.229526Z" } }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "['HROH001', 'MTOR001', 'GROR002']" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 8 }, { "cell_type": "markdown", @@ -230,15 +499,924 @@ "id": "6a5f083b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.495159Z", - "start_time": "2025-07-24T09:40:26.482738Z" + "end_time": "2025-07-24T09:55:19.277749Z", + "start_time": "2025-07-24T09:55:19.263472Z" } }, "source": [ "offshore_hubs.query(\"OFFSHORE_NODE in @difference\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " OFFSHORE_NODE OFFSHORE_NODE_TYPE YEAR SCENARIO TECH1 \\\n", + "255 GROR002 Radial 2030 Distributed Energy AC_FB_R \n", + "256 GROR002 Radial 2035 Distributed Energy AC_FB_R \n", + "257 GROR002 Radial 2040 Distributed Energy AC_FB_R \n", + "258 GROR002 Radial 2045 Distributed Energy AC_FB_R \n", + "259 GROR002 Radial 2050 Distributed Energy AC_FB_R \n", + "260 GROR002 Radial 2030 Global Ambition AC_FB_R \n", + "261 GROR002 Radial 2035 Global Ambition AC_FB_R \n", + "262 GROR002 Radial 2040 Global Ambition AC_FB_R \n", + "263 GROR002 Radial 2045 Global Ambition AC_FB_R \n", + "264 GROR002 Radial 2050 Global Ambition AC_FB_R \n", + "265 GROR002 Radial 2030 National Trends AC_FB_R \n", + "266 GROR002 Radial 2035 National Trends AC_FB_R \n", + "267 GROR002 Radial 2040 National Trends AC_FB_R \n", + "268 GROR002 Radial 2045 National Trends AC_FB_R \n", + "269 GROR002 Radial 2050 National Trends AC_FB_R \n", + "270 HROH001 Hub 2030 Distributed Energy AC_FB_R \n", + "271 HROH001 Hub 2035 Distributed Energy AC_FB_R \n", + "272 HROH001 Hub 2040 Distributed Energy AC_FB_R \n", + "273 HROH001 Hub 2045 Distributed Energy AC_FB_R \n", + "274 HROH001 Hub 2050 Distributed Energy AC_FB_R \n", + "275 HROH001 Hub 2030 Global Ambition AC_FB_R \n", + "276 HROH001 Hub 2035 Global Ambition AC_FB_R \n", + "277 HROH001 Hub 2040 Global Ambition AC_FB_R \n", + "278 HROH001 Hub 2045 Global Ambition AC_FB_R \n", + "279 HROH001 Hub 2050 Global Ambition AC_FB_R \n", + "280 HROH001 Hub 2030 National Trends AC_FB_R \n", + "281 HROH001 Hub 2035 National Trends AC_FB_R \n", + "282 HROH001 Hub 2040 National Trends AC_FB_R \n", + "283 HROH001 Hub 2045 National Trends AC_FB_R \n", + "284 HROH001 Hub 2050 National Trends AC_FB_R \n", + "435 MTOR001 Radial 2030 Distributed Energy AC_FB_R \n", + "436 MTOR001 Radial 2035 Distributed Energy AC_FB_R \n", + "437 MTOR001 Radial 2040 Distributed Energy AC_FB_R \n", + "438 MTOR001 Radial 2045 Distributed Energy AC_FB_R \n", + "439 MTOR001 Radial 2050 Distributed Energy AC_FB_R \n", + "440 MTOR001 Radial 2030 Global Ambition AC_FB_R \n", + "441 MTOR001 Radial 2035 Global Ambition AC_FB_R \n", + "442 MTOR001 Radial 2040 Global Ambition AC_FB_R \n", + "443 MTOR001 Radial 2045 Global Ambition AC_FB_R \n", + "444 MTOR001 Radial 2050 Global Ambition AC_FB_R \n", + "445 MTOR001 Radial 2030 National Trends AC_FB_R \n", + "446 MTOR001 Radial 2035 National Trends AC_FB_R \n", + "447 MTOR001 Radial 2040 National Trends AC_FB_R \n", + "448 MTOR001 Radial 2045 National Trends AC_FB_R \n", + "449 MTOR001 Radial 2050 National Trends AC_FB_R \n", + "\n", + " TECH2 TECH3 TECH4 TECH5 TECH6 EXISTING_MW MARGIN_MW \\\n", + "255 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "256 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "257 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "258 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "259 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "260 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "261 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "262 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "263 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "264 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "265 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 510.0 \n", + "266 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 1030.0 \n", + "267 AC_FL_R DC_FB_R DC_FL_R NaN NaN 1550.0 0.0 \n", + "268 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 0.0 \n", + "269 AC_FL_R DC_FB_R DC_FL_R NaN NaN 2550.0 450.0 \n", + "270 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "271 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "272 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "273 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "274 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "275 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "276 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "277 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "278 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "279 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "280 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 0.0 \n", + "281 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 510.0 345.0 \n", + "282 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 0.0 \n", + "283 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 1200.0 900.0 \n", + "284 AC_FL_R DC_FB_OH DC_FL_OH H2_FB_OH H2_FL_OH 3000.0 0.0 \n", + "435 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "436 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "437 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "438 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "439 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "440 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "441 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "442 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "443 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "444 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "445 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 50.0 \n", + "446 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 225.0 \n", + "447 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "448 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "449 AC_FL_R DC_FB_R DC_FL_R NaN NaN 0.0 400.0 \n", + "\n", + " MAX_MW \n", + "255 510.0 \n", + "256 1030.0 \n", + "257 1550.0 \n", + "258 2550.0 \n", + "259 3000.0 \n", + "260 510.0 \n", + "261 1030.0 \n", + "262 1550.0 \n", + "263 2550.0 \n", + "264 3000.0 \n", + "265 510.0 \n", + "266 1030.0 \n", + "267 1550.0 \n", + "268 2550.0 \n", + "269 3000.0 \n", + "270 510.0 \n", + "271 855.0 \n", + "272 1200.0 \n", + "273 2100.0 \n", + "274 3000.0 \n", + "275 510.0 \n", + "276 855.0 \n", + "277 1200.0 \n", + "278 2100.0 \n", + "279 3000.0 \n", + "280 510.0 \n", + "281 855.0 \n", + "282 1200.0 \n", + "283 2100.0 \n", + "284 3000.0 \n", + "435 50.0 \n", + "436 225.0 \n", + "437 400.0 \n", + "438 400.0 \n", + "439 400.0 \n", + "440 50.0 \n", + "441 225.0 \n", + "442 400.0 \n", + "443 400.0 \n", + "444 400.0 \n", + "445 50.0 \n", + "446 225.0 \n", + "447 400.0 \n", + "448 400.0 \n", + "449 400.0 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OFFSHORE_NODEOFFSHORE_NODE_TYPEYEARSCENARIOTECH1TECH2TECH3TECH4TECH5TECH6EXISTING_MWMARGIN_MWMAX_MW
255GROR002Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
256GROR002Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
257GROR002Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
258GROR002Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
259GROR002Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
260GROR002Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
261GROR002Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
262GROR002Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
263GROR002Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
264GROR002Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
265GROR002Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0510.0510.0
266GROR002Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.01030.01030.0
267GROR002Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.00.01550.0
268GROR002Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.00.02550.0
269GROR002Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0
270HROH001Hub2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
271HROH001Hub2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
272HROH001Hub2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
273HROH001Hub2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
274HROH001Hub2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
275HROH001Hub2030Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
276HROH001Hub2035Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
277HROH001Hub2040Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
278HROH001Hub2045Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
279HROH001Hub2050Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
280HROH001Hub2030National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
281HROH001Hub2035National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
282HROH001Hub2040National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
283HROH001Hub2045National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
284HROH001Hub2050National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
435MTOR001Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
436MTOR001Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
437MTOR001Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
438MTOR001Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
439MTOR001Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
440MTOR001Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
441MTOR001Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
442MTOR001Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
443MTOR001Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
444MTOR001Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
445MTOR001Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
446MTOR001Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
447MTOR001Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
448MTOR001Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
449MTOR001Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
\n", + "
" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 9 }, { "cell_type": "markdown", @@ -280,8 +1458,8 @@ "id": "3149b7e6", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.527640Z", - "start_time": "2025-07-24T09:40:26.522662Z" + "end_time": "2025-07-24T09:55:19.309852Z", + "start_time": "2025-07-24T09:55:19.305260Z" } }, "source": [ @@ -290,7 +1468,7 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 10 }, { "cell_type": "markdown", @@ -305,31 +1483,198 @@ "id": "4b4cc646", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.558612Z", - "start_time": "2025-07-24T09:40:26.551596Z" + "end_time": "2025-07-24T09:55:19.352527Z", + "start_time": "2025-07-24T09:55:19.345733Z" } }, "source": [ "pecd_onshore.loc[:, (pecd_onshore == 0).all()]" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 6 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1MT00ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.0
.....................
2013-03-07 19:00:000.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.0
\n", + "

168 rows × 6 columns

\n", + "
" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 }, { "cell_type": "code", "id": "3a9112f8", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.603639Z", - "start_time": "2025-07-24T09:40:26.600605Z" + "end_time": "2025-07-24T09:55:19.455529Z", + "start_time": "2025-07-24T09:55:19.452259Z" } }, "source": [ "pecd_not_available = set(pecd_onshore.loc[:, (pecd_onshore == 0).all()].columns)\n", "pecd_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 12 }, { "cell_type": "markdown", @@ -344,8 +1689,8 @@ "id": "89db92e7", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.640566Z", - "start_time": "2025-07-24T09:40:26.635595Z" + "end_time": "2025-07-24T09:55:19.502363Z", + "start_time": "2025-07-24T09:55:19.497169Z" } }, "source": [ @@ -356,24 +1701,46 @@ ")\n", "tech_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'DEKF', 'DKKF', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 13 }, { "cell_type": "code", "id": "1e54a1a5", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.667570Z", - "start_time": "2025-07-24T09:40:26.664907Z" + "end_time": "2025-07-24T09:55:19.527300Z", + "start_time": "2025-07-24T09:55:19.524281Z" } }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'ITCO']" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 14 }, { "cell_type": "markdown", @@ -388,15 +1755,60 @@ "id": "8e0f3c0a", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.693255Z", - "start_time": "2025-07-24T09:40:26.688214Z" + "end_time": "2025-07-24T09:55:19.557339Z", + "start_time": "2025-07-24T09:55:19.552512Z" } }, "source": [ "investment_data_trajectories.query(\"NODE in @difference\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 15 }, { "cell_type": "markdown", @@ -438,8 +1850,8 @@ "id": "884abc41", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.724915Z", - "start_time": "2025-07-24T09:40:26.719758Z" + "end_time": "2025-07-24T09:55:19.588590Z", + "start_time": "2025-07-24T09:55:19.584778Z" } }, "source": [ @@ -448,7 +1860,7 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 16 }, { "cell_type": "markdown", @@ -463,23 +1875,191 @@ "id": "d2498958", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.758746Z", - "start_time": "2025-07-24T09:40:26.751541Z" + "end_time": "2025-07-24T09:55:19.609328Z", + "start_time": "2025-07-24T09:55:19.602105Z" } }, "source": [ "pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()]" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 17 }, { "cell_type": "code", "id": "424774cd", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.791842Z", - "start_time": "2025-07-24T09:40:26.788677Z" + "end_time": "2025-07-24T09:55:19.678702Z", + "start_time": "2025-07-24T09:55:19.675432Z" } }, "source": [ @@ -488,8 +2068,19 @@ ")\n", "pecd_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 18 }, { "cell_type": "markdown", @@ -504,8 +2095,8 @@ "id": "92e8070c", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.818146Z", - "start_time": "2025-07-24T09:40:26.813378Z" + "end_time": "2025-07-24T09:55:19.738439Z", + "start_time": "2025-07-24T09:55:19.733935Z" } }, "source": [ @@ -516,24 +2107,62 @@ ")\n", "tech_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'BA00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'EE00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'LT00',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'ME00',\n", + " 'NON1',\n", + " 'PL00',\n", + " 'SE01',\n", + " 'SK00'}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 19 }, { "cell_type": "code", "id": "fb226b2b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.858363Z", - "start_time": "2025-07-24T09:40:26.855881Z" + "end_time": "2025-07-24T09:55:19.778118Z", + "start_time": "2025-07-24T09:55:19.775582Z" } }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'ITCO']" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 20 }, { "cell_type": "markdown", @@ -548,8 +2177,8 @@ "id": "00c3d1d9", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.877482Z", - "start_time": "2025-07-24T09:40:26.872446Z" + "end_time": "2025-07-24T09:55:19.811130Z", + "start_time": "2025-07-24T09:55:19.799159Z" } }, "source": [ @@ -557,8 +2186,53 @@ " \"NODE in @difference and TECHNOLOGY == 'Solar PV Rooftop'\"\n", ")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 21 }, { "cell_type": "markdown", @@ -600,8 +2274,8 @@ "id": "fd209c2b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.909172Z", - "start_time": "2025-07-24T09:40:26.904991Z" + "end_time": "2025-07-24T09:55:19.867838Z", + "start_time": "2025-07-24T09:55:19.864008Z" } }, "source": [ @@ -610,7 +2284,7 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 22 }, { "cell_type": "markdown", @@ -625,23 +2299,191 @@ "id": "aafed306", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.927436Z", - "start_time": "2025-07-24T09:40:26.921227Z" + "end_time": "2025-07-24T09:55:19.886351Z", + "start_time": "2025-07-24T09:55:19.879612Z" } }, "source": [ "pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()]" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 23 }, { "cell_type": "code", "id": "3514ecc0", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:26.961776Z", - "start_time": "2025-07-24T09:40:26.958889Z" + "end_time": "2025-07-24T09:55:19.922912Z", + "start_time": "2025-07-24T09:55:19.920467Z" } }, "source": [ @@ -650,8 +2492,19 @@ ")\n", "pecd_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 24 }, { "cell_type": "markdown", @@ -666,8 +2519,8 @@ "id": "d7ea162c", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:27.001301Z", - "start_time": "2025-07-24T09:40:26.996434Z" + "end_time": "2025-07-24T09:55:19.965888Z", + "start_time": "2025-07-24T09:55:19.961115Z" } }, "source": [ @@ -678,24 +2531,67 @@ ")\n", "tech_not_available" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "{'BE00',\n", + " 'CH00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'EE00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'LT00',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'MT00',\n", + " 'NOM1',\n", + " 'NON1',\n", + " 'NOS0',\n", + " 'PL00',\n", + " 'SE02',\n", + " 'SE03',\n", + " 'SE04',\n", + " 'SI00',\n", + " 'SK00'}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 25 }, { "cell_type": "code", "id": "491b16b5", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:27.025682Z", - "start_time": "2025-07-24T09:40:27.023293Z" + "end_time": "2025-07-24T09:55:19.987686Z", + "start_time": "2025-07-24T09:55:19.985289Z" } }, "source": [ "difference = list(pecd_not_available.difference(tech_not_available))\n", "difference" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "['ITVI', 'SE01', 'ITCO']" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 26 }, { "cell_type": "markdown", @@ -710,8 +2606,8 @@ "id": "51b9ad4b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:27.048390Z", - "start_time": "2025-07-24T09:40:27.042683Z" + "end_time": "2025-07-24T09:55:20.015992Z", + "start_time": "2025-07-24T09:55:20.010245Z" } }, "source": [ @@ -719,8 +2615,108 @@ " \"NODE in @difference and TECHNOLOGY == 'Solar PV Utility'\"\n", ")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " NODE SCENARIO TECHNOLOGY YEAR MIN CAPACITY [MW] \\\n", + "1580 SE01 All Solar PV Utility 2030 0.0 \n", + "1581 SE01 All Solar PV Utility 2035 0.0 \n", + "1582 SE01 All Solar PV Utility 2040 0.0 \n", + "1583 SE01 All Solar PV Utility 2045 0.0 \n", + "1584 SE01 All Solar PV Utility 2050 0.0 \n", + "\n", + " MAX CAPACITY [MW] \n", + "1580 1000.0 \n", + "1581 1500.0 \n", + "1582 2000.0 \n", + "1583 2500.0 \n", + "1584 3000.0 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
1580SE01AllSolar PV Utility20300.01000.0
1581SE01AllSolar PV Utility20350.01500.0
1582SE01AllSolar PV Utility20400.02000.0
1583SE01AllSolar PV Utility20450.02500.0
1584SE01AllSolar PV Utility20500.03000.0
\n", + "
" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 27 }, { "cell_type": "markdown", @@ -753,30 +2749,301 @@ "id": "52e14eb1", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:27.138356Z", - "start_time": "2025-07-24T09:40:27.133387Z" + "end_time": "2025-07-24T09:55:20.050819Z", + "start_time": "2025-07-24T09:55:20.046317Z" } }, "source": [ "investment_data_trajectories.query(\"TECHNOLOGY.str.contains('CSP')\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", + "Index: []" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", + "
" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 28 }, { "cell_type": "code", "id": "fcf7a28b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:40:27.173921Z", - "start_time": "2025-07-24T09:40:27.166849Z" + "end_time": "2025-07-24T09:55:20.075613Z", + "start_time": "2025-07-24T09:55:20.069460Z" } }, "source": [ "investment_data_generators.query(\"TECHNOLOGY.str.contains('CSP')\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " NODE YEAR SCENARIO TECHNOLOGY CAPEX [€/MW] OPEX[€/MW/a] \\\n", + "4 All 2030 Distributed Energy Solar CSP 0.0 0.0 \n", + "27 All 2030 Global Ambition Solar CSP 0.0 0.0 \n", + "50 All 2030 National Trends Solar CSP 0.0 0.0 \n", + "73 All 2035 Distributed Energy Solar CSP 0.0 0.0 \n", + "96 All 2035 Global Ambition Solar CSP 0.0 0.0 \n", + "119 All 2035 National Trends Solar CSP 0.0 0.0 \n", + "142 All 2040 Distributed Energy Solar CSP 0.0 0.0 \n", + "165 All 2040 Global Ambition Solar CSP 0.0 0.0 \n", + "188 All 2040 National Trends Solar CSP 0.0 0.0 \n", + "211 All 2045 Distributed Energy Solar CSP 0.0 0.0 \n", + "234 All 2045 Global Ambition Solar CSP 0.0 0.0 \n", + "257 All 2045 National Trends Solar CSP 0.0 0.0 \n", + "280 All 2050 Distributed Energy Solar CSP 0.0 0.0 \n", + "303 All 2050 Global Ambition Solar CSP 0.0 0.0 \n", + "326 All 2050 National Trends Solar CSP 0.0 0.0 \n", + "\n", + " EFFICIENCY \n", + "4 NaN \n", + "27 NaN \n", + "50 NaN \n", + "73 NaN \n", + "96 NaN \n", + "119 NaN \n", + "142 NaN \n", + "165 NaN \n", + "188 NaN \n", + "211 NaN \n", + "234 NaN \n", + "257 NaN \n", + "280 NaN \n", + "303 NaN \n", + "326 NaN " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NODEYEARSCENARIOTECHNOLOGYCAPEX [€/MW]OPEX[€/MW/a]EFFICIENCY
4All2030Distributed EnergySolar CSP0.00.0NaN
27All2030Global AmbitionSolar CSP0.00.0NaN
50All2030National TrendsSolar CSP0.00.0NaN
73All2035Distributed EnergySolar CSP0.00.0NaN
96All2035Global AmbitionSolar CSP0.00.0NaN
119All2035National TrendsSolar CSP0.00.0NaN
142All2040Distributed EnergySolar CSP0.00.0NaN
165All2040Global AmbitionSolar CSP0.00.0NaN
188All2040National TrendsSolar CSP0.00.0NaN
211All2045Distributed EnergySolar CSP0.00.0NaN
234All2045Global AmbitionSolar CSP0.00.0NaN
257All2045National TrendsSolar CSP0.00.0NaN
280All2050Distributed EnergySolar CSP0.00.0NaN
303All2050Global AmbitionSolar CSP0.00.0NaN
326All2050National TrendsSolar CSP0.00.0NaN
\n", + "
" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 29 }, { "cell_type": "markdown", @@ -789,9 +3056,9 @@ ], "metadata": { "kernelspec": { - "display_name": "", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "" + "name": "python3" }, "language_info": { "codemirror_mode": { From 7c9e8ddf010fab7f9ecf4c66b89b1ba45735c9c7 Mon Sep 17 00:00:00 2001 From: daniel-rdt Date: Tue, 29 Jul 2025 19:56:39 +0200 Subject: [PATCH 5/6] doc: update review of available and missing pecd data --- notebooks/test_pecd.ipynb | 5624 +++++++++++++++++++++++++++---------- 1 file changed, 4145 insertions(+), 1479 deletions(-) diff --git a/notebooks/test_pecd.ipynb b/notebooks/test_pecd.ipynb index 051494fa85..3953894fd0 100644 --- a/notebooks/test_pecd.ipynb +++ b/notebooks/test_pecd.ipynb @@ -31,52 +31,56 @@ }, { "cell_type": "code", + "execution_count": 1, "id": "22c0b3ba418ce49e", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:18.631684Z", - "start_time": "2025-07-24T09:55:18.056039Z" + "end_time": "2025-07-29T13:33:55.140604Z", + "start_time": "2025-07-29T13:33:55.125697Z" } }, + "outputs": [], "source": [ "import pandas as pd" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "markdown", "id": "86ce443498ca0a12", "metadata": {}, - "source": "# Load raw data" + "source": [ + "# Load raw data" + ] }, { "cell_type": "code", + "execution_count": 2, "id": "95e919de88c25b3b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:18.810330Z", - "start_time": "2025-07-24T09:55:18.634704Z" + "end_time": "2025-07-29T13:33:56.213950Z", + "start_time": "2025-07-29T13:33:55.855834Z" } }, + "outputs": [], "source": [ "offshore_hubs = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Offshore hubs/GENERATOR.xlsx\",\n", " sheet_name=\"ZONE_POTENTIAL\",\n", ").replace(\"UK\", \"GB\", regex=True)" - ], - "outputs": [], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "8cbc562242c1ed4f", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.022702Z", - "start_time": "2025-07-24T09:55:18.911456Z" + "end_time": "2025-07-29T14:24:16.349766Z", + "start_time": "2025-07-29T14:24:16.246805Z" } }, + "outputs": [], "source": [ "investment_data_generators = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Investment Datasets/GENERATOR.xlsx\"\n", @@ -84,9 +88,7 @@ "investment_data_trajectories = pd.read_excel(\n", " \"../data/tyndp_2024_bundle/Investment Datasets/TRAJECTORY.xlsx\"\n", ")" - ], - "outputs": [], - "execution_count": 3 + ] }, { "cell_type": "markdown", @@ -110,25 +112,39 @@ "id": "0e9fec86", "metadata": {}, "source": [ - "Load and investigate processed pecd data for Wind Offshore for 2030" + "Load and investigate processed pecd data for Wind Offshore for 2030, 2040 and 2050" ] }, { "cell_type": "code", + "execution_count": 4, "id": "d1f880209ce3a46d", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.038396Z", - "start_time": "2025-07-24T09:55:19.030066Z" + "end_time": "2025-07-29T13:40:47.857968Z", + "start_time": "2025-07-29T13:40:47.833893Z" } }, + "outputs": [], "source": [ - "pecd_offshore = pd.read_csv(\n", + "pecd_offshore_2030 = pd.read_csv(\n", " \"../resources/test-sector-tyndp/pecd_data_Wind_Offshore_2030.csv\", index_col=0\n", + ")\n", + "pecd_offshore_2040 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Offshore_2040.csv\", index_col=0\n", + ")\n", + "pecd_offshore_2050 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Offshore_2050.csv\", index_col=0\n", ")" - ], - "outputs": [], - "execution_count": 4 + ] + }, + { + "cell_type": "markdown", + "id": "ef166cb508f072c", + "metadata": {}, + "source": [ + "### 2030" + ] }, { "cell_type": "markdown", @@ -140,48 +156,17 @@ }, { "cell_type": "code", + "execution_count": 5, "id": "450247c8", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.057383Z", - "start_time": "2025-07-24T09:55:19.047437Z" + "end_time": "2025-07-29T13:34:00.443028Z", + "start_time": "2025-07-29T13:34:00.428358Z" } }, - "source": [ - "pecd_offshore.loc[:, (pecd_offshore == 0).all()]" - ], "outputs": [ { "data": { - "text/plain": [ - " ALOR001 BGOR001 CYOR001 GROR002 HROH001 MEOR001 \\\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "... ... ... ... ... ... ... \n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "\n", - " MTOR001 UAOR001 GBOH001 GBOH002 \n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 \n", - "... ... ... ... ... \n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 \n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 \n", - "\n", - "[168 rows x 10 columns]" - ], "text/html": [ "
\n", "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ALOR001BGOR001CYOR001DEOH002DEOR001DKEOR01DKWOH01DKWOR01EEOH001ESOH001...SEOR001UAOR001GBNIOR1GBOH001GBOH002GBOH003GBOH004GBOH005GBOH006GBOR001
2013-03-01 00:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
..................................................................
2013-03-07 19:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
\n", + "

168 rows × 53 columns

\n", + "
" + ], + "text/plain": [ + " ALOR001 BGOR001 CYOR001 DEOH002 DEOR001 DKEOR01 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " DKWOH01 DKWOR01 EEOH001 ESOH001 ... SEOR001 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 ... 0.0 \n", + "\n", + " UAOR001 GBNIOR1 GBOH001 GBOH002 GBOH003 GBOH004 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " GBOH005 GBOH006 GBOR001 \n", + "2013-03-01 00:00:00 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 \n", + "... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 \n", + "\n", + "[168 rows x 53 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_offshore_2050.loc[:, (pecd_offshore_2050 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5d2c2be9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 53 out of 56 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ALOR001',\n", + " 'BGOR001',\n", + " 'CYOR001',\n", + " 'DEOH002',\n", + " 'DEOR001',\n", + " 'DKEOR01',\n", + " 'DKWOH01',\n", + " 'DKWOR01',\n", + " 'EEOH001',\n", + " 'ESOH001',\n", + " 'ESOH002',\n", + " 'ESOH003',\n", + " 'FIOH001',\n", + " 'FROH001',\n", + " 'FROH002',\n", + " 'FROH003',\n", + " 'GBNIOR1',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'GBOH003',\n", + " 'GBOH004',\n", + " 'GBOH005',\n", + " 'GBOH006',\n", + " 'GBOR001',\n", + " 'GROR001',\n", + " 'GROR002',\n", + " 'HROH001',\n", + " 'IEOH001',\n", + " 'ITCNOR1',\n", + " 'ITCSOR1',\n", + " 'ITN1OR1',\n", + " 'ITS1OR1',\n", + " 'ITSAOR1',\n", + " 'ITSIOR1',\n", + " 'LTOR001',\n", + " 'LVOH001',\n", + " 'MEOR001',\n", + " 'MTOR001',\n", + " 'NLOH001',\n", + " 'NLOR001',\n", + " 'NOMOH01',\n", + " 'NONOH01',\n", + " 'NOSOH01',\n", + " 'NOSOH02',\n", + " 'NOSOR01',\n", + " 'PLOH001',\n", + " 'PTOH001',\n", + " 'ROOR001',\n", + " 'SEOH001',\n", + " 'SEOH002',\n", + " 'SEOH003',\n", + " 'SEOR001',\n", + " 'UAOR001'}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_not_available = set(pecd_offshore_2050.loc[:, (pecd_offshore_2050 == 0).all()].columns)\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_offshore_2050.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "9c66cd19", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "84447b8a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ALOR001', 'CYOR001', 'MEOR001', 'UAOR001'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(offshore_hubs.query(\"MAX_MW == 0 and YEAR == 2050\").OFFSHORE_NODE.unique())\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "36df36af", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "00c5ca71", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 49 out of 52 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'BGOR001',\n", + " 'DEOH002',\n", + " 'DEOR001',\n", + " 'DKEOR01',\n", + " 'DKWOH01',\n", + " 'DKWOR01',\n", + " 'EEOH001',\n", + " 'ESOH001',\n", + " 'ESOH002',\n", + " 'ESOH003',\n", + " 'FIOH001',\n", + " 'FROH001',\n", + " 'FROH002',\n", + " 'FROH003',\n", + " 'GBNIOR1',\n", + " 'GBOH001',\n", + " 'GBOH002',\n", + " 'GBOH003',\n", + " 'GBOH004',\n", + " 'GBOH005',\n", + " 'GBOH006',\n", + " 'GBOR001',\n", + " 'GROR001',\n", + " 'GROR002',\n", + " 'HROH001',\n", + " 'IEOH001',\n", + " 'ITCNOR1',\n", + " 'ITCSOR1',\n", + " 'ITN1OR1',\n", + " 'ITS1OR1',\n", + " 'ITSAOR1',\n", + " 'ITSIOR1',\n", + " 'LTOR001',\n", + " 'LVOH001',\n", + " 'MTOR001',\n", + " 'NLOH001',\n", + " 'NLOR001',\n", + " 'NOMOH01',\n", + " 'NONOH01',\n", + " 'NOSOH01',\n", + " 'NOSOH02',\n", + " 'NOSOR01',\n", + " 'PLOH001',\n", + " 'PTOH001',\n", + " 'ROOR001',\n", + " 'SEOH001',\n", + " 'SEOH002',\n", + " 'SEOH003',\n", + " 'SEOR001'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(offshore_hubs.OFFSHORE_NODE))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "2ab23203", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "c0436d2b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "set()" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference.difference(set(offshore_hubs.query(\"OFFSHORE_NODE in @difference and YEAR == 2050 and MAX_MW > 0\").OFFSHORE_NODE.unique()))" + ] + }, + { + "cell_type": "markdown", + "id": "97c74b38", + "metadata": {}, + "source": [ + "In fact all the nodes are included in the Offshore Hub data for 2050 and have a max capacity > 0.\n", + "\n", + "- `BGOR001`\n", + "- `DEOH002`\n", + "- `DEOR001`\n", + "- `DKEOR01`\n", + "- `DKWOH01`\n", + "- `DKWOR01`\n", + "- `EEOH001`\n", + "- `ESOH001`\n", + "- `ESOH002`\n", + "- `ESOH003`\n", + "- `FIOH001`\n", + "- `FROH001`\n", + "- `FROH002`\n", + "- `FROH003`\n", + "- `GBNIOR1`\n", + "- `GBOH001`\n", + "- `GBOH002`\n", + "- `GBOH003`\n", + "- `GBOH004`\n", + "- `GBOH005`\n", + "- `GBOH006`\n", + "- `GBOR001`\n", + "- `GROR001`\n", + "- `GROR002`\n", + "- `HROH001`\n", + "- `IEOH001`\n", + "- `ITCNOR1`\n", + "- `ITCSOR1`\n", + "- `ITN1OR1`\n", + "- `ITS1OR1`\n", + "- `ITSAOR1`\n", + "- `ITSIOR1`\n", + "- `LTOR001`\n", + "- `LVOH001`\n", + "- `MTOR001`\n", + "- `NLOH001`\n", + "- `NLOR001`\n", + "- `NOMOH01`\n", + "- `NONOH01`\n", + "- `NOSOH01`\n", + "- `NOSOH02`\n", + "- `NOSOR01`\n", + "- `PLOH001`\n", + "- `PTOH001`\n", + "- `ROOR001`\n", + "- `SEOH001`\n", + "- `SEOH002`\n", + "- `SEOH003`\n", + "- `SEOR001`\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Wind Offshore` in 2050!" + ] + }, + { + "cell_type": "markdown", + "id": "93b9906ddb5f87c2", + "metadata": {}, + "source": [ + "\n", + "## Wind Onshore" + ] + }, + { + "cell_type": "markdown", + "id": "5e60de54", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Wind Onshore for 2030 and 2040.\n", + "\n", + "**Note!** No comparison can be made for 2050 as no Wind Onshore data at all has been provided in the PECD dataset.\n", + "\n", + "Therefore all necessary data for Wind Onshore 2050 is missing!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3149b7e6", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:07.457951Z", + "start_time": "2025-07-29T13:34:07.449839Z" + } + }, + "outputs": [], + "source": [ + "pecd_onshore_2030 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Onshore_2030.csv\", index_col=0\n", + ")\n", + "pecd_onshore_2040 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_Wind_Onshore_2040.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d0dcd92a", + "metadata": {}, + "source": [ + "### 2030" + ] + }, + { + "cell_type": "markdown", + "id": "1b9b2624", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "4b4cc646", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:08.378997Z", + "start_time": "2025-07-29T13:34:08.370176Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1MT00ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.0
.....................
2013-03-07 19:00:000.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.0
\n", + "

168 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 6 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_onshore_2030.loc[:, (pecd_onshore_2030 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "3a9112f8", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:08.906482Z", + "start_time": "2025-07-29T13:34:08.903088Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 6 out of 54 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_not_available = set(pecd_onshore_2030.loc[:, (pecd_onshore_2030 == 0).all()].columns)\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_onshore_2030.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "e0a204c2", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "89db92e7", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:13.093194Z", + "start_time": "2025-07-29T13:34:13.083244Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'DEKF', 'DKKF', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Wind Onshore') and `MAX CAPACITY [MW]` == 0 and YEAR == 2030\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "1e54a1a5", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:14.063112Z", + "start_time": "2025-07-29T13:34:14.056489Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 2 out of 48 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(pecd_onshore_2030.columns))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "902fb244", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "8e0f3c0a", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:15.441166Z", + "start_time": "2025-07-29T13:34:15.431761Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Wind Onshore') \"\n", + " \"and YEAR == 2050 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "af5ad185ab905530", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Wind Onshore` in 2030!" + ] + }, + { + "cell_type": "markdown", + "id": "29b1ef75", + "metadata": {}, + "source": [ + "### 2040" + ] + }, + { + "cell_type": "markdown", + "id": "61f2e114", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "e5ad0ac9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1MT00ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.0
.....................
2013-03-07 19:00:000.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.0
\n", + "

168 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 6 columns]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_onshore_2040.loc[:, (pecd_onshore_2040 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "122d55a2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 6 out of 54 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_not_available = set(pecd_onshore_2040.loc[:, (pecd_onshore_2040 == 0).all()].columns)\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_onshore_2040.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "dbe4c5ad", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4f0aba57", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'DEKF', 'DKKF', 'LUB1', 'LUF1', 'LUV1', 'MT00'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Wind Onshore') and `MAX CAPACITY [MW]` == 0 and YEAR == 2040\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "0f3f70e1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 2 out of 48 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(pecd_onshore_2040.columns))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "c995740b", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "a2c23309", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Wind Onshore') \"\n", + " \"and YEAR == 2040 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d1c7d2d7", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Wind Onshore` in 2040!" + ] + }, + { + "cell_type": "markdown", + "id": "b54fc792", + "metadata": {}, + "source": [ + "### 2050" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "5a5869ff", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "48 techs are available with MAX_MW > zero in that year. The data is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'AT00',\n", + " 'BA00',\n", + " 'BE00',\n", + " 'BG00',\n", + " 'CH00',\n", + " 'CY00',\n", + " 'CZ00',\n", + " 'DE00',\n", + " 'DKE1',\n", + " 'DKW1',\n", + " 'EE00',\n", + " 'ES00',\n", + " 'FI00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'HR00',\n", + " 'HU00',\n", + " 'IE00',\n", + " 'ITCA',\n", + " 'ITCN',\n", + " 'ITCS',\n", + " 'ITN1',\n", + " 'ITS1',\n", + " 'ITSA',\n", + " 'ITSI',\n", + " 'LT00',\n", + " 'LUG1',\n", + " 'LV00',\n", + " 'ME00',\n", + " 'MK00',\n", + " 'NL00',\n", + " 'NOM1',\n", + " 'NON1',\n", + " 'NOS0',\n", + " 'PL00',\n", + " 'PT00',\n", + " 'RO00',\n", + " 'RS00',\n", + " 'SE01',\n", + " 'SE02',\n", + " 'SE03',\n", + " 'SE04',\n", + " 'SI00',\n", + " 'SK00',\n", + " 'UK00',\n", + " 'UKNI'}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Wind Onshore') and `MAX CAPACITY [MW]` > 0 and YEAR == 2050\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_available)} techs are available with MAX_MW > zero in that year. The data is missing.\")\n", + "tech_available" + ] + }, + { + "cell_type": "markdown", + "id": "2aaf08c9", + "metadata": {}, + "source": [ + "⚠️ Therefore, all necessary PECD data is **missing** for `Wind Onshore` in 2050!\n", + "\n", + "- `AL00`\n", + "- `AT00`\n", + "- `BA00`\n", + "- `BE00`\n", + "- `BG00`\n", + "- `CH00`\n", + "- `CY00`\n", + "- `CZ00`\n", + "- `DE00`\n", + "- `DKE1`\n", + "- `DKW1`\n", + "- `EE00`\n", + "- `ES00`\n", + "- `FI00`\n", + "- `FR00`\n", + "- `GR00`\n", + "- `GR03`\n", + "- `HR00`\n", + "- `HU00`\n", + "- `IE00`\n", + "- `ITCA`\n", + "- `ITCN`\n", + "- `ITCS`\n", + "- `ITN1`\n", + "- `ITS1`\n", + "- `ITSA`\n", + "- `ITSI`\n", + "- `LT00`\n", + "- `LUG1`\n", + "- `LV00`\n", + "- `ME00`\n", + "- `MK00`\n", + "- `NL00`\n", + "- `NOM1`\n", + "- `NON1`\n", + "- `NOS0`\n", + "- `PL00`\n", + "- `PT00`\n", + "- `RO00`\n", + "- `RS00`\n", + "- `SE01`\n", + "- `SE02`\n", + "- `SE03`\n", + "- `SE04`\n", + "- `SI00`\n", + "- `SK00`\n", + "- `UK00`\n", + "- `UKNI`" + ] + }, + { + "cell_type": "markdown", + "id": "30b33c59c28b4c4c", + "metadata": {}, + "source": [ + "\n", + "## LF Solar PV Rooftop" + ] + }, + { + "cell_type": "markdown", + "id": "c6dc29ef", + "metadata": {}, + "source": [ + "Load and investigate processed pecd data for Solar PV Rooftop for 2030, 2040 and 2050" + ] + }, + { + "cell_type": "markdown", + "id": "73c40fa5", + "metadata": {}, + "source": [ + "Look at the difference" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "884abc41", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:18.232325Z", + "start_time": "2025-07-29T13:34:18.224010Z" + } + }, + "outputs": [], + "source": [ + "pecd_solar_rooftop_2030 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2030.csv\", index_col=0\n", + ")\n", + "pecd_solar_rooftop_2040 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2040.csv\", index_col=0\n", + ")\n", + "pecd_solar_rooftop_2050 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2050.csv\", index_col=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "17dfb663", + "metadata": {}, + "source": [ + "### 2030" + ] + }, + { + "cell_type": "markdown", + "id": "a0b85494", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "d2498958", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:19.631096Z", + "start_time": "2025-07-29T13:34:19.620706Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.0
2013-03-07 22:00:000.00.00.00.00.00.00.0
2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_solar_rooftop_2030.loc[:, (pecd_solar_rooftop_2030 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "424774cd", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:19.911535Z", + "start_time": "2025-07-29T13:34:19.908344Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 7 out of 54 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_not_available = set(\n", + " pecd_solar_rooftop_2030.loc[:, (pecd_solar_rooftop_2030 == 0).all()].columns\n", + ")\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_solar_rooftop_2030.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "57de3260", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "92e8070c", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:21.628422Z", + "start_time": "2025-07-29T13:34:21.620801Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "17 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'BA00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'EE00',\n", + " 'FR00',\n", + " 'GR00',\n", + " 'GR03',\n", + " 'LT00',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'ME00',\n", + " 'NON1',\n", + " 'PL00',\n", + " 'SE01',\n", + " 'SK00'}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and `MAX CAPACITY [MW]` == 0 \"\n", + " \"and YEAR == 2030\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "fb226b2b", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:22.323235Z", + "start_time": "2025-07-29T13:34:22.317314Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 2 out of 37 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(pecd_solar_rooftop_2030.columns))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "eed61667", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "00c3d1d9", + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-29T13:34:25.303004Z", + "start_time": "2025-07-29T13:34:25.294828Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and YEAR == 2030 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "cedb0959", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Solar PV Rooftop` in 2030!" + ] + }, + { + "cell_type": "markdown", + "id": "b0813745", + "metadata": {}, + "source": [ + "### 2040" + ] + }, + { + "cell_type": "markdown", + "id": "8038c638", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "8264b610", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.0
2013-03-01 02:00:000.00.00.00.00.00.00.0
2013-03-01 03:00:000.00.00.00.00.00.00.0
2013-03-01 04:00:000.00.00.00.00.00.00.0
........................
2013-03-07 19:00:000.00.00.00.00.00.00.0
2013-03-07 20:00:000.00.00.00.00.00.00.0
2013-03-07 21:00:000.00.00.00.00.00.00.02550.0
264GROR002Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.02013-03-07 22:00:000.00.00.00.00.00.00.0
265GROR002Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-07 23:00:000.00.00.00.00.00.00.0
\n", + "

168 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "... ... ... ... ... ... ... ...\n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "\n", + "[168 rows x 7 columns]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_solar_rooftop_2040.loc[:, (pecd_solar_rooftop_2040 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "02168ef7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 7 out of 54 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI', 'LUB1', 'LUF1', 'LUV1', 'NON1', 'SE01'}" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_not_available = set(\n", + " pecd_solar_rooftop_2040.loc[:, (pecd_solar_rooftop_2040 == 0).all()].columns\n", + ")\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_solar_rooftop_2040.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] + }, + { + "cell_type": "markdown", + "id": "2d6c43b9", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "c50918bb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'BA00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'GR03',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'ME00',\n", + " 'NON1',\n", + " 'SE01'}" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and `MAX CAPACITY [MW]` == 0 \"\n", + " \"and YEAR == 2040\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "8a34a7eb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 2 out of 43 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(pecd_solar_rooftop_2040.columns))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "3ac9fcf2", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "c4972f69", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and YEAR == 2040 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "ea9f5e06", + "metadata": {}, + "source": [ + "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "✅ Therefore, all necessary PECD data is **available** for `Solar PV Rooftop` in 2040!" + ] + }, + { + "cell_type": "markdown", + "id": "3421290c", + "metadata": {}, + "source": [ + "### 2050" + ] + }, + { + "cell_type": "markdown", + "id": "dc9ed8d6", + "metadata": {}, + "source": [ + "Filter for columns with no data" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3f6b251e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", " \n", " \n", "
AL00AT00BA00BE00BG00CH00CY00CZ00DE00DKE1DKW1ES00FI00LUB1LUF1LUV1NON1SE01ITCOITVI
2013-03-01 00:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
2013-03-01 01:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0510.0510.0
266GROR002Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-01 02:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.01030.01030.0
267GROR002Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN1550.02013-03-01 03:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.01550.0
268GROR002Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.02013-03-01 04:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.02550.0
269GROR002Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2550.0450.03000.0...............................................................
270HROH001Hub2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.02013-03-07 19:00:000.00.00.00.00.00.00.0510.0
271HROH001Hub2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
272HROH001Hub2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
273HROH001Hub2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
274HROH001Hub2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
275HROH001Hub2030Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
276HROH001Hub2035Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
277HROH001Hub2040Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
278HROH001Hub2045Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
279HROH001Hub2050Global AmbitionAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
280HROH001Hub2030National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.00.0510.0
281HROH001Hub2035National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH510.0345.0855.0
282HROH001Hub2040National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.00.01200.0
283HROH001Hub2045National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH1200.0900.02100.0
284HROH001Hub2050National TrendsAC_FB_RAC_FL_RDC_FB_OHDC_FL_OHH2_FB_OHH2_FL_OH3000.00.03000.0
435MTOR001Radial2030Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
436MTOR001Radial2035Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
437MTOR001Radial2040Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
438MTOR001Radial2045Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
439MTOR001Radial2050Distributed EnergyAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
440MTOR001Radial2030Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-07 20:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.050.050.0
441MTOR001Radial2035Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-07 21:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0225.0225.0
442MTOR001Radial2040Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-07 22:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0400.0400.0
443MTOR001Radial2045Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
444MTOR001Radial2050Global AmbitionAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN2013-03-07 23:00:000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0400.0400.0
445MTOR001Radial2030National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.050.050.0
446MTOR001Radial2035National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0225.0225.0
447MTOR001Radial2040National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
448MTOR001Radial2045National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
449MTOR001Radial2050National TrendsAC_FB_RAC_FL_RDC_FB_RDC_FL_RNaNNaN0.0400.0400.0
\n", + "

168 rows × 20 columns

\n", "
" + ], + "text/plain": [ + " AL00 AT00 BA00 BE00 BG00 CH00 CY00 CZ00 DE00 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " DKE1 DKW1 ES00 FI00 LUB1 LUF1 LUV1 NON1 SE01 \\\n", + "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "... ... ... ... ... ... ... ... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " ITCO ITVI \n", + "2013-03-01 00:00:00 0.0 0.0 \n", + "2013-03-01 01:00:00 0.0 0.0 \n", + "2013-03-01 02:00:00 0.0 0.0 \n", + "2013-03-01 03:00:00 0.0 0.0 \n", + "2013-03-01 04:00:00 0.0 0.0 \n", + "... ... ... \n", + "2013-03-07 19:00:00 0.0 0.0 \n", + "2013-03-07 20:00:00 0.0 0.0 \n", + "2013-03-07 21:00:00 0.0 0.0 \n", + "2013-03-07 22:00:00 0.0 0.0 \n", + "2013-03-07 23:00:00 0.0 0.0 \n", + "\n", + "[168 rows x 20 columns]" ] }, - "execution_count": 9, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pecd_solar_rooftop_2050.loc[:, (pecd_solar_rooftop_2050 == 0).all()]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "9499c0d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 20 out of 54 nodes is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'AT00',\n", + " 'BA00',\n", + " 'BE00',\n", + " 'BG00',\n", + " 'CH00',\n", + " 'CY00',\n", + " 'CZ00',\n", + " 'DE00',\n", + " 'DKE1',\n", + " 'DKW1',\n", + " 'ES00',\n", + " 'FI00',\n", + " 'ITCO',\n", + " 'ITVI',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'NON1',\n", + " 'SE01'}" + ] + }, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 9 + "source": [ + "pecd_not_available = set(\n", + " pecd_solar_rooftop_2050.loc[:, (pecd_solar_rooftop_2050 == 0).all()].columns\n", + ")\n", + "print(f\"Data for {len(pecd_not_available)} out of {len(set(pecd_solar_rooftop_2050.columns))} nodes is missing.\")\n", + "pecd_not_available" + ] }, { "cell_type": "markdown", - "id": "9059480a", + "id": "7599b656", + "metadata": {}, + "source": [ + "Compare with Offshore nodes that have no capacity potential" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "22aed601", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11 techs have MAX_MW of zero in that year.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AL00',\n", + " 'BA00',\n", + " 'DEKF',\n", + " 'DKKF',\n", + " 'GR03',\n", + " 'LUB1',\n", + " 'LUF1',\n", + " 'LUV1',\n", + " 'ME00',\n", + " 'NON1',\n", + " 'SE01'}" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tech_not_available = set(\n", + " investment_data_trajectories.query(\n", + " \"TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and `MAX CAPACITY [MW]` == 0 \"\n", + " \"and YEAR == 2050\"\n", + " ).NODE.unique()\n", + ")\n", + "print(f\"{len(tech_not_available)} techs have MAX_MW of zero in that year.\")\n", + "tech_not_available" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "531fd113", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data for 13 out of 43 nodes with available capacity is missing.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'AT00',\n", + " 'BE00',\n", + " 'BG00',\n", + " 'CH00',\n", + " 'CY00',\n", + " 'CZ00',\n", + " 'DE00',\n", + " 'DKE1',\n", + " 'DKW1',\n", + " 'ES00',\n", + " 'FI00',\n", + " 'ITCO',\n", + " 'ITVI'}" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "difference = set(list(pecd_not_available.difference(tech_not_available)))\n", + "print(f\"Data for {len(difference)} out of {len(set(pecd_solar_rooftop_2050.columns))-len(tech_not_available)} nodes with available capacity is missing.\")\n", + "difference" + ] + }, + { + "cell_type": "markdown", + "id": "ab43cfb5", + "metadata": {}, + "source": [ + "Verify that the nodes with missing data are indeed included with as a node and with a max potential > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "97071ce8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ITCO', 'ITVI'}" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Rooftop') \"\n", + " \"and YEAR == 2050 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "a5ff04b0", "metadata": {}, "source": [ - "In fact the nodes `GROR002`, `MTOR001` and `HROH001` are included in the Offshore Hub data and have a max capacity > 0.\n", + "Only the missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", + "\n", + "⚠️ The other 11 nodes are **missing** PECD data for `Solar PV Rooftop` in 2050!\n", "\n", - "⚠️ Therefore, some necessary PECD data is **missing** for `Wind Offshore`!" + "- `AT00`\n", + "- `BE00`\n", + "- `BG00`\n", + "- `CH00`\n", + "- `CY00`\n", + "- `CZ00`\n", + "- `DE00`\n", + "- `DKE1`\n", + "- `DKW1`\n", + "- `ES00`\n", + "- `FI00`" ] }, { "cell_type": "markdown", - "id": "93b9906ddb5f87c2", + "id": "8e01f764f0aa06a3", "metadata": {}, "source": [ - "\n", - "## Wind Onshore" + "\n", + "## LF Solar PV Utility" ] }, { "cell_type": "markdown", - "id": "5e60de54", + "id": "1af6aad9", "metadata": {}, "source": [ - "Load and investigate processed pecd data for Wind Onshore for 2030" + "Load and investigate processed pecd data for Solar PV Utility for 2030, 2040 and 2050" ] }, { "cell_type": "markdown", - "id": "9d9dd04b", + "id": "733f8363", "metadata": {}, "source": [ "Look at the difference" @@ -1455,24 +4003,38 @@ }, { "cell_type": "code", - "id": "3149b7e6", + "execution_count": 48, + "id": "fd209c2b", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.309852Z", - "start_time": "2025-07-24T09:55:19.305260Z" + "end_time": "2025-07-29T13:34:32.361337Z", + "start_time": "2025-07-29T13:34:32.354698Z" } }, + "outputs": [], "source": [ - "pecd_onshore = pd.read_csv(\n", - " \"../resources/test-sector-tyndp/pecd_data_Wind_Onshore_2030.csv\", index_col=0\n", + "pecd_solar_utility_2030 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2030.csv\", index_col=0\n", + ")\n", + "pecd_solar_utility_2040 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2040.csv\", index_col=0\n", + ")\n", + "pecd_solar_utility_2050 = pd.read_csv(\n", + " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2050.csv\", index_col=0\n", ")" - ], - "outputs": [], - "execution_count": 10 + ] }, { "cell_type": "markdown", - "id": "1b9b2624", + "id": "0bdaf5b9", + "metadata": {}, + "source": [ + "### 2030" + ] + }, + { + "cell_type": "markdown", + "id": "1608532d", "metadata": {}, "source": [ "Filter for columns with no data" @@ -1480,35 +4042,17 @@ }, { "cell_type": "code", - "id": "4b4cc646", + "execution_count": 49, + "id": "aafed306", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.352527Z", - "start_time": "2025-07-24T09:55:19.345733Z" + "end_time": "2025-07-29T13:34:32.779685Z", + "start_time": "2025-07-29T13:34:32.771945Z" } }, - "source": [ - "pecd_onshore.loc[:, (pecd_onshore == 0).all()]" - ], "outputs": [ { "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 MT00 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 6 columns]" - ], "text/html": [ "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", - "
" + "{'ITCO', 'ITVI'}" ] }, - "execution_count": 15, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 15 - }, - { - "cell_type": "markdown", - "id": "af5ad185ab905530", - "metadata": {}, - "source": [ - "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", - "\n", - "✅ Therefore, all necessary PECD data is **available** for `Wind Onshore`!" - ] - }, - { - "cell_type": "markdown", - "id": "30b33c59c28b4c4c", - "metadata": {}, "source": [ - "\n", - "## LF Solar PV Rooftop" + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Utility') \"\n", + " \"and YEAR == 2030 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" ] }, { "cell_type": "markdown", - "id": "c6dc29ef", + "id": "9890be4c", "metadata": {}, "source": [ - "Load and investigate processed pecd data for Solar PV Rooftop for 2030" + "In fact, only the missing nodes `ITVI` and `ITCO` are not included. This. The missing node `SE01` is included in the investment data set and have a max capacity > 0.\n", + "\n", + "- `SE01`\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Solar PV Utility` for 2030!" ] }, { "cell_type": "markdown", - "id": "73c40fa5", + "id": "187839ee", "metadata": {}, "source": [ - "Look at the difference" + "### 2040" ] }, - { - "cell_type": "code", - "id": "884abc41", - "metadata": { - "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.588590Z", - "start_time": "2025-07-24T09:55:19.584778Z" - } - }, - "source": [ - "pecd_solar_rooftop = pd.read_csv(\n", - " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVRooftop_2030.csv\", index_col=0\n", - ")" - ], - "outputs": [], - "execution_count": 16 - }, { "cell_type": "markdown", - "id": "a0b85494", + "id": "5f68012d", "metadata": {}, "source": [ "Filter for columns with no data" @@ -1872,35 +4442,12 @@ }, { "cell_type": "code", - "id": "d2498958", - "metadata": { - "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.609328Z", - "start_time": "2025-07-24T09:55:19.602105Z" - } - }, - "source": [ - "pecd_solar_rooftop.loc[:, (pecd_solar_rooftop == 0).all()]" - ], + "execution_count": 54, + "id": "45f5809e", + "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 7 columns]" - ], "text/html": [ "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
\n", - "
" + "{'ITCO', 'ITVI'}" ] }, - "execution_count": 21, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 21 - }, - { - "cell_type": "markdown", - "id": "cedb0959", - "metadata": {}, - "source": [ - "The missing nodes `ITCO` and `ITVI` are in fact not included in the investment data set. This is because they are virtual nodes used for modelling purposes in Italy.\n", - "\n", - "✅ Therefore, all necessary PECD data is **available** for `Solar PV Rooftop`!" - ] - }, - { - "cell_type": "markdown", - "id": "8e01f764f0aa06a3", - "metadata": {}, "source": [ - "\n", - "## LF Solar PV Utility" + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Utility') \"\n", + " \"and YEAR == 2040 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" ] }, { "cell_type": "markdown", - "id": "1af6aad9", + "id": "a8780c43", "metadata": {}, "source": [ - "Load and investigate processed pecd data for Solar PV Utility for 2030" + "In fact, only the missing nodes `ITVI` and `ITCO` are not included. This. The missing node `SE01` is included in the investment data set and have a max capacity > 0.\n", + "\n", + "- `SE01`\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Solar PV Utility` for 2040!" ] }, { "cell_type": "markdown", - "id": "733f8363", + "id": "99c536c1", "metadata": {}, "source": [ - "Look at the difference" + "### 2050" ] }, - { - "cell_type": "code", - "id": "fd209c2b", - "metadata": { - "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.867838Z", - "start_time": "2025-07-24T09:55:19.864008Z" - } - }, - "source": [ - "pecd_solar_utility = pd.read_csv(\n", - " \"../resources/test-sector-tyndp/pecd_data_LFSolarPVUtility_2030.csv\", index_col=0\n", - ")" - ], - "outputs": [], - "execution_count": 22 - }, { "cell_type": "markdown", - "id": "1608532d", + "id": "e29f886e", "metadata": {}, "source": [ "Filter for columns with no data" @@ -2296,35 +4810,12 @@ }, { "cell_type": "code", - "id": "aafed306", - "metadata": { - "ExecuteTime": { - "end_time": "2025-07-24T09:55:19.886351Z", - "start_time": "2025-07-24T09:55:19.879612Z" - } - }, - "source": [ - "pecd_solar_utility.loc[:, (pecd_solar_utility == 0).all()]" - ], + "execution_count": 59, + "id": "02042dc5", + "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - " LUB1 LUF1 LUV1 NON1 SE01 ITCO ITVI\n", - "2013-03-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "... ... ... ... ... ... ... ...\n", - "2013-03-07 19:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 20:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 21:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 22:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "2013-03-07 23:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", - "\n", - "[168 rows x 7 columns]" - ], "text/html": [ "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
NODESCENARIOTECHNOLOGYYEARMIN CAPACITY [MW]MAX CAPACITY [MW]
1580SE01AllSolar PV Utility20300.01000.0
1581SE01AllSolar PV Utility20350.01500.0
1582SE01AllSolar PV Utility20400.02000.0
1583SE01AllSolar PV Utility20450.02500.0
1584SE01AllSolar PV Utility20500.03000.0
\n", - "
" + "{'ITCO', 'ITVI'}" ] }, - "execution_count": 27, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 27 + "source": [ + "(\n", + " difference\n", + " .difference(\n", + " set(\n", + " investment_data_trajectories\n", + " .query(\n", + " \"NODE in @difference \"\n", + " \"and TECHNOLOGY.str.contains('Solar PV Utility') \"\n", + " \"and YEAR == 2050 \"\n", + " \"and `MAX CAPACITY [MW]` > 0\")\n", + " .NODE\n", + " .unique()\n", + " )\n", + " )\n", + ")" + ] }, { "cell_type": "markdown", - "id": "9890be4c", + "id": "4ca1c254", "metadata": {}, "source": [ - "in fact, the missing nodes `AL00` and `SE01` are included in the investment data set and have a max capacity > 0.\n", + "In fact, only the missing nodes `ITVI` and `ITCO` are not included. This. The other 12 missing nodes are included in the investment data set and have a max capacity > 0.\n", "\n", - "⚠️ Therefore, some necessary PECD data is **missing** for `Solar PV Utility`!" + "- `AL00`\n", + "- `AT00`\n", + "- `BA00`\n", + "- `BG00`\n", + "- `CY00`\n", + "- `CZ00`\n", + "- `DE00`\n", + "- `DKE1`\n", + "- `DKW1`\n", + "- `ES00`\n", + "- `FI00`\n", + "- `SE01`\n", + "\n", + "⚠️ Therefore, some necessary PECD data is **missing** for `Solar PV Utility` for 2050!" ] }, { @@ -2746,24 +5404,17 @@ }, { "cell_type": "code", + "execution_count": 64, "id": "52e14eb1", "metadata": { "ExecuteTime": { - "end_time": "2025-07-24T09:55:20.050819Z", - "start_time": "2025-07-24T09:55:20.046317Z" + "end_time": "2025-07-29T13:34:37.538120Z", + "start_time": "2025-07-29T13:34:37.529124Z" } }, - "source": [ - "investment_data_trajectories.query(\"TECHNOLOGY.str.contains('CSP')\")" - ], "outputs": [ { "data": { - "text/plain": [ - "Empty DataFrame\n", - "Columns: [NODE, SCENARIO, TECHNOLOGY, YEAR, MIN CAPACITY [MW], MAX CAPACITY [MW]]\n", - "Index: []" - ], "text/html": [ "
\n", "