Procesar datos energéticos Red Eléctrica España con ESIOS API

Aprenderás, paso a paso, cómo descargar, preprocesar y visualizar los datos de la API de Red Eléctrica de España con Python.

El sistema eléctrico de España trabaja con más de 10,000 indicadores que se actualizan a cada instante.

Portada página web ESIOS REE

Si trabajas con estos indicadores para los procesos de tu negocio, coincidirás conmigo que es un auténtico tostón utilizar el Excel con tanta descarga manual, clica aquí, clica allá (y un espejo de cristal, como la canción de Mecano).

Imagina que tu empresa tiene una central hidráulica y quieres analizar el indicador Generación programada PBF Hidráulica UGH, ¿cómo automatizas el proceso de descarga con Python?

Generación diaria Hidráulica UGH Enero 2024

Preguntas

  1. ¿Cómo obtener un token para la API de ESIOS?
  2. ¿Qué es un indicador en la API de ESIOS y cómo se accede a él?
  3. ¿Cómo se descargan los datos de un indicador específico?
  4. ¿Cómo se construye una tabla de datos a partir de la respuesta de la API?
  5. ¿Cómo se procesan y visualizan los datos descargados con Python?
  6. ¿Cómo se ajusta el rango de fechas para la descarga de datos?

Metodología

Token ESIOS API

Para solicitar información a los sistemas de Red Eléctrica (REE), necesitarás un código de autenticación (conocido en la jerga de la informática como token).

Tendrás que enviarle un correo a REE solicitando el token para que lo asocien a tu cuenta de correo (así te tienen vigilado por si te pones pesao haciendo muchas llamadas a la API). Navega a la página oficial y clica en Personal token request para enviar el correo.

API_TOKEN = 'TU_TOKEN'

headers = {
    'Host': 'api.esios.ree.es',
    'x-api-key': API_TOKEN
}

Lista de indicadores

Para descargar los datos del indicador Generación programada PBF Hidráulica UGH, necesitamos el código asociado. Lo encontraremos en la lista de indicadores que proporciona la API.

Las APIs trabajan con URLs. Por tanto, creamos una url para localizar todos los indicadores.

URL_BASE = 'https://api.esios.ree.es/'
ENDPOINT = 'indicators/'

url = URL_BASE + ENDPOINT

Usamos la función get de la librería requests para obtener los recursos de la url validando nuestra llamada con el token almacenado en headers.

import requests

res = requests.get(url, headers=headers)
data = res.json()

Indicadores disponibles en ESIOS API

El id asociado al indicador deseado es el 1. Por tanto, añadimos el código a la url.

INDICATOR = '1'
url = URL_BASE + ENDPOINT + INDICATOR

Volvemos a realizar la llamada y procesamos la información con funciones de la librería pandas para representarla en una tabla.

res = requests.get(url, headers=headers)
data = res.json()

df = pd.DataFrame(data['indicator']['values'])
df = df[['datetime_utc', 'geo_id', 'geo_name', 'value']]

Tabla (DataFrame) construido con datos ESIOS API

Tan solo obtenemos los datos de un día. ¿Cómo podríamos obtener los de un mes?

Añadiendo parámetros a la llamada.

params = {
    'start_date': '2024-01-01T00',
    'end_date': '2024-01-31T23'
}

res = requests.get(url, headers=headers, params=params)

DataFrame actualizado según rango de fechas

Teniendo un mes de información, podríamos visualizar la generación diaria total con una solar línea tras haber aplicado unos pasos extra de preprocesado.

df.resample(rule='D').value.sum().plot(kind='bar');

Generación diaria Hidráulica UGH Enero 2024

Conclusiones

Gracias a este tutorial, has aprendido varios aspectos importantes sobre ESIOS, APIs y Python:

  1. Token: Aprendiste a obtener un token para acceder a la API de ESIOS.
  2. Indicadores: Identificaste y accediste a indicadores específicos.
  3. Descarga de Datos: Manejaste la descarga de datos usando Python.
  4. Construcción de Tabla: Creaste tablas de datos a partir de las respuestas de la API, una habilidad clave para organizar y preparar los datos para análisis.
  5. Visualización: Procesaste y visualizaste los datos para interpretarlos mejor.
  6. Rango de Fechas: Ajustaste el rango de fechas para tus necesidades específicas.

¿Crees que este tutorial le podría ser útil a un colega? Ya sabes, compartir es vivir.

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to datons.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.