Skip to main content

PyPolData

Python Version License: MIT Status: MVP

Acceso reproducible y transparente a datasets abiertos para Ciencia Política y Ciencias Sociales.

PyPolData es una biblioteca en Python diseñada para reducir la fricción técnica y metodológica que enfrentan estudiantes e investigadores al localizar, descargar, procesar, documentar y citar datos politológicos y territoriales.


🎯 ¿Por qué PyPolData?

El análisis de datos en ciencias políticas suele enfrentarse a barreras innecesarias:

  • Datasets dispersos en formatos pesados e ineficientes (e.g. GeoJSONs de +200 MB, CSVs sin tipado).
  • Pérdida de trazabilidad y procedencia de los archivos.
  • Dificultades para asegurar la reproducibilidad exacta en aulas y publicaciones académicas.

PyPolData resuelve esto combinando formatos analíticos modernos (Parquet / GeoParquet), distribución versionada en GitHub Releases, validación criptográfica de integridad (SHA-256) y caché local transparente.


🚀 Instalación

# Clonar el repositorio
git clone https://github.com/ahenaor/pypoldata.git
cd pypoldata

# Instalar en modo desarrollo / editable
pip install -e .

Próximamente disponible vía PyPI:

pip install pypoldata

💡 Uso Rápido

1. Listar datasets disponibles en el catálogo

import pypoldata as ppd

# Explorar los datasets indexados
ppd.list_datasets()

2. Cargar un dataset analítico

Carga datos directamente a memoria (pandas.DataFrame o geopandas.GeoDataFrame). La primera llamada descarga el artefacto optimizado a tu caché local verificando su huella SHA-256; las siguientes llamadas son instantáneas y funcionan sin conexión.

import pypoldata as ppd

# Cargar cartografía municipal de Colombia optimizada en GeoParquet
gdf = ppd.load("colombia_municipios")

# Visualizar
gdf.plot(color="#e0f3f8", edgecolor="#1b7837", linewidth=0.5)

📦 Datasets Disponibles en el MVP

dataset_id Descripción Nivel / Unidad Formato Fuente
colombia_municipios Cartografía vectorial de los 1.122 municipios de Colombia (simplificada y optimizada). Municipio GeoParquet (~3.5 MB) DANE / IGAC

⚙️ Arquitectura y Principios de Diseño

  1. Separación entre Código y Datos: La versión del paquete (v0.1.0), las versiones de los datasets (1.0.0) y las etiquetas de release de datos (data-v2026.08) se gestionan de manera independiente.
  2. Integridad por Defecto: Todo archivo descargado es validado contra su hash SHA-256 registrado en el catálogo central. Si el archivo sufre alteraciones o descargas truncadas, se rechaza de forma atómica.
  3. Caché Inteligente: Los archivos se almacenan localmente respetando los estándares del sistema operativo (vía platformdirs o la variable de entorno PYPOLDATA_DATA_HOME).
  4. Eficiencia Analítica: Estandarización sobre Parquet / GeoParquet con compresión nativa, preservando tipos de datos y reduciendo el consumo de ancho de banda hasta en un 98%.

🛠️ Estructura del Repositorio

pypoldata/
├── src/
│   └── pypoldata/
│       ├── __init__.py        # Exportación de la API pública (load, list_datasets)
│       ├── core.py            # Motor de caché, descarga atómica y validación SHA-256
│       └── catalog.json       # Manifiesto central con metadatos y hashes de datasets
├── notebook/
│   └── dev.ipynb              # Notebooks de prueba y exploración
├── pyproject.toml             # Configuración del paquete y dependencias
├── README.md
└── LICENSE

📄 Licencia

Este proyecto está bajo la Licencia MIT. Cada dataset distribuido mediante PyPolData conserva y documenta su propia licencia de origen (generalmente Creative Commons o datos abiertos gubernamentales).

Metadata

Release files for pypoldata 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pypoldata 0.1.1
File Size Uploaded Provenance Actions
pypoldata-0.1.1.tar.gz 5.8 kB Without provenance Details for pypoldata-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pypoldata 0.1.1
File Interpreter ABI Platform Actions
pypoldata-0.1.1-py3-none-any.whl Python 3 none any Details for pypoldata-0.1.1-py3-none-any.whl

Total release size: 10.3 kB

Release files / pypoldata-0.1.1.tar.gz

Download URL pypoldata-0.1.1.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5af926f8a33bb50df581c2c58c886ad2c11d30fac51e77b27256dff57ddc571e
BLAKE2b-256 checksum
How to use checksums
d77ba0273a46cd5963e7868cec4a007f8fca0c847b7195155d4469d3060c1d4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / pypoldata-0.1.1-py3-none-any.whl

Download URL pypoldata-0.1.1-py3-none-any.whl
Size 4.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
978a39eeb67a93e696fa4579f0364d06730cb8f56f4234b9cc295984420d2be7
BLAKE2b-256 checksum
How to use checksums
d285e90d073b85cb4adcfff9cb23647c8cc68d226e5d5ff0e37470c13b161a2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Security for pypoldata 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page