Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
elsatch opened this issue Apr 4, 2022 · 11 comments

Comments

@elsatch
Copy link

elsatch commented Apr 4, 2022

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.
@elsatch
Copy link
Author

elsatch commented Apr 4, 2022

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.

@PastorJordi
Copy link

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!

@dieghernan
Copy link

dieghernan commented Apr 5, 2022

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:

#14 (comment)

@elsatch
Copy link
Author

elsatch commented Apr 5, 2022

@PastorJordi ¿ese cálculo está hecho con los datos reales? Si tenemos 99.9985% de datos del CIF correctos es buena señal.

@Rsilnav
Copy link

Rsilnav commented Apr 5, 2022

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
Copy link

@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)

@elsatch
Copy link
Author

elsatch commented Apr 5, 2022

@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
Copy link

Rsilnav commented Apr 5, 2022

@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

@elsatch
Copy link
Author

elsatch commented Apr 5, 2022

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.

@elsatch
Copy link
Author

elsatch commented Apr 5, 2022

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.

@dieghernan
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants