Este repositorio de datos abiertos contiene las bases de datos y el código necesario para replicar los resultados presentados en el reporte “Riesgos de eficiencia y corrupción en las contrataciones públicas en México”. Este reporte tiene como objetivo evaluar el desempeño, tanto en el nivel de eficiencia, como en la mitigación de corrupción, de la unidades compradoras que forman parte del sistema de compras públicas en México. Por su naturaleza, todos los documentos incluidos en el repositorio pueden ser utilizados y distribuidos libremente, sujeto a que declaren la autoría correspondiente.
Dentro del repositorio se encuentran tres apartados:
- notebooks: Todos los scripts necesarios para limpiar, procesar y analizar las bases de datos
- scraper: Documentación metodológica de cómo se llevó a cabo el web scraping de los procedimientos publicados en Compranet (https://compranet.funcionpublica.gob.mx/web/login.html)
- Datos procesados: Conjunto de bases de datos que se utilizaron para la obtención de resultados
Por un lado, los apartados uno y dos se componen completamente de código almacenado en la plataforma GitHub. Esta plataforma permite descargar o clonar todo el código en tu computadora, subir o crear nuevos archivos, proponer mejoras o correcciones al proceso, entre otros. Por otro lado, el conjunto de datos procesados se conservan en un servicio de almacenamiento en la nube provisto por Amazon.
Actualmente, un repositorio abierto es la mejor herramienta para publicar los resultados de un proyecto de esta índole debido a los siguientes beneficios:
Replicabilidad: Cualquier persona tienen acceso a todos los documentos que fueron utilizados para el proyecto, esto asegura máxima transparencia en la obtención de resultados
Cooperación: Github es una comunidad de programadores, en donde más de 20 millones de usuarios participan activamente ayudándose unos a otros. De esta forma, el código está expuesto a ser mejorado por cualquier persona de la comunidad, fomentando la colaboración y la transmisión de conocimiento entre usuarios
Fácil Acceso: Toda persona en cualquier parte del mundo puede acceder a los archivos en el repositorio. Por lo tanto, podrá ser empleado para fines de investigación por todos aquellos interesados en analizar el proceso de contrataciones públicas en México
Disponibilidad: La información está disponible en cualquier momento y en cualquier lugar, sin riesgo a que exista pérdida de información y que ya no pueda ser recuperada
Esta serie de beneficios permite expandir el alcance del proyecto a prácticamente todo el mundo, lo cual genera beneficios en materia de rendición de cuentas y transparencia en los procesos de contrataciones públicas en México. Asimismo, es un primer paso para impulsar el análisis continuo de estos procesos, elemento esencial para mitigar los riesgos de corrupción en el uso del presupuesto público.
El análisis de este proyecto se realizó con python, para ejecutar el código de este repositorio se recomienda instalar miniconda.
Una vez instalado, es recomendable crear un ambiente nuevo de python 3.6.
$ conda create -n compranet python=3.6
Ahora es necesario activar el ambiente:
$ conda activate compranet
Para finalmente instalar las dependencias (la bandera --editable te permite hacer cambios al vuelo, p.ej. editar features):
$ pip install --editable .
Las dependencias que instalará el script están enlistadas en setup.py; incluyen: dask para cómputo paralelizable, numpy y pandas para manejo de dataframes, matplotlib para gráficas, entre otros.
Prueba tu instalación corriendo las pruebas unitarias (ver siguiente sección Tests) y ejecutando Jupyter Notebook con el comando jupyter notebook
. Este último comando abrirá en el navegador el ambiente Jupyter donde podrás encontrar las notebooks que tienen el proceso interactivo de ingeniería de datos y generación de indicadores (ver sección v2.0).
El proyecto incluye un set de pruebas unitarias que se pueden correr con pytest
.
- python 3+
- libsnappy
Para calcular los features de cada concepto se requieren las siguiente tablas:
- Tabla de Procedimientos y Contrataciones 2012-2017 (En formato parquet)
- Tabla de Participantes 2010 - 2017 (En formato parquet)
- Datos del scraper (raw)
- Tabla limpia del scraper
- Tabla de proveedores sancionados
- Tabla de RFC fantasma
- Relación de montos máximos por tipo de contratación
- Tabla con los nombres de las unidades compradoras
- Directorio de unidades compradoras
- Códigos repetidos en la tabla de procedimientos
Para generar los features debes de correr el código que está en la notebook generacion_features.ipynb. Es necesario tener los datos procesados y ajustar las rutas dentro de la notebook.
Cuando se tengan los features calculados puedes usar el script crear_score_cards.py que está en la carpeta de scripts para generar los archivos pdf con las score cards, de igual manera tienes que ajustar las rutas de los datos procesados y features.
La versión 2.0 integra nuevas fuentes y se enfoca en datos de 2018 y 2019.
Toda la documentación del proceso, así como sus fuentes se encuentran documentadas en la notebook IRC_v2.ipynb.