Proyecto de análisis y limpieza de datos sobre recursos turísticos, museos y crimen en Madrid.
Este proyecto contiene análisis exploratorios y procesos de limpieza y normalización de tres conjuntos de datos principales:
- Alojamientos Turísticos: Datos sobre alojamientos y establecimientos turísticos
- Museos: Información de museos con validación y normalización de contacto
- Crimen: Datos de incidentes criminales con estandarización geográfica
Mis-recursos/
├── README.md # Este archivo
├── venv/ # Entorno virtual Python (3.12.10)
├── data/ # Carpeta de datos
│ ├── alojamientos_turisticos.csv # Datos originales de alojamientos
│ ├── alojamientos_turisticos_corregido.csv # Datos de alojamientos limpios
│ ├── 201132-0-museos.csv # Datos originales de museos
│ ├── 201132-0-museos.json # Datos de museos en JSON
│ ├── museos_corregido.csv # Datos de museos limpios
│ ├── Act01_BD.*.json # Datos de entrada en JSON
│ ├── crimen_corregido.csv # Datos de crimen limpios
│ ├── data_act_01.csv # Datos de crimen originales
│ └── *.csv # Otros archivos de datos
├── Analisis_turismo.ipynb # Notebook de análisis de alojamientos
├── Analisis Museos.ipynb # Notebook de análisis de museos
├── Analisis crimen.ipynb # Notebook de análisis de crimen
├── Recurso1.ipynb # Notebook de recursos iniciales
├── *.html # Reportes de perfilado (ProfileReport)
└── my_database.db # Base de datos SQLite
Objetivo: Limpiar y normalizar datos de alojamientos turísticos.
Transformaciones realizadas:
- Localidad: Eliminación de tildes y caracteres especiales, conservando espacios y alfanuméricos
- Puerta: Normalización de variantes (IZQ, IZDA, DCHA, etc.) a categorías estándar (IZQUIERDA, DERECHA, CENTRO, AMBAS, PRINCIPAL)
- Vía Tipo: Normalización de variantes de tipos de vía (CALLE, AVENIDA, CARRETERA, CARRERA)
Columnas creadas durante el proceso:
localidad_clean: Localidad normalizadapuerta_norm: Puerta normalizadavia_tipo_norm: Tipo de vía normalizadolocalidad_original,puerta_original,via_tipo_original: Respaldos de valores originales
Resultado: data/alojamientos_turisticos_corregido.csv
Objetivo: Validar y limpiar información de contacto de museos.
Transformaciones realizadas:
-
Email:
- Validación mediante regex (mínimo 2 caracteres @ dominio + .com/.es/.org)
- Relleno de nulos/vacíos con
contactanos@madrid.es - Limpieza de emails erróneos (truncado después de .es/.com/.org)
-
Teléfono:
- Validación: 9 dígitos comenzando con '91'
- Extracción del primer número válido
- Información adicional almacenada en
info_adicional_contacto - Relleno de nulos con
914800010
Columnas creadas:
email_valido,email_estado: Validación y clasificación de emailstelefono_valido,telefono_estado: Validación y clasificación de teléfonosinfo_adicional_contacto: Información de teléfono adicional
Resultado: data/museos_corregido.csv
Objetivo: Estandarizar datos de incidentes criminales.
Transformaciones realizadas:
- Eliminación de columnas innecesarias (Range, CallDateTime)
- Estandarización de City: normalización de valores a 'San Francisco'
- Formateo de OffenseDate a formato YYYY-MM-DD
- Reemplazo de AgencyId '1' por 'CA'
Resultado: data/crimen_corregido.csv
Notebook de apoyo con ejemplos de perfilado de datos y operaciones básicas con pandas y SQLite.
El proyecto usa un entorno virtual Python 3.12.10 con los siguientes paquetes principales:
pandas
numpy
ydata-profiling
openpyxl
ipywidgets
setuptools
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows PowerShellpip install pandas numpy ydata-profiling openpyxl ipywidgetsAbre los notebooks en Jupyter o VS Code:
jupyter notebookO usa VS Code con la extensión Jupyter.
turismo.html: Reporte de alojamientos originalesmuseos.html: Reporte de museos originalescrimen.html: Reporte de crimen originalmuseos_corregido.html: Reporte de museos después de limpiezacrimen_corregido.html: Reporte de crimen después de limpieza
data/alojamientos_turisticos_corregido.csv: Alojamientos limpiosdata/museos_corregido.csv: Museos validados y limpiosdata/crimen_corregido.csv: Crimen estandarizado
- Encoding: Archivos CSV usan
latin-1y separador;para compatibilidad con datos españoles - Base de datos:
my_database.dbes una base de datos SQLite para almacenamiento alternativo - Normalización Unicode: Se usa
unicodedata.NFKDpara el manejo de tildes y caracteres especiales - Validación Regex: Patrones específicos para email y teléfono según normativas españolas
Jonathan Tautiva - jtautivac@udistrital.edu.co
Diciembre 2, 2025