Construyendo GeoDataV2

GeoDataV2 es un Mapeador Multi-Bancos CDMX — un toolkit en Python que extrae, mapea y analiza ubicaciones de sucursales bancarias en Ciudad de México para Santander, BBVA y Banorte. Combina la Google Places API con mapas interactivos Folium y un dashboard Streamlit para sentimiento de reseñas, métricas de competencia e insights geográficos.

Qué hace

El proyecto tiene dos capas principales:

1. Extractor de datos (V1Extractor.py)

La clase MultiBankCDMXMapper impulsa el pipeline:

  • Búsqueda multi-banco — Consulta Google Places por ubicaciones de sucursales en las 16 alcaldías de CDMX, con estrategias de búsqueda configurables: por alcaldía, por grid o mixta (alcaldías + códigos postales).
  • Deduplicación — Rastrea place IDs procesados para evitar entradas duplicadas en búsquedas superpuestas.
  • Datos ricos del lugar — Captura nombre, dirección, teléfono, horarios, calificaciones, conteo de reseñas y reseñas recientes de usuarios por sucursal.
  • Análisis de competencia — Calcula distancias entre sucursales competidoras dentro de un radio configurable (1 km por defecto), ventajas de calificación y estadísticas de dominancia por zona.
  • Exportación — Guarda resultados como JSON, CSV y Excel multi-hoja (pestañas por banco, dominancia por alcaldía, resúmenes comparativos), además de mapas HTML independientes.

2. Dashboard Streamlit (streamlit_analyzer.py)

Una app web interactiva que carga los datasets exportados y ofrece:

  • Overview — Métricas clave y distribuciones por banco
  • Análisis de reseñas — Clasificación de sentimiento (TextBlob), nubes de palabras y tendencias de calificación
  • Competencia — Saturación de mercado, comparaciones de distancia y ventajas competitivas por zona
  • Mapas interactivos — Capas Folium embebidas vía streamlit-folium, con toggles por banco y heatmaps
  • Insights avanzados — Correlaciones, pistas predictivas y recomendaciones de expansión

Un script launcher (run_analyzer.py) verifica archivos de datos existentes, opcionalmente ejecuta el extractor primero, instala dependencias e inicia Streamlit.

Stack tecnológico

CapaElección
LenguajePython 3
API geodataGoogle Maps Places API
MapasFolium + streamlit-folium
DashboardStreamlit
VisualizaciónPlotly, Matplotlib, Seaborn
NLPTextBlob (sentimiento), WordCloud
DatosPandas, NumPy, openpyxl
DistanciaGeopy (geodesic)

Características del mapa

Los mapas HTML generados incluyen:

  • Marcadores codificados por color según banco (Santander rojo, BBVA azul, Banorte verde) y por nivel de calificación
  • Popups con detalles completos de sucursal, reseñas recientes e info de competidores cercanos
  • Capas de heatmap activables por banco
  • Círculos de competencia que resaltan zonas de alta densidad
  • Múltiples opciones de basemap (OpenStreetMap, modos oscuro/claro)

Proceso de desarrollo

Scaffold inicial

El primer commit estableció la clase central MultiBankCDMXMapper en V1Extractor.py: integración con Google Places, configuración multi-banco, búsqueda por alcaldía en las 16 alcaldías, estrategia de búsqueda por grid, procesamiento de resultados con deduplicación, generación de mapas Folium con clusters de marcadores y heatmaps, cálculos de distancia de competencia y exportación JSON/CSV/Excel. Se incluyeron archivos de salida de muestra y mapas HTML preconstruidos en el repositorio.

Commit secuencial

Un commit de seguimiento refinó el pipeline de extracción — mejoras de procesamiento secuencial para manejar paginación de API, pausas por rate limiting entre búsquedas por alcaldía y acumulación más confiable de resultados entre los tres bancos.

Configuración Streamlit

Se agregó el dashboard Streamlit (streamlit_analyzer.py) con UI de tema oscuro, estilos por banco, gráficas Plotly, embedding de mapas Folium y filtros en sidebar. También se agregó .streamlit/config.toml para configuración de deploy y run_analyzer.py como launcher de un solo comando.

Actualización del README

README ampliado con documentación completa: pasos de instalación, configuración de API key, ejemplos de uso para cada estrategia de búsqueda, descripciones de archivos exportados y hojas Excel, explicaciones de capas del mapa, métricas de competencia y opciones de personalización para agregar bancos nuevos o cambiar el radio de competencia.

Versión final (Unix time)

Corrección del manejo de timestamps en todo el pipeline — nombres de archivos de exportación y metadata ahora usan nomenclatura consistente basada en Unix time (multibancos_cdmx_YYYYMMDD_HHMM), asegurando archivos de datos ordenados y parsing correcto de datetime en el loader de Streamlit.

Fix de error de build Streamlit

Se resolvió un error de compilación/deploy de Streamlit que bloqueaba la demo alojada. Después de este commit la app se desplegó exitosamente en bankdata.streamlit.app.

Casos de uso

  • Investigación de mercado — Comparar densidad de sucursales y satisfacción del cliente entre bancos y alcaldías
  • Planeación de expansión — Identificar zonas desatendidas con baja competencia
  • Inteligencia competitiva — Ver qué sucursales superan a rivales cercanos en calificaciones y volumen de reseñas
  • Académico / portafolio — Demostrar extracción, análisis y visualización geodata end-to-end

Blog

recent-work

Construyendo Smartclic Demo

Landing page moderna para una agencia mexicana de desarrollo web — React 19, Vite, Tailwind v4, scroll GSAP, visor 3D y bilingüe ES/EN.

Leer más →

Smartclic Demo

Landing page para una agencia web mexicana — React 19, Tailwind v4, GSAP scroll, visor 3D y bilingüe ES/EN.

Cómo se construyó →
border-home1