Geomarketing con Python

Photo by T.H. Chia on Unsplash

En este artículo te enseñaré a identificar potenciales ubicaciones para negocios tomando las areas de influencia de otros similares. Es decir identificar espacios que aún no estén ocupados y que tengan en sus cercanias clientes potenciales.

El objetivo será construir un mapa de calor basado en las distancias que se pueden recorrer caminando usando la red de calles de cualquier ciudad de México. Así se verá el mapa que realizaremos aquí:

Integración de Datos Estadísticos y Geográficos

Los datos que vamos a utilizar en este artículo serán:

  • Datos abiertos de la ubicación de los negocios: En México existe el Directorio Estadístico Nacional de Unidades Económicas (DENUE), el cual ofrece la ubicación y varias características estadísticas de todos los negocios de México (https://www.inegi.org.mx/app/mapa/denue/default.aspx).
  • Datos abiertos del Censo de Población y Vivienda 2020: Recientemente se acaba de actualizar el registro estadístico de todos los habitantes de México y puede ser consultado a nivel manzana, nosotros utilizaremos dichos datos para construir un archivo de información geográfica con las características sociodemográficas de la población a nivel manzana, lo cual es un gran detalle (https://www.inegi.org.mx/programas/ccpv/2020/default.html#Datos_abiertos).
  • Datos abiertos del Marco Geoestadístico del Censo de Población y Vivienda 2020: Para poder vincular los datos sociodemográficos con la ubicación de los negocios es necesario asociar los datos estadísticos con los polígonos de las manzanas geográficas, dichos datos se distribuyen por separado y en este tutorial te mostraré cómo vincularlos (https://www.inegi.org.mx/app/biblioteca/ficha.html?upc=889463807469).
  • Datos abiertos de OpenStreetMap: Utilizaremos el paquete OSMnx (https://osmnx.readthedocs.io/en/stable/) para descargar las redes de calles de cualquier ciudad del mundo. A partir de lo cual realizaremos un análisis de distancias para construir poligonos de influencia alrededor de cada negocio, usando los datos de OSM (https://www.openstreetmap.org/).

Implementación Tecnológica

La tecnología que utilizaremos en éste artículo serán

  • Python: Lenguaje de Ciencia de Datos que cuenta con una amplia gama paquetes código abierto que incorporan funcionalidades de análisis de datos altamente flexibles que podemos combinar libremente, lo cual nos permite lograr tareas complejas con relativamente poco código.
  • Jupyter: Es un entorno de programación interactiva de python basada en web, lo cual quiere decir que podras ejecutar todo el código desde la comodidad de tu navegador.
  • Docker : Tecnología que simplifica el proceso de instalación de python, jupyter y todos los paquetes necesarios para éste tutorial. Reduciendolo a la ejecución de una sola línea de código en tu terminal de sistema operativo.

Definir Región y Actividad Económica de Estudio

Ahora toca definir la región de trabajo, en mi caso eligré la localidad de Aguascalientes en el Estado de Aguascalientes, México.

El código usado por el INEGI para el estado de aguascalientes es: 01

La actividad económica que usaremos para realizar el análisis es el de farmacias, para idenficiar el código de dicha actividad económica en el DENUE, debemos consultar la versión web de dicho producto y seleccionar los códigos de actividad de interes (https://www.inegi.org.mx/app/mapa/denue/default.aspx):

En nuestro caso los códigos de la actividad económica son:

  • 464111 Farmacias sin minisúper
  • 464112 Farmacias con minisúper

Instalar Docker

En este tutorial será necesario tener instalado el software llamado Docker en tu equipo. Existen versiones para los principales sistemas operativos (Windows, macOS y Linux).

No te desanimes 😜 aunque te parezca un requerimiento algo misterioso te aseguro que vale cada bit ocupado en tu equipo, este software simplificará horas de instalación y configuraciones de todo lo que usaremos aquí y lo convertirá en UNA SOLA LINEA DE CÓDIGO en la terminal de tu equipo.

Ahora bien, si quieres una referencia rápida, en un artículo anterior puse los pasos para instalar Docker en Windows: Geo Big Data con Datos Censales.

Inicialización de Jupyter a través de Docker

Jupyter es una herramienta práctica para el trabajo con datos, debido a que evita trabajar en la consola directamente y puedes ir ejecutando código paso a paso y ver el resultado. Para simplificar la tarea de trabajar con muchos paquetes, construí una imágen de docker que puedes ejecutar de manera sencilla si ya lo tienes instalado.

Antes de iniciar ¡RECUERDA!

Debes estar en el directorio donde vas a trabajar, ubicandote en el directorio correcto usando tu terminal, antes de correr Docker.

Por ejemplo en esta ocasión me encuentro en Linux, aqui un video de como ir al directorio de trabajo e iniciar docker.

Estando en el directorio principal del tutorial, como se muestra en la animación anterior ejecuta la siguiente linea:

  • Para Windows 10 (PowerShell):
  • Para macOS
  • Para linux

¡¡¡Una vez ejecutada la linea anterior la magia comienza!!!!

Descarga y Extracción de Datos

Ya nos encontramos en Jupyter ahora podremos llevar a cabo el análisis, el primer paso es cargar los paquetes necesarias para el proceso:

Pega el código anterior en un nuevo cuaderno dentro del directorio work y ejecuta el código, podras ver que todo está instalado con un esfuerzo mímimo:

Ahora a descargar los datos del INEGI.

Si has seguido mis tutoriales anteriores sabras que me gusta tener algunas funciones de apoyo para la descarga de datos, por favor copia el código y ejecutalo como lo hiciste en el paso anterior:

Ahora crearemos los directorios dónde descargaremos y extraeremos la información:

Seguimos a descargar los datos de Aguascalientes, puedes consultar otro de mis tutoriales para obtener los códigos de otros estados: https://abxda.medium.com/integraci%C3%B3n-de-los-datos-del-censo-2020-usando-python-c%C3%B3digo-incluido-880b39296998

Ahora hay 3 archivos descargados en los directorios recientemente creados:

El siguiente paso es extraer los archivos necesarios para este ejercicio:

Integración de Datos Censales con Datos Geográficos

Ahora integraremos los datos Censales con los Polígonos de Manzanas, así como también se crearan las capas del DENUE y las del polígonos de localidades del estado de Aguascalientes.

Con el código anterior se genera un archivo de datos en la siguiente ruta : /inegi/mgccpv/gpkg/cpv2020_01.gpkg

Ahora utilizaremos la herramienta llamada QGis para integrar los datos resultantes del proceso anterior. Para lo cual es necesario instalar la dicha herramienta en tu equipo, la puedes descargar de aquí : https://www.qgis.org/es/site/

Ya que la descargaste e instalaste puedes abrir la herramienta y cargar el archivo generado recientemente, tiene toda las capas de información necesarias para nuestro objetivo, tambien lo puedes usar para realziar análisis de la población presente en cada manzana.

Descarga de la red de calles de Aguascalientes

En la información generada en los pasos anteriores, tambien contamos con la capa de poligonos de localidades urbanas, la cual se puede seleccinar y observar los valores de sus atributos:

En concreto nos interesa la clave geográfica que usaremos para seleccionar el polígono de interes y descargar los datos de la red de calles a partir de Open Street Maps.

El primer paso consiste en extraer el polígono de la localidad de Aguascalientes, eso lo conocimos abriendo el archívo generado en el paso anterior y buscamos el polígono indicado, usando código identificado:

Al ejecutarlo en Jupyter obtenemos el siguiente resultado:

Ahora podemos descargar los nodos de las calles que se pueden transitar caminando segun los contribuyentes de Open Street Map:

Tenemos en la variable G todos los nodos de las calles de la Ciudad de Aguascalientes:

Si quieres profundizar en mas formas de descargar y desplegar esta información en mapas interactivos te recomiendo el siguiente tutorial, en el que me inspiré para extraer los nodos y calcular las isocronas que usaremos aquí: https://towardsdatascience.com/how-to-calculate-travel-time-for-any-location-in-the-world-56ce639511f .

Ahora seleccionamos todas las farmacias de la Ciudad de Aguascalientes, usando el código de actividad identificado al inicio de éste tutorial:

Existen 474 Farmacias en la ciudad de Aguascalientes:

Isócronas a 10 minutos de camino a pie

Ahora calcularemos las Isócornas de 10 minutos y guardaremos el resultado en un archivo geográfico:

Ahora contamos con los polígonos de influencia de cada farmacia, lo puedes abrir en QGis y observar el resultado:

Integración de las isócronas con los datos censales

Ahora vamos a contar el número de farmacias cercanas a cada manzana de la ciudad de Aguascalientes, para poder mejorar la visualización de los datos:

El código anterior genera el archivo manzanas_iso_01.gpkg, el cual contiene el campo farmacia en cada manzana de la ciudad de Aguascalientes con el cual podremos realizar la siguiente visualización:

Al final logramos una capa de información que indica la cercanía de farmacias a cada manzana, ademas de los datos sociodemográficos correspondientes, ahora te toca a ti, experimentar con nuevos negocios, otras ciudades y los análisis que se te ocurran.

Gracias por leerme.

Saludos

Sigueme en Twitter https://twitter.com/abxda

Abel Coronado

Father-Husband-Data Scientist-Philosopher-Entrepreneur-Professor PhD c. in Data Science-MSc Stats #R #Scala #Spark #SatelliteImagery #Python #BigData #Nerd

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store