Skip to main content

Libreria Python para analisis de microdatos ENAHO del INEI Peru

Project description

ENAHOPY 🇵🇪

Python 3.8+ License: MIT CI Pipeline codecov Code style: black

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:

🤝 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

🙏 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ú

Made in Peru

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

enahopy-0.5.1.tar.gz (524.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

enahopy-0.5.1-py3-none-any.whl (354.4 kB view details)

Uploaded Python 3

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

Hashes for enahopy-0.5.1.tar.gz
Algorithm Hash digest
SHA256 0f59e811298521d8f856affc15da68dc0750df6f026f3c007b9e74063f918b65
MD5 08b95351a467aba18f7d37e2b00f9d6f
BLAKE2b-256 55a7a3d6e176960bab2b33b6ed21d59578a6fe5d06b28274a87c9f35ab2d1b8d

See more details on using hashes here.

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

Hashes for enahopy-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 88592ca798232af8d7fb8a82a9f88b1938e6714b7c8696302490b4880b447e91
MD5 2d729f6c6112f1714a0c521b52490771
BLAKE2b-256 6914ae21dea07379d41d45fe292ad86225e44e450231b7544ab368d0d650d80e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page