Giter Site home page Giter Site logo

subvenciones's Introduction

Subvenciones

- Read in English -

Un reto con la Base de Datos Nacional de Subvenciones (BDNS).

GitHub https://github.com/JaimeObregon/subvenciones
Discord https://discord.gg/r2ytSa782D
Idea inicial https://twitter.com/JaimeObregon/status/1507693311422877697 (hilo)

El punto de partida

El Ministerio de Hacienda y Función Pública de España, a través de la Intervención General de la Administración del Estado, opera el Sistema Nacional de Publicidad de Subvenciones y Ayudas Públicas. Se trata, telegráficamente, de un portal web que recoge las convocatorias y concesiones de subvenciones públicas.

Portada del portal oficial

Este portal es una iniciativa en favor de la transparencia, pero tiene notables limitaciones.

El problema

El portal oficial proporciona una interfaz cutre de acceso a unos datos que, sin embargo, son de alto valor para la transparencia:

  1. La búsqueda es rudimentaria, con una experiencia de usuario mejorable. El portal aparentemente no permite usos simples tales como, por ejemplo, reunir y explorar la totalidad de las subvenciones concedidas a un beneficiario dado. Y la ergonomía del sistema es pobre, con un interfaz de usuario tedioso, enlaces que caducan y que por lo tanto no se pueden guardar ni compartir…

  2. La consulta de los datos es muy lenta. La mera carga de una página arbitraria de concesiones puede suponer esperar más de dos minutos. Esto dinamita el acceso de la ciudadanía a los datos públicos, pues en la práctica la consulta es tan lenta que se hace imposible. El ciudadano tira la toalla.

  3. No se pueden descargar los datos. Se pueden hacer descargas parciales, pero el portal no proporciona un mecanismo para la descarga de la totalidad del conjunto de datos. Esto impide una exploración offline del conjunto de datos y la aplicación de métodos avanzados de análisis.

El reto

¿Podemos, como sociedad civil, hacerlo mejor? ¿Podemos, como país, dotarnos de un instrumento mejor para el acceso y la publicidad de estos datos públicos?

El reto consiste en arramplar con todos los datos del portal oficial y construir una herramienta alternativa para explorarlos de forma útil, eficaz y creativa.

Y hacerlo de forma cooperativa, reuniendo esfuerzos y capacidades en torno a un proyecto colaborativo de software libre y código abierto al que todo aquel que lo desee puede asomarse y contribuir.

Cómo contribuir

[WIP]

  • Si eres un programador

  • Si eres un especialista en ayudas públicas

  • Si eres un diseñador

  • Si eres un trabajador de la Administración Pública, como por ejemplo un interventor, puedes contarnos cómo …

  • Si eres un periodista o investigador

  • Si eres un especialista en protección de datos

  • Si eres un abogado

  • Si eres otra cosa, ¡adelante! Echa un vistazo, observa y participa como desees.

Próximos pasos

[WIP]

  1. Terminar esta introducción.

  2. Organizar alemanamente los siguientes pasos.

  3. El repositorio puede sacarse del GitHub de JaimeObregon y moverse a otro más neutro, para que el proyecto no esté asociado al nombre de nadie en particular.

Marco legal

[WIP]

Participantes

¡Desentierra tu hacha, participa y añade tu nombre de guerra! 😄

  • Jaime Gómez Obregón (@JaimeObregon), scraping de los datos y propuesta inicial.
  • JuanMa Cuevas (@juanmacuevas), programador python & android. hacktivista aficionado.
  • Yago F. (@yaguetoo), programador Python y Java.
  • Pedro J. Molina (@pjmolina), programador TypeScript, Docker y dotNet.
  • Álvaro Díaz. (@Paquito86), Ingeniero DevOps Junior.
  • José Ordaz. (@JoseOrdaz), Junior FrontEnd Developer.

subvenciones's People

Contributors

jaimeobregon avatar joseordaz avatar paquito86 avatar pjmolina avatar yagueto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

subvenciones's Issues

Encabezados de los archivos

Buenas, abro issue para hacer seguimiento de los encabezados de los archivos (relacionado con #5). Según lo que se ha compartido en Discord parece ser que se pueden definir como:

Encabezados del fichero convocatorias.csv

nombres_columnas = [
  "IDConv", #0
  "id", #1
  "mrr", #2
  "convocanteN1", #3
  "convocanteN2", #4
  "convocanteN3", #5
  "fechareg", #6
  "titulo", #7
  "bbreguladoras", #8 - nombre tomado de los ficheros de jurídicas
  "tituloleng", #9
  "verConcesiones", #10 - valores nulos
  "dummy1", #11 - valor 350078 fijo
  "dummy2"  #12 - valor igual a IDConv +1
]

etiquetas_columnas = [
  "IDConv",
  "Código BDNS",
  "MRR",
  "Administración",
  "Departamento",
  "Órgano",
  "Fecha de registro",
  "Título de la convocatoria",
  "URL de las BBRR",
  "Título cooficial",
  "Ver concesiones",
  "dummy1",
  "dummy2",
]

# Eliminamos los tres últimos elementos de la lista de nombres_columnas
# Son columnas vacias o con datos que no aportan nada
columnas_utiles = nombres_columnas[: -3]

Encabezados de los ficheros jurídicas_1.csv y juridicas_2.csv

nombres_columnas = [
  "ID", #0
  "IDConv", #1
  "convocanteN1", #2
  "convocanteN2", #3
  "convocanteN3", #4
  "convocatoria", #5
  "bbreguladoras", #6
  "programa", #7
  "fechaconc", #8
  "beneficiario", #9
  "importe", #10
  "instrumento", #11
  "ayudaequiv", #12
  "detalles", #13
  "proyecto", #14
  "sancion", #15
  "numcov" #16

]
etiquetas_columnas = [
  "ID",
  "IDConvocatoria",
  "Administración",
  "Departamento",
  "Órgano",
  "Convocatoria",
  "URL de las BBRR",
  "Aplicación presupuestaria",
  "Fecha de concesión",
  "Beneficiario",
  "Importe",
  "Instrumento",
  "Ayuda Equivalente",
  "Detalles",
  "proyecto",
  "sancion",
  "numcov"
]

Columnas en `convocatoria.csv`

Anotaciones sobre dos columnas de concesiones.csv:

  • La columna 10 del archivo son todo valores nulos, propondría borrarla para ahorrar espacio.
>>> df['10'].isna().all()
True
  • La columna 12 es solo un contador, no creo que tenga sentido almacenarla
>>> (df['12'].diff()[1:]==1).all()
True

Datos cargados como sigue:

import pandas as pd
df = pd.read_csv("files/convocatorias.csv", header=None)

EL CIF de los beneficiarios está incluido en la misma columna que la descripción de los beneficiarios

En los ficheros jurídicas_1.csv y juridicas_2.csv, la columna 9 (beneficiarios) incluye el CIF y la descripción del beneficiario en el mismo campo. De cara a simplificar el tratamiento de datos, sería beneficioso disponer del CIF y la descripción del beneficiario en columnas separadas.

Ejemplo de datos

beneficiario
G16276230 ASOC. DESARROLLO INTEGRAL DE ZARZUELA
P4309900A NOU DE GAIA LA AJUNTAMENT

Resultado esperado

cif_beneficiario beneficiario
G16276230 ASOC. DESARROLLO INTEGRAL DE ZARZUELA
P4309900A NOU DE GAIA LA AJUNTAMENT

Adicionalmente sería necesario:

  • Verificar que los CIF de los beneficiarios son correctos
  • Unificar el formato de los CIF
  • Eliminar los espacios en blanco del campo CIF
  • Eliminar espacios sobrantes delante y detrás de la descripción.

Es necesario normalizar los datos de los convocantesN1, N2 y N3

En los primeros análisis del volcado de la base de datos de convocatorias, se ha detectado que los campos de los convocantes, no están normalizados. Podemos encontrar un primer ejemplo, en el análisis de @dacamposol: análisis fichero convocatorias

En esta primera exploración, se eliminan las preposiciones de los datos disponibles consiguiendo resultados más homogéneos. Una limitación de este sistema, es que al final, necesitaremos la cadena original para mostrarla en los resultados de la búsqueda.

Por poner un ejemplo, "Ayuntamiento del Puerto de Santa Maria" y "Ayuntamiento Puerto de Santa Maria" parecen ser el mismo convocante, pero al tener nombre distinto no aparecen agrupados.

En resumidas, cuentas tenemos que encontrar la forma de generar un listado de entidades consolidado y robusto, que agrupe a los organismos convocantes. ¿Cómo podemos conseguirlo?

Hay varios registros con el mismo índice en el fichero juridicas_1.csv.gz

He estado revisando los datos del fichero juridicas_1.csv.gz y me he encontrado con registros distintos que comparten el mismo ID.

Por ejemplo, para el ID 58300439, encontramos los siguientes registros:

ID IDConv convocanteN1 convocanteN2 convocanteN3 convocatoria bbreguladoras programa fechaconc beneficiario importe instrumento ayudaequiv detalles proyecto sancion numcov cif_beneficiario
58300439 720181 COMUNIDAD DE MADRID CONSEJERÍA DE FAMILIA, JUVENTUD Y POLÍTICA SOCIAL NaN SUBV.A E.S.F.L PROGRAMAS INTERES GENERAL FINES... http://www.bocm.es/boletin/CM_Orden_BOCM/2020/... 2021-. 2021-01-21 FEDERACION MUJERES PROGRESISTAS 31436.27 SUBVENCIÓN Y ENTREGA DINERARIA SIN CONTRAPREST... 31436.27 0 518621 10413793 7947114 G78764966
58300439 720181 COMUNIDAD DE MADRID CONSEJERÍA DE FAMILIA, JUVENTUD Y POLÍTICA SOCIAL NaN SUBV.A E.S.F.L PROGRAMAS INTERES GENERAL FINES... http://www.bocm.es/boletin/CM_Orden_BOCM/2020/... 2021-. 2021-01-21 FEDERACION MUJERES PROGRESISTAS 31436.27 SUBVENCIÓN Y ENTREGA DINERARIA SIN CONTRAPREST... 31436.27 0 518621 10435022 7968285 G78764966

A primera vista parecen la misma subvención, con valores diferentes para los campos numcov y sanción (que hasta donde se, son campos ocultos). Son las dos últimas columnas del csv.

En total hay 15894 registros con índice duplicado. Sería necesario averiguar para qué sirven estas dos últimas columnas para decidir que se hace con estos datos.

P.D El campo cif_beneficiario no aparecen en el dataset original y se ha añadido a partir de la columna beneficiario.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.