Libreria Python para analisis de microdatos ENAHO del INEI Peru
Project description
ENAHOPY 🇵🇪
Librería integral para análisis de microdatos del INEI (Perú)
Herramienta completa y robusta para descargar, procesar, analizar y visualizar microdatos de encuestas nacionales peruanas como ENAHO. Diseñada específicamente para investigadores, instituciones públicas y profesionales del análisis social en Perú.
Características Principales
- Descarga Automática: Descarga directa desde servidores oficiales del INEI
- Multi-formato: Compatible con DTA (Stata), SAV (SPSS), CSV, Parquet
- Validación Inteligente: Validación automática de columnas y mapeo de variables
- Fusión de Módulos: Sistema avanzado para combinar módulos ENAHO
- Análisis Geográfico: Integración con datos georreferenciados y ubigeos
- ️Análisis de Valores Nulos: Detección de patrones y estrategias de imputación
- Sistema de Cache: Optimización automática de descargas repetidas
- Alto Rendimiento: Procesamiento paralelo para archivos grandes
- Visualizaciones: Gráficos especializados para datos de encuestas sociales
- Reportes Automáticos: Generación de reportes en múltiples formatos
📦 Instalación
Instalación básica
pip install enahopy
🎯 Uso Rápido
Descarga y lectura de datos ENAHO
from enahopy.loader import download_enaho_data, read_enaho_file
# Descargar módulo específico
download_enaho_data(year=2023, modules=['01'], data_dir='datos_enaho')
# Leer archivo descargado
df_hogar = read_enaho_file('datos_enaho/2023/Enaho01-2023-200.dta')
print(f"Registros cargados: {len(df_hogar):,}")
Fusión de módulos
from enahopy.merger import merge_enaho_modules
# Combinar módulo de hogar con personas
df_combined = merge_enaho_modules(
modules=['01', '02'], # Hogar + Personas
year=2023,
level='persona'
)
Análisis geográfico
from enahopy.merger import merge_with_geography
# Agregar información geográfica
df_geo = merge_with_geography(
df_combined,
nivel='departamento',
incluir_ubigeo=True
)
Análisis de valores nulos
from enahopy.null_analysis import ENAHONullAnalyzer
# Análisis completo de missing values
analyzer = ENAHONullAnalyzer(complexity='advanced')
result = analyzer.analyze(df_combined)
# Visualizar patrones
analyzer.plot_missing_patterns(save_path='missing_analysis.png')
# Generar reporte
analyzer.export_report(result, 'reporte_nulos.html')
🏗️ Arquitectura del Paquete
enaho_py/
├── loader/ # Descarga y lectura de datos
│ ├── core/ # Configuración y excepciones
│ ├── io/ # Readers y downloaders
│ └── utils/ # Utilidades y shortcuts
├── merger/ # Fusión de módulos y geografía
│ ├── geographic/ # Manejo de datos geográficos
│ ├── modules/ # Fusión entre módulos ENAHO
│ └── strategies/ # Estrategias de fusión
└── null_analysis/ # Análisis de valores faltantes
├── core/ # Motor de análisis
├── patterns/ # Detección de patrones
├── imputation/ # Estrategias de imputación
└── reports/ # Generación de reportes
📊 Casos de Uso Típicos
1. Análisis de Pobreza Nacional
from enaho_analyzer import ENAHOAnalyzer
# Inicializar analizador
enaho = ENAHOAnalyzer(year=2023)
# Cargar módulos necesarios
df = enaho.load_modules(['01', '02', '34']) # Hogar, personas, ingresos
# Calcular indicadores de pobreza
poverty_stats = enaho.calculate_poverty_indicators(df)
print(poverty_stats.summary())
2. Análisis Regional Comparativo
# Análisis por departamentos
regional_analysis = enaho.analyze_by_region(
df,
indicators=['poverty_rate', 'gini_coefficient'],
level='departamento'
)
# Visualizar resultados
regional_analysis.plot_map(indicator='poverty_rate')
3. Tendencias Temporales
# Análisis multi-año
trends = enaho.analyze_trends(
years=range(2019, 2024),
modules=['01', '02'],
indicators=['poverty', 'education', 'health']
)
trends.plot_evolution()
🔧 Configuración Avanzada
from enaho_analyzer.loader.core import ENAHOConfig
# Configuración personalizada
config = ENAHOConfig(
cache_dir='mi_cache',
max_workers=8,
chunk_size=50000,
enable_validation=True
)
# Usar configuración en análisis
enaho = ENAHOAnalyzer(config=config)
📚 Ejemplos Prácticos
El repositorio incluye notebooks con ejemplos completos:
- 📊 Análisis de Pobreza Básico
- 🗺️ Mapeo de Indicadores Sociales
- 🔗 Fusión Avanzada de Módulos
- 🕳️ Tratamiento de Valores Faltantes
🤝 Contribuir
¡Las contribuciones son bienvenidas! Ver CONTRIBUTING.md para detalles completos.
Proceso de desarrollo:
# Clonar repositorio
git clone https://github.com/elpapx/enahopy
cd enahopy
# Instalar en modo desarrollo con dependencias
pip install -e .[dev]
# Instalar pre-commit hooks
pre-commit install
# Ejecutar tests rápidos
pytest tests/ -m "not slow"
# Verificar estilo de código
black --check enahopy/ tests/
flake8 enahopy/
isort --check-only enahopy/ tests/
# Ejecutar suite completa con cobertura
pytest tests/ --cov=enahopy --cov-report=html
Estado del CI/CD
Todos los PRs son automáticamente validados por:
- ✅ Quality Checks: black, flake8, isort
- ✅ Multi-platform Tests: Ubuntu, Windows, macOS
- ✅ Python Matrix: 3.8, 3.9, 3.10, 3.11, 3.12
- ✅ Coverage: Cobertura mínima 40% (objetivo: 60%)
- ✅ Build Validation: Empaquetado PyPI
📈 Roadmap
- Soporte para ENDES (Encuesta Demográfica y de Salud Familiar)
- Integración con ENAPRES (Encuesta Nacional de Programas Presupuestales Estratégicos)
- API REST para servicios web
- Dashboard interactivo con Streamlit
- Integración con R a través de reticulate
- Soporte para análisis longitudinal (paneles)
📄 Licencia
Este proyecto está bajo la Licencia MIT - ver LICENSE para detalles.
📞 Soporte
- 📧 Email: pcamacho447@gmail.com
- 🐛 Issues: GitHub Issues
- 📖 Documentación: enaho-analyzer.readthedocs.io
- 💬 Discusiones: GitHub Discussions
🙏 Agradecimientos
- Instituto Nacional de Estadística e Informática (INEI) por la disponibilización de microdatos
- Comunidad científica peruana por feedback y contribuciones
- Contribuidores del proyecto y usuarios beta
Desarrollado con ❤️ para la comunidad de investigación social en Perú
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file enahopy-0.5.1.tar.gz.
File metadata
- Download URL: enahopy-0.5.1.tar.gz
- Upload date:
- Size: 524.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f59e811298521d8f856affc15da68dc0750df6f026f3c007b9e74063f918b65
|
|
| MD5 |
08b95351a467aba18f7d37e2b00f9d6f
|
|
| BLAKE2b-256 |
55a7a3d6e176960bab2b33b6ed21d59578a6fe5d06b28274a87c9f35ab2d1b8d
|
File details
Details for the file enahopy-0.5.1-py3-none-any.whl.
File metadata
- Download URL: enahopy-0.5.1-py3-none-any.whl
- Upload date:
- Size: 354.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88592ca798232af8d7fb8a82a9f88b1938e6714b7c8696302490b4880b447e91
|
|
| MD5 |
2d729f6c6112f1714a0c521b52490771
|
|
| BLAKE2b-256 |
6914ae21dea07379d41d45fe292ad86225e44e450231b7544ab368d0d650d80e
|