Skip to main content

Librería de Python que convierte códigos de ubigeo en su correspondiente departamento, provincia o distrito, y viceversa, además de información suplementaria.

Project description

Ubigeos Perú

Librería de Python que convierte códigos de ubigeo en su correspondiente departamento, provincia o distrito, y viceversa. Incluye métodos clave para limpiar y validar nombres oficiales, consultar macrorregiones, coordenadas geográficas, etc. Se integra fácilmente con pandas y polars para procesar bases de datos peruanas como la ENAHO.

Las fuentes o bases de datos de ubigeos:

Características Principales

  • Soporte Multi-institucional: Soporte para consultar códigos de ubigeo de INEI y Reniec.
  • Normalización Inteligente: Manejo automático de acentos y mayúsculas para validar ubicaciones.
  • Optimizado para Big Data: 1 000 000 consultas en 0.25-0.65 segundos
  • Carga Diferida: Optimización de memoria mediante lazy loading de recursos y patrón singleton.
  • Metadatos Geográficos: Acceso a información adicional como capital, altitud, superficie y coordenadas

Instalación

Ejecutar en una terminal

pip install ubigeos-peru

Con uv

uv add ubigeos-peru

Uso Básico

Inicialización

Se recomienda importar de la siguiente manera:

import ubigeos_peru as ubg

La clase siempre tendrá una única instancia para evitar cargar recursos dos veces.

Consultar información de Ubigeo

# Departamento
departamento = ubg.get_departamento("1")                 # "Amazonas" (código corto)
departamento = ubg.get_departamento("010101")            # "Amazonas" (código completo)
departamento = ubg.get_departamento(10101)               # "Amazonas" (integer)
departamento = ubg.get_departamento(10101, normalize=True) # "AMAZONAS"

# Provincia
provincia = ubg.get_provincia("1201")                    # "Huancayo"
provincia = ubg.get_provincia(10101, normalize = True)   # "CHACHAPOYAS"

# Distrito
distrito = ubg.get_distrito("50110")                     # "San Juan Bautista"
distrito = ubg.get_distrito(150110)                      # "Comas"

Obtener Ubigeo a partir de ubicación

codigo_dept = ubg.get_ubigeo("Madre de dios", "departamentos") # "17"
codigo_prov = ubg.get_ubigeo("Huaral", "provincia")            # "1506"
codigo_dist = ubg.get_ubigeo("Lince", "distritos")             # "150116"
codigo_dist = ubg.get_ubigeo("Mi peru", "distritos", "reniec") # "240107"

Validación y Normalización ("agregar" o quitar tildes)

ubg.validate_departamento("HUANUCO")                     # "Huánuco"
ubg.validate_departamento("HUÁNUCO", normalize=True)     # "HUANUCO"
ubicacion = ubg.validate_ubicacion("SAN MARTIN")         # "San Martín"

# Validar y agregar tildes o mayúsculas a cualquier ubicación geográfica
ubicacion = ubg.validate_ubicacion("Mi peru")            # "Mi Perú"
ubicacion = ubg.validate_ubicacion("Madre de dios")      # "Madre de Dios"

Macrorregiones

# Obtener macrorregión - múltiples formatos
macro = ubg.get_macrorregion("Amazonas")                 # "Oriente"
macro = ubg.get_macrorregion("AMAZONAS")                 # "Oriente" (mayúsculas)
macro = ubg.get_macrorregion("01")                       # "Oriente" (código string)
macro = ubg.get_macrorregion(1)                          # "Oriente" (entero)

# Con institución específica
macro_ceplan = ubg.get_macrorregion(25, institucion="ceplan")          # "Nororiente"
macro_ceplan = ubg.get_macrorregion("Ucayali", institucion="ceplan")   # "Nororiente"

# Mapeo completo de macrorregiones
mapa_macro = ubg.get_macrorregion_map()

Metadatos Geográficos

# Capitales
capital_dept = ubg.get_metadato("La libertad", level="departamentos", key="capital") # "Trujillo"
capital_prov = ubg.get_metadato("Huarochiri", level="provincias", key="capital")     # "Matucana"

# Altitudes
altitud_dept = ubg.get_metadato("Cusco", level="departamento", key="altitud")       # "3439"
altitud_prov = ubg.get_metadato("Huarochiri", level="provincia", key="altitud")     # "2395"

# Superficies
sup1 = ubg.get_metadato("Lince", level="distritos", key="superficie")               # "3.03"
sup2 = ubg.get_metadato("San Isidro", level="distritos", key="superficie")          # "11.1"

Integración con Pandas

La librería está optimizada para trabajar con DataFrames de pandas, como por ejemplo encuestas de la Enaho:

import pandas as pd

# Crear DataFrame de ejemplo (datos no oficiales)
df = pd.DataFrame({
    "UBIGEO": [10101, 50101, 110101, 150101, 210101, 220101],
    "POBLACION": [45694, 67823, 34576, 857497, 45983, 87564]
})

# Agregar información geográfica
df["DEPARTAMENTO"] = ubg.get_departamento(df["UBIGEO"])

Esto generará el siguiente DataFrame:

    UBIGEO  POBLACION DEPARTAMENTO
0    10101      45694    Amazonas
1    50101      67823    Ayacucho
2   110101      34576    Ica
3   150101     857497    Lima
4   210101      45983    Puno
5   220101      87564    San Martín

También se pueden pasar argumentos con una función lambda

# Agregar información geográfica
df["PROVINCIA"] = ubg.get_provinciadf(df["UBIGEO"], normalize= True)

Esto generará el siguiente DataFrame:

    UBIGEO  POBLACION DEPARTAMENTO  PROVINCIA
0    10101      45694    Amazonas    CHACHAPOYAS
1    50101      67823    Ayacucho    HUAMANGA
2   110101      34576    Ica         ICA
3   150101     857497    Lima        LIMA
4   210101      45983    Puno        PUNO
5   220101      87564    San Martín  MOYOBAMBA

Contribución

Por favor, contáctame si encuentras alguno de los siguientes:

  • Base de datos de la SUNAT actualizada: Es la única que me falta.
  • Errores en el uso de la librería: Funciones que dan error cuando no deberían.
  • Códigos incorrectos: Códigos INEI o RENIEC incorrectos.
  • Nombres incorrectos: Ubicaciones que no siguen el nombre oficial.
  • Ubicaciones faltantes: Provincias o distritos que no están en la base de datos.

📧 michael-salvador@hotmail.com

Cómo contribuir

1. Preparar el entorno

Debes clonar o hacer fork del repositorio para tener acceso a las carpetas /construction y /resources_readable

# Clona o haz fork del repositorio
git clone https://github.com/username/repo-name.git
cd repo-name

# Si usas uv
uv sync
uv pip install -e .

# Si usas pip
pip install -e .

2. Identificar el recurso a actualizar

Los recursos disponibles son:

  • departamentos-> ubigeo : departamento
  • provincias-> ubigeo : provincia
  • distritos-> ubigeo : distrito
  • equivalencias-> UBICACION : Ubicación
  • inverted-> nivel : { Ubicación : ubigeo }
  • macrorregiones-> departamento : { macrorregion }
  • otros-> Ubicación : capital, superficie, altitud, etc

Licencia

Esta librería utiliza datos oficiales de instituciones públicas peruanas y está destinada para uso académico y de investigación.

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

ubigeos_peru-0.2.2.tar.gz (182.4 kB view details)

Uploaded Source

Built Distribution

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

ubigeos_peru-0.2.2-py3-none-any.whl (180.0 kB view details)

Uploaded Python 3

File details

Details for the file ubigeos_peru-0.2.2.tar.gz.

File metadata

  • Download URL: ubigeos_peru-0.2.2.tar.gz
  • Upload date:
  • Size: 182.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for ubigeos_peru-0.2.2.tar.gz
Algorithm Hash digest
SHA256 8058bb7bfa01ff4b18b29a90de95f510c67ef04984a476dc5faefac690babf69
MD5 756e13fcfeab9a7bd4c1ffa64bc805ec
BLAKE2b-256 88f767157e0a4b232be5a445774124080361f31d9bdf12b13f9df473fd3e1bf6

See more details on using hashes here.

File details

Details for the file ubigeos_peru-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: ubigeos_peru-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 180.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for ubigeos_peru-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d30cb8f48f6d3923412275fcf49dc5f344c302b4ffedea6c84eda69e5b706f6
MD5 60127de27eddac2c483e3df5bbcea16f
BLAKE2b-256 00bce056a45bb59a0e0aa903e9369d4f8eb381635cd24959361857563a238042

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