Tutorial
EIA API en Python: Descarga automática de datos energéticos de EE.UU.
Entiende la estructura de la API de EIA y aprende a usarla con Python para automatizar las descargas y exportaciones a Excel.
Cada hora, la red eléctrica de EE.UU. coordina la oferta y demanda de electricidad. En el proceso se genera una gran cantidad de datos.
Por ejemplo, el siguiente gráfico representa la demanda eléctrica por subregión.

En lugar de descargar los archivos Excel manualmente y navegar por los menús, puedes automatizar el proceso usando programación.
En este tutorial, aprenderás a usar la API de EIA (Energy Information Administration) con Python.
Preguntas
- ¿Cómo identificar indicadores de la API de EIA?
- ¿Cómo usar la API de EIA para descargar datos programáticamente?
- ¿Cómo construir una tabla a partir de los datos de respuesta de la API?
- ¿Cómo superar los límites de datos de la API de EIA?
- ¿Cómo filtrar datos de un período específico?
- ¿Cómo exportar datos a un archivo Excel?
Metodología
Clave de API de EIA
Regístrate en el sitio web oficial de la API de EIA para obtener la clave de API, que es necesaria para solicitar datos.
API_KEY = 'YOUR_API_KEY' 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() 
Categorías anidadas
Como nos interesa la demanda eléctrica, 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.

Solicitar datos del endpoint
Configura el endpoint electricity/rto/daily-region-sub-ba-data para obtener la demanda por subregión de Balancing Authority.
Al final de la URL, añade 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 a partir de 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']) 
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 eléctrica no aparece en la tabla.
¿Cómo obtener todos los datos hasta ahora con los valores?
Obtener 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 eléctrica.
Este proceso puede tomar algo de tiempo; ponte cómodo ;)

¿Y si quisieras 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.

Exportar tabla de datos a Excel
Finalmente, puedes exportar los datos a un archivo Excel para analizarlos allí.
Aunque, quizás prefieras ahorrar tiempo analizando los datos directamente en Python ;)
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 a:
- Identificar indicadores de la API de EIA.
- Usar la API de EIA para descargar datos programáticamente.
- Construir una tabla a partir de datos de respuesta de la API.
- Superar los límites de datos de la API de EIA.
- Filtrar datos de un período específico.
- Exportar datos a un archivo Excel.