Tutorial
ENTSO-E API en Python: Análisis energético en Europa
Programa tus análisis energéticos europeos automáticamente con Python y la API de ENTSO-E. Te lo explicamos paso a paso con ejemplos prácticos.
Si comparamos España ES con Italia IT_SACO_AC, observamos que el incremento del precio horario de la electricidad en España tarda más en llegar.
Uno de los motivos es que la generación solar abarata el precio de la electricidad.
Aunque ambos países tienen la misma zona horaria, Italia está más al este que España, por lo que el sol se pone antes en Italia que en España.
En este tutorial, te explicaremos cómo descargar datos energéticos europeos a través de la API de ENTSO-E y analizarlos con Python.
Preguntas
- ¿Cómo acceder a la API de ENTSO-E para descargar datos energéticos europeos?
- ¿Qué función se usa para descargar datos de generación?
- ¿Y los precios de la electricidad?
- ¿Cómo usar los códigos de área para descargar datos por país?
- ¿Cómo se agrupan los datos para realizar comparaciones horarias?
- ¿Cómo descagar múltiples áreas de mercado a la vez?
Metodología
Conseguir Token de Acceso
Para descargar los datos de ENTSO-E programáticamente, necesitas un token de acceso.
- Regístrate en ENTSO-E
- Ve a My Account
- Accede a Web API Access
- Genera tu token
API_TOKEN = 'TU_TOKEN' Para trabajar con la API de ENTSO-E en Python, lo tenemos muy fácil gracias a la librería de código abierto entsoe, que tiene integrada los endpoints más comunes de la API.
Tenemos dos maneras de trabajar con esta librería:
EntsoePandasClientdescarga y preprocesa los datos en formatoDataFramepara analizarlos conpandasmás cómodamente.EntsoeRawClientnos devuelve los datos en bruto, con formato XML.
Para ir directos al grano, vamos a trabajar con EntsoePandasClient.
from entsoe import EntsoePandasClient
client = EntsoePandasClient(api_key=API_TOKEN) Descargar Generación por Tecnología en Italia
Para meternos en faena, vamos a descargar los datos de generación por tecnología en Italia durante el mes de febrero de 2024.
import pandas as pd
start = pd.Timestamp('20240201', tz='Europe/Rome')
end = pd.Timestamp('20240229T2359', tz='Europe/Rome')
df = client.query_generation(
country_code='IT',
start=start, end=end
)
Comparación Horaria de Generación por Tecnología
Como acostumbramos, vamos a crear una matriz de calor para destacar las diferencias en la generación por tecnología en Italia según la hora del día.
df['hour'] = df.index.hour
df.groupby(['hour']).sum() Dado que en febrero no hay muchas horas de sol, la generación solar solo fue significativa durante pocas horas, desde las 9 hasta las 15.
¿Qué conclusiones adicionales puedes identificar a partir de este análisis? Te leo en los comentarios.
Descargar Precios Electricidad por Área en Europa
Vamos a subir el nivel: descargaremos los precios de la electricidad por área en Europa.
Para ello, necesitamos los códigos de los países que la librería entsoe utiliza para identificar las áreas de mercado.
areas = [
'AT', 'BE', 'BG', 'HR', 'CZ', 'DE_LU', 'DK_1',
'EE', 'FI', 'MK', 'FR', 'GR', 'HU', 'IE_SEM',
'IT_SACO_AC', 'LV', 'LT', 'LU_BZN', 'ME', 'NL', 'NO_1',
'PL', 'PT', 'RO', 'SE_1', 'RS', 'SK', 'SI',
'ES', 'CH', 'UA_IPS'
] Iteramos sobre cada área para descargar los precios de febrero 2024 y acumularlos en una lista.
Finalmente, concatenamos la lista en un DataFrame donde cada columna representa un área de mercado.
Comparación Horaria de Precios Electricidad
Para el precio, calculamos el promedio por hora, que es más representativo que la suma (la cual habíamos utilizado para la generación).
Fijaros cómo el precio de la electricidad mueve su franja más cara conforme el sol se acuesta y la demanda aumenta, dependiendo del país.
Si comparamos España ES con Italia IT_SACO_AC, observamos que el incremento del precio en España tarda más en llegar porque teniendo la misma zona horaria, España está más al oeste.
¿Qué conclusiones adicionales puedes identificar a partir de este análisis? Te leo en los comentarios.
Conclusiones
- Acceso a la API de ENTSO-E:
EntsoePandasClientes el cliente que, con el token de acceso, nos permite descargar datos y analizarlos conpandascómodamente. - Descarga de datos de generación:
client.query_generationpara descargar los datos de generación de energía por tecnología de un país específico. - Descarga de precios de la electricidad:
client.query_day_ahead_pricespara obtener los precios de la electricidad dada un área de mercado específica. - Uso de códigos de área para datos por país:
country_codepara especificar el área de mercado de la que queremos descargar los datos. - Agrupación de datos para comparaciones horarias:
df.index.hourpara obtener la hora ydf.groupbypara agregar los valores por cada hora aplicando una función matemática. - Descarga de múltiples áreas de mercado:
pd.concatpara concatenar los múltiples indicadores descargados tras iterar sobre una lista de códigos de área.
Si pudieras programar lo que quisieras, ¿qué sería?
Puede que te eche una mano creando tutoriales que te ayuden. Te leo en los comentarios.