Tutorial
API de FRED en Python: Datos económicos automatizados de la Reserva Federal de EE.UU.
Una guía paso a paso para descargar, exportar y visualizar automáticamente datos económicos de la Fed de St. Louis usando su API con Python.
Los datos de FRED se actualizan frecuentemente. Cada vez que quieras actualizar tu análisis, necesitas descargar los datos de nuevo.
Por ejemplo, los datos de Inflación (IPC) se actualizan mensualmente.

En lugar de descargar el archivo Excel manualmente y navegar por los menús para reproducir el gráfico, puedes automatizar el proceso usando Python. ¿Cómo?
En este tutorial, te lo explicamos paso a paso.
Preguntas
- ¿Cómo identificar indicadores del sitio web de FRED?
- ¿Cómo usar la API de FRED para descargar datos programáticamente?
- ¿Cómo construir una tabla a partir de los datos de respuesta de la API?
- ¿Cómo exportar datos a un archivo Excel?
- ¿Cómo refactorizar código en una función para evitar repetición?
- ¿Cómo descargar múltiples indicadores automáticamente?
- ¿Cómo combinar múltiples tablas en una sola?
Metodología
Documentación de la API de FRED
Se recomienda visitar la documentación oficial de la API de FRED para entender cómo están organizados los indicadores.
En nuestro caso, usaremos el endpoint fred/series/observations para obtener los datos de Inflación (IPC), que es el indicador que viste en el gráfico anterior.
Siguiendo las instrucciones del endpoint, podemos proporcionar tres parámetros:
api_keyseries_idfile_type
Además de la URL y el endpoint, que son los siguientes:
URL_BASE = 'https://api.stlouisfed.org/'
ENDPOINT = 'fred/series/observations'
URL = URL_BASE + ENDPOINT Antes de crear los parámetros en Python, asegúrate de tener una clave API, proporcionada por FRED. Si no la tienes, sigue estas instrucciones para obtener una.
De lo contrario, obtendrás un error porque FRED no permite solicitudes anónimas a la API.
Solicitar datos de la API de FRED
Para obtener datos de ubicaciones de internet (URLs), usaremos la biblioteca de Python requests.
El siguiente código compone la URL para obtener el IPC basado en el indicador CORESTICKM159SFRBATL:
import requests
API_KEY = 'TU_CLAVE_API'
INDICATOR = 'CORESTICKM159SFRBATL'
params = {
'api_key': API_KEY,
'series_id': INDICATOR,
'file_type': 'json'
}
res = requests.get(URL, params=params)
data = res.json() 
Construir tabla a partir de los datos de respuesta de la API
Como puedes ver, la respuesta de la API no está representada en formato tabular. Es un objeto JSON. Por lo tanto, necesitamos transformarlo en una tabla para analizarlo.
Las siguientes operaciones se ejecutan en las líneas de código subsiguientes:
- La respuesta
JSONobtenida se convierte en unDataFramede la bibliotecapandas. - El
DataFrameluego se preprocesa y refina para tener datos simples y funcionales.
import pandas as pd
df_cpi = (pd
.DataFrame(data['observations'])
.drop(columns=['realtime_start', 'realtime_end'])
.rename(columns={'value': 'CPI'})
.astype({'date': 'datetime64[ns]'})
.set_index('date')
.apply(pd.to_numeric)
)
df_cpi 
Exportar datos a Excel
Si estás familiarizado con Excel, puedes exportar los datos a un archivo Excel para analizarlos allí.
df_cpi.to_excel('FRED_CPI.xlsx') Ahora, ¿qué pasa si quisiéramos descargar otro indicador como MORTGAGE30US?
¿Vamos a repetir el mismo código de nuevo?
¡Por supuesto que no! Podemos crear una función para automatizar el proceso.
Refactorizando el código en una función
Dado que un solo indicador económico podría no ser suficiente para un análisis completo. Para mejorar nuestras capacidades de adquisición de datos, debemos refactorizar nuestro código en una función.
La siguiente función nos permitirá recuperar cualquier indicador según nuestras necesidades.
Obteniendo múltiples indicadores automáticamente
En lugar de repetir todas las líneas de código anteriores, llamamos a la función para obtener la información de dos indicadores simplemente proporcionando los códigos de indicador.
- Índice de Precios al Consumidor (IPC):
CORESTICKM159SFRBATL - Tasa Hipotecaria:
MORTGAGE30US
Adicionalmente, hacemos merge de los conjuntos de datos basándonos en el índice de fecha y hora de ambos DataFrames para mostrarlos en una sola tabla.

Hay presencia de datos faltantes NaN porque la información de los indicadores no se recupera en el mismo período: el IPC es mensual, mientras que el MR es semanal.
Este problema hace que nuestros datos no sean aptos para el análisis. Por ejemplo, si intentamos crear un gráfico, no vemos la mayoría de los datos del IPC:

Conclusiones
En lugar de descargar los datos de FRED en un archivo Excel manualmente y navegar por los menús para reproducir el gráfico, ahora sabes cómo automatizar el proceso usando Python.
En este tutorial, has aprendido cómo:
- Identificar indicadores del sitio web de FRED.
- Usar la API de FRED para descargar datos programáticamente.
- Construir una tabla a partir de los datos de respuesta de la API.
- Exportar los datos a un archivo Excel.
- Refactorizar el código en una función para evitar repetición de código.
Aún así, hay un problema con los indicadores que no tienen la misma frecuencia.
En el próximo post, te mostraremos cómo usar interpolate para rellenar los datos faltantes con valores razonables.
Antes, exportemos los datos a un archivo Excel para cargarlo en el siguiente tutorial.