subvenciones
subvenciones copied to clipboard
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.
En Python, la separación de la columna puede realizarse utilizando la librería pandas de la siguiente forma:
df[['cif_beneficiario','beneficiario']] = df['beneficiario'].str.split(" ", n=1, expand=True)
Para la validación del CIF existe la librería stdnum que ofrece las siguientes funciones:
- stdnum.es.nif.compact(number)
Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.
- stdnum.es.nif.is_valid(number)
Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.
Habría que ver cómo integrarlo para que se ejecutaran estas funciones en todos los elementos de la nueva columna del CIF.
Habría que ver cómo integrarlo para que se ejecutaran estas funciones en todos los elementos de la nueva columna del CIF.
puedes aplicar funciones con el método .apply() de dataframes o series.
por ejemplo:
from stdnum.es import nif
df.cif_beneficiario.apply(nif.compact).apply(nif.is_valid).mean()
>>> 0.9999847783731125
Saludos!
~Leyendo sobre la validación de CIFs, las dos primeras cifras después de la letra inicial indican la provincia de la empresa. Interesante…~
~https://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal~
EDITADO
@elsatch ha estado haciendo trabajo de investigación en el BOE y la identificación por provincias dejó de emplearse en 2008:
https://github.com/JaimeObregon/subvenciones/issues/14#issuecomment-1088985304
@PastorJordi ¿ese cálculo está hecho con los datos reales? Si tenemos 99.9985% de datos del CIF correctos es buena señal.
No creo que tenga mucha utilidad, pero aquí dejo los CIFs incorrectos por si fuera necesario comprobarlos:
juridicas_1.csv
['F19774357', 'B01815840', 'A09853068', 'A05244224', 'A3044046B', 'A06006722', 'A27005201', 'P4361153A', 'A03600674', 'B34361854', 'J00302274', 'A00106342', 'A50565850', 'A33214225', 'A08664693', 'A11711501', 'P00880949', 'A07620922', 'A10520891', 'A0013588F', 'A03998956', 'P14514512', 'U05970144']
juridicas_2.csv
['D02014002', 'J00302274', 'D02014006', 'A33214225', 'P00880949', 'D02014005', 'A0013588F', 'E27118373', 'D02014004', 'A3044046B', 'U05970144', 'A27005201']
@PastorJordi ¿ese cálculo está hecho con los datos reales? Si tenemos 99.9985% de datos del CIF correctos es buena señal.
@elsatch Sí, son datos reales ( donde df proviene de concatenar juridicas_1 con juridicas_2)
@Rsilnav buen aporte!
Quizás añadiendo la descripción del beneficiario se podría intentar localizar el CIF correcto, por si hubiera habido un error de transcripción en los datos.
@Rsilnav buen aporte!
Quizás añadiendo la descripción del beneficiario se podría intentar localizar el CIF correcto, por si hubiera habido un error de transcripción en los datos.
A su servicio 😉
Tienen pinta de ser contraprestaciones a particulares extranjeros con DNI extranjero, por eso no son detectados como válidos. (Excepto la "cas" de Cantabria - eso no tiene perdón)
cif_beneficiario | beneficiario |
---|---|
A03600674 | RODAS VALLADARES, MARLON ALEXIS |
A09853068 | KINGSLEY |
P14514512 | ARACELI BLESSING |
A11711501 | REBECCA |
P4361153A | MARIFE |
A03998956 | SANDRA CAROLINA |
A33214225 | OCHA - OFICINA DEL COORDINADOR DE ASUNTOS HUMA... |
P00880949 | ZALOZBA MALINC, ALES CIGALE S.P. |
U05970144 | SINAN KILIC - ALEF PUBLISHING |
A00106342 | MISAEL DE JESUS |
A05244224 | ANA RAQUEL |
A06006722 | HAPPY |
A07620922 | DORIS |
A08664693 | MARIAN |
B01815840 | FLOR DE AMERICA |
A0013588F | CASAL CATALÀ DE VICTÒRIA INC. |
A27005201 | BANCO INTERAMERICANO DE DESARROLLO |
F19774357 | CLAUDIA FERNANDA |
A10520891 | MOHAMED |
A50565850 | DANIELS, JOAN UCHE |
A3044046B | CLAD CENTRO LATINOAMERICANO DE ADMINISTRACIÓN ... |
J00302274 | CENTRO RIOJANO VENEZOLANO |
B34361854 | TEYMOORIAN, NILOOFAR |
E27118373 | FRIENDS OF HAITÍ IN NEW YORK |
D02014002 | CASA DE CANTABRIA EN BUENOS AIRES |
D02014005 | CASA DE CANTABRIA EN CAMAGÜEY |
D02014004 | CASA DE CANTABRIA EN ROSARIO |
D02014006 | CAS DE CANTABRIA EN LA HABANA |
Después de hacerme un minimaster CIFs por el BOE, hay algunas de estos de estos resultados que me chirrían muchísimo.
En teoría las entidades extranjeras deberían comenzar por la letra N, pero no hay ninguna N aquí. Las D son sociedades comanditarias o en comandita (pero claro, a saber cómo registras una Casa de comunidad autónoma en otro país!)
Que el Banco Interamericano de Desarrollo tenga una A en plan S.A es raro también, sobre todo cuando al buscarlo en Google aparece asociado a un NIF correcto: N4006462H
Respecto al resto de resultados con nombres parciales de personas, pueden ser resultado del anonimizador de @JaimeObregon, así que con tenerlos localizados, creo que es suficiente.
Y hablando de los BOE, me he puesto a escribir una función para calcular las provincias a partir del CIF pero parece que está opción solo es válida para entidades creadas antes del 1 de Julio de 2008. De momento descartaría esta opción @dieghernan para no meter más ruido. Más info, por aquí: https://github.com/elsatch/subvenciones/blob/main/notebooks/informacion-cif.ipynb
P.D En algún momento habrá que volcar toda esta información a la wiki o a donde corresponda.
Buenas!
Por aportar, he estado programando un validador de CIFs para el paquete de R:
https://github.com/dadosdelaplace/Rsubvenciones_spain/blob/98640a08dfb7ddaa8ca758b90d21d1404927192b/R/helpers.R#L116-L170
El programa capta todos los CIFs ya identificados y ademas cuatro códigos adicionales. Podría ser error mio, pero en cualquier caso lo comparto (con cautela):
cif_beneficiario | nombre_beneficiario |
---|---|
A0304203C | COMITÉ INTERNACIONAL DE LA CRUZ ROJA NO UTILIZAR (USAR 47010) |
A9999991D | PNUD - PROGRAMA DE LAS NACIONES UNI |
A3232323J | ASOCIACIÓN LATINOAMERICANA DE ARCHIVOS |
A3215870A | OEA - ORGANIZACIÓN DE ESTADOS AMERI |
cif_beneficiario beneficiario A03600674 RODAS VALLADARES, MARLON ALEXIS A09853068 KINGSLEY P14514512 ARACELI BLESSING A11711501 REBECCA P4361153A MARIFE A03998956 SANDRA CAROLINA A33214225 OCHA - OFICINA DEL COORDINADOR DE ASUNTOS HUMA... P00880949 ZALOZBA MALINC, ALES CIGALE S.P. U05970144 SINAN KILIC - ALEF PUBLISHING A00106342 MISAEL DE JESUS A05244224 ANA RAQUEL A06006722 HAPPY A07620922 DORIS A08664693 MARIAN B01815840 FLOR DE AMERICA A0013588F CASAL CATALÀ DE VICTÒRIA INC. A27005201 BANCO INTERAMERICANO DE DESARROLLO F19774357 CLAUDIA FERNANDA A10520891 MOHAMED A50565850 DANIELS, JOAN UCHE A3044046B CLAD CENTRO LATINOAMERICANO DE ADMINISTRACIÓN ... J00302274 CENTRO RIOJANO VENEZOLANO B34361854 TEYMOORIAN, NILOOFAR E27118373 FRIENDS OF HAITÍ IN NEW YORK D02014002 CASA DE CANTABRIA EN BUENOS AIRES D02014005 CASA DE CANTABRIA EN CAMAGÜEY D02014004 CASA DE CANTABRIA EN ROSARIO D02014006 CAS DE CANTABRIA EN LA HABANA