Tutorial

API de EIA: Automatizando datos energéticos de EE.UU. con Python

Domina la API de EIA para automatizar la recolección y análisis de datos energéticos de EE.UU. con Python. Accede a demanda eléctrica en tiempo real, datos de generación y construye análisis del mercado energético.

Cada hora, la red eléctrica de EE.UU. coordina el suministro y la demanda de electricidad. Se generan muchos datos en el proceso.

Por ejemplo, el siguiente gráfico representa la demanda de electricidad por subregión.

Demanda de electricidad por subregión

En lugar de descargar el archivo Excel manualmente y navegar por los menús, puedes automatizar el proceso usando programación.

En este tutorial, aprenderás cómo usar la API de EIA (Administración de Información Energética) con Python.

Preguntas

  1. ¿Cómo identificar indicadores desde la API de EIA?
  2. ¿Cómo usar la API de EIA para descargar datos programáticamente?
  3. ¿Cómo construir una tabla desde los datos de respuesta de la API?
  4. ¿Cómo superar los límites de datos de la API de EIA?
  5. ¿Cómo filtrar datos de un período específico?
  6. ¿Cómo exportar datos a un archivo Excel?

Metodología

Clave API de EIA

Regístrate en el sitio web oficial de la API de EIA, para obtener la clave API, que es necesaria para solicitar datos.

API_KEY = 'xxx'

Catálogos de datos

La API de EIA proporciona acceso a numerosos catálogos de datos. El siguiente código usa la URL base de la API para solicitar la lista de catálogos.

URL_BASE = "https://api.eia.gov/v2/"

import requests

res = requests.get(URL_BASE, params={'api_key': API_KEY})
data = res.json()
Catálogo de datos de la API de EIA

Categorías anidadas

Como estamos interesados en la demanda de electricidad, usaremos el endpoint electricity.

endpoint = 'electricity'
url = URL_BASE + endpoint

res = requests.get(url, params={'api_key': API_KEY})
data = res.json()

Hay categorías anidadas dentro de cada catálogo.

La demanda está disponible a través del endpoint rto.

Categorías anidadas dentro del endpoint de electricidad

Solicitar datos desde el endpoint

Configura el endpoint electricity/rto/daily-region-sub-ba-data para obtener la demanda por subregión de Autoridad de Balance.

Al final de la URL, agrega data para descargar los datos en lugar de la información del endpoint.

endpoint = 'electricity/rto/daily-region-sub-ba-data/'
url = URL_BASE + endpoint + 'data'

res = requests.get(url, params={'api_key': API_KEY})
data = res.json()

Construir tabla desde los datos de respuesta de la API

La respuesta de la API no está representada en formato tabular. Es un objeto JSON. Por lo tanto, necesitamos transformarlo en una tabla usando la biblioteca pandas.

import pandas as pd

df = pd.DataFrame(data['response']['data'])
Datos limitados de la API de EIA sin valores

Hay un problema con los límites de los datos. La API devuelve solo las primeras 5,000 filas y el valor de la demanda de electricidad no aparece en la tabla.

¿Cómo obtener todos los datos hasta ahora con los valores?

Obteniendo todos los datos con valores

Usando el parámetro offset, puedes obtener los datos en bloques de 5,000 filas.

Con el parámetro data[], obtendrás los valores de la demanda de electricidad.

Este proceso puede tomar algo de tiempo; puedes sentarte cómodamente ;)

parameters = {
    'api_key': API_KEY,
    'offset': 0,
    'data[]': 'value'
}

data_all = []

while True:
    res = requests.get(url, params=parameters)
    data = res.json()
    data_all.extend(data['response']['data'])
    
    if len(data['response']['data']) < 5000:
        break

    parameters['offset'] += 5000

df = pd.DataFrame(data_all)
Datos completos de la API de EIA con valores

¿Qué pasa si quieres descargar los datos de un período específico?

Filtrar datos de un período específico

Por ejemplo, para filtrar los datos de 2024, puedes usar el parámetro start para especificar la fecha inicial.

parameters = {
    'api_key': API_KEY,
    'offset': 0,
    'data[]': 'value',
    'start': '2024-01-01'
}
Datos filtrados desde fecha usando parámetros de la API de EIA

Exportar tabla de datos a Excel

Finalmente, puedes exportar los datos a un archivo Excel para analizarlos allí.

Aunque, podrías querer ahorrar tiempo analizando los datos directamente en Python ;)

df.to_excel('demanda-energia-eeuu.xlsx')

Conclusiones

Ahora, en lugar de descargar manualmente los datos de EIA y navegar por los menús, sabes cómo automatizar el proceso usando Python.

En este tutorial, has aprendido cómo:

  1. Identificar indicadores desde la API de EIA.
  2. Usar la API de EIA para descargar datos programáticamente.
  3. Construir una tabla desde los datos de respuesta de la API.
  4. Superar los límites de datos de la API de EIA.
  5. Filtrar datos de un período específico.
  6. Exportar datos a un archivo Excel.