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

GeoDataV2 combina la API de Google Places, mapas Folium y un dashboard Streamlit para explorar datos de sucursales multi-banco en la Ciudad de México.

Núcleo de extracción (V1Extractor.py)

  • Clase MultiBankCDMXMapper con configuración por banco y búsqueda por alcaldía en las 16 alcaldías.
  • Estrategia de búsqueda por grid, deduplicación y cálculos de distancia de competencia vía geodesic de Geopy.
  • Mapas Folium con clusters de marcadores, heatmaps y popups; exportación JSON, CSV y Excel.
  • Datasets de muestra y mapas HTML preconstruidos incluidos en el repo para revisión rápida.

Paginación y rate limiting

  • Procesamiento secuencial mejorado para paginación de Places API (next_page_token).
  • Pausas entre búsquedas por alcaldía para respetar límites de cuota.
  • Acumulación de resultados más confiable al consultar tres bancos en la malla completa de la ciudad.

Dashboard analizador Streamlit

  • streamlit_analyzer.py con UI de tema oscuro, colores por banco, gráficas Plotly y mapas Folium embebidos vía streamlit-folium.
  • .streamlit/config.toml para configuración de deploy hospedado y run_analyzer.py como launcher de un comando.
  • Filtros del sidebar y descripciones de hojas exportadas documentados en el README.

Timestamps y demo hospedada

  • Nombres de exportación estandarizados a multibancos_cdmx_YYYYMMDD_HHMM para archivos ordenados y parsing correcto en el loader.
  • Error de build de Streamlit corregido que bloqueaba bankdata.streamlit.app.
  • README ampliado con instalación, API key, ejemplos de estrategias de búsqueda y notas de personalización para nuevos bancos o radio de competencia.

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 Galena AI

Dashboard de detección de voz sintética — seis detectores ONNX detrás de un servicio FastAPI, confianza del veredicto, historial de llamadas y métricas interactivas del modelo.

Leer más →

Galena AI

Dashboard de detección de voz sintética — seis detectores ONNX vía FastAPI, confianza del veredicto, historial de llamadas y métricas interactivas.

Cómo se construyó →
border-home1