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.

Sitio web de FRED con IPC

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

  1. ¿Cómo identificar indicadores del sitio web de FRED?
  2. ¿Cómo usar la API de FRED para descargar datos programáticamente?
  3. ¿Cómo construir una tabla a partir de los datos de respuesta de la API?
  4. ¿Cómo exportar datos a un archivo Excel?
  5. ¿Cómo refactorizar código en una función para evitar repetición?
  6. ¿Cómo descargar múltiples indicadores automáticamente?
  7. ¿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:

  1. api_key
  2. series_id
  3. file_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()

Datos JSON devueltos por la API de FRED

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:

  1. La respuesta JSON obtenida se convierte en un DataFrame de la biblioteca pandas.
  2. El DataFrame luego 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

DataFrame con IPC

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.

Inicia sesión para ver el código

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.

  1. Índice de Precios al Consumidor (IPC): CORESTICKM159SFRBATL
  2. 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.

Inicia sesión para ver el código

DataFrame con dos indicadores de FRED

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:

Inicia sesión para ver el código

Graficando IPC y MR30US sin procesar

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:

  1. Identificar indicadores del sitio web de FRED.
  2. Usar la API de FRED para descargar datos programáticamente.
  3. Construir una tabla a partir de los datos de respuesta de la API.
  4. Exportar los datos a un archivo Excel.
  5. 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.

Inicia sesión para ver el código

Suscríbete a nuestro newsletter

Recibe insights semanales sobre datos, automatización e IA.

© 2025 Datons. All rights reserved.