Una forma más de explotar la información del INEGI🤗: jugando con la API del DENUE

Claudio Daniel Pacheco Castro
tacosdedatos
Published in
4 min readSep 6, 2021

El Instituto Nacional de Estadística y Geografía (INEGI) cuenta con diferentes instrumentos de información para entender la realidad económica, social, demográfica y cultural de México. En su catálogo se pueden encontrar censos, encuestas y registros administrativos que permiten generar indicadores demográficos, sociales y económicos, además de contabilidad nacional.

Si has visitado el sitio del Instituto, podrás darte cuenta que el consumo de información se puede hacer mediante diferentes vías: consultas dinámicas, bancos de indicadores, datos abiertos, tabulados básicos, microdatos, etc📊📉📈. Todo esto que menciono se traduce en una descarga de archivos que pueden ser en diferentes formatos: csv, excel, dta, sav, dbf, entre otros. Y descargar archivos está bien pero, ¿qué otras opciones nos ofrece el INEGI para poder consumir y explotar la información que genera?

No sé si has escuchado sobre las APIs. No me detendré mucho en la explicación pero sí te dejo esta infografía que encontré para un mayor entendimiento👇🏼:

Fuente: https://www.bbvaapimarket.com/es/mundo-api/infografia-que-es-una-api/

Ahora que ya pudiste conocer un poquito más de esto, debes saber que el INEGI cuenta con algunas APIs para poder consumir la información directamente de las bases de datos del Instituto, desarrollar algunos productos con datos actualizados al momento.

El caso que te voy a presentar es el de la API del Directorio Estadístico Nacional de Unidades Económicas (DENUE)

https://www.inegi.org.mx/servicios/api_denue.html

¿Qué necesito para usar esta API? El primer paso es bastante sencillo: únicamente debes solicitar un token, el cual será tu número que te permitirá hacer consultas. Este lo puedes obtener dentro de la pestaña “Guía para desarrolladores”:

Aquí se pide el TOKEN

Una vez que hagas esto, te llegará un correo con tu token:

Correíto con el TOKEN

Ahora sí, que comience la magia🙃💫.

En este ejemplo lo único que se expondrá será el hacer la consulta del total de unidades económicas del estado de Morelos y ponerlas en un mapita🗺.

Las librerías que se utilizarán son las siguientes:

#Uso de la API del DENUE de INEGI#Libreríasimport requestsimport pandas as pdimport foliumfrom folium import plugins

Posteriormente, se define la liga para la consulta de información. En esta es donde pondrás tu token:

#url con token#Ejemplo: todas las unidades económicas de Morelosurl = "https://www.inegi.org.mx/app/api/denue/v1/consulta/BuscarEntidad/todos/17/1/100000000/AQUÍ_VA_TU_TOKEN"

Si notas, dentro de la URL escribimos la palabra “todos”. Esto es para que la consulta nos devuelva el total de unidades económicas de la entidad 17 (también en la URL); es decir, Morelos.

Hecho esto, obtenemos la respuesta a la consulta en JSON. Posteriormente, esto se transforma en una dataframe de Pandas y se convierten las variables en minúsculas para poder trabajar con la información:

#Respuesta de la consulta a la APIrespuesta = requests.get(url).json()#Dataframe de pandasdf= pd.DataFrame(respuesta)##Pasamos los nombres de las variables a minúsculasdf.columns= df.columns.str.lower()

Se revisa la información de la dataframe y se compara con lo publicado por el INEGI en la página del DENUE:

Mismo resultado de la consulta a la API como en la página de INEGI

Como se puede ver, la consulta a la API arroja el mismo resultado que la página del DENUE: 110, 685 unidades económicas en el estado de Morelos.

¡Sí nos dio lo mismo!

¿Y ahora? Podemos hacer muchas cosas, wuuuuu.

Wuuuuuuuuuuuuuuuuuuuuuuu

En este caso, expondré cómo generar un mapa de calor utilizando Folium. Para esto, se seleccionarán únicamente las latitudes y longitudes de los registros y se convertirá en un array:

#Seleccionamos solo la latitud y longituddf=df[["latitud", "longitud"]]#Convertimos nuestra df a un arraydf =df.values

Posteriormente, se escribe el código para generar el mapa y se salva en formato HTML. Para el caso de las coordenadas de “location” se pueden obtener directamente de Google Maps:

#Mapa en Foliumm=folium.Map(location=[18.731829,-99.3438812],tiles='OpenStreetMap',zoom_start=10)#Heatmapm.add_child(plugins.HeatMap(df, radius=15))#Salvar mapa en htmlm.save("mapa.html")

¿El resultado? Este bonito mapa:

Mapita cool usando Folium con tiles de OpenStreetMap

Como podrás darte cuenta, usamos datos actualizados del INEGI sin descargar ningún archivo. Ahora que ya tienes un poquito de nociones, quizás puedas aventurarte a ver qué otra información puedes sacar de estas consulta y crear productos más complejos.

Si llegaste hasta aquí, ya sabes que te dejo el código que está en mi Github:

Y ya, es todo.

Happy coding 😊

--

--