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.
¿Buscas algo más sencillo? Hemos publicado python-entsoe — una librería Python que convierte todo este tutorial en llamadas simples. Leer el anuncio →
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, recomendamos usar python-entsoe, una librería moderna con una interfaz más limpia y mejor experiencia de desarrollo. Consulta nuestro tutorial completo de python-entsoe para más detalles.
pip install python-entsoe from entsoe import ENTSOEClient
client = ENTSOEClient() 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.
start = "2024-02-01"
end = "2024-02-29"
df = client.generation.actual(start, end, country="IT")
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['timestamp'].dt.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, pasamos una lista de códigos de país directamente — la librería gestiona la iteración y añade una columna country automáticamente.
countries = [
'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'
]
df = client.prices.day_ahead(start, end, country=countries)
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).
df['hour'] = df['timestamp'].dt.hour
df.groupby(['hour']).mean() 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.
¿Quieres saltarte el boilerplate? Hemos empaquetado estos patrones (y más) en python-entsoe, una librería open-source que te da precios day-ahead, mix de generación, flujos transfronterizos y datos de carga en una sola llamada. pip install python-entsoe y listo.
Conclusiones
- Acceso a la API de ENTSO-E:
ENTSOEClient()depython-entsoeproporciona una interfaz limpia para descargar datos y analizarlos conpandas. - Descarga de datos de generación:
client.generation.actual()para 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.prices.day_ahead()para obtener los precios de la electricidad dada un área de mercado específica. - Uso de códigos de área para datos por país: parámetro
countrypara especificar el área de mercado de la que queremos descargar los datos. - Agrupación de datos para comparaciones horarias: extraer la hora de los timestamps y usar
groupbypara agregar los valores 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.
Sigue leyendo
Artículos relacionados que te pueden interesar
Estructurando datos de facturas energéticas con OpenAI para posterior BI análisis
Un ejemplo rápido de cómo usar ChatGPT de forma programática con Python.
Leer
Cómo calcular la potencia óptima de autoconsumo solar
Aprende a calcular las componentes de una simulación de autoconsumo solar para encontrar la potencia óptima de paneles solares a instalar.
Leer
Reportes anuales sobre retorno acumulado con múltiples activos financieros
Aprende cómo procesar múltiples activos financieros para agregarlos a un reporte que destaque el rendimiento anual de cada activo.
Leer