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
| Capa | Elección |
|---|---|
| Lenguaje | Python 3 |
| API geodata | Google Maps Places API |
| Mapas | Folium + streamlit-folium |
| Dashboard | Streamlit |
| Visualización | Plotly, Matplotlib, Seaborn |
| NLP | TextBlob (sentimiento), WordCloud |
| Datos | Pandas, NumPy, openpyxl |
| Distancia | Geopy (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


Construyendo Smartclic Demo