ucd-dnp / leila Goto Github PK
View Code? Open in Web Editor NEWLibrería para la evaluación de calidad de datos, e interacción con el portal de datos.gov.co
Home Page: https://ucd-dnp.github.io/leila/
License: Other
Librería para la evaluación de calidad de datos, e interacción con el portal de datos.gov.co
Home Page: https://ucd-dnp.github.io/leila/
License: Other
Adaptar el código en las funciones "CantidadDuplicados", "EmparejamientoDuplicados", "DescripcionCategoricas" para que el tipo específico de cada columna no se calcule al correr esa función, sino se utilice la lista de tipos creada en init
Actualmente los requerimientos o dependencias de la librería son del tipo "==" (versión exacta), por lo que se pueden presentar conflictos innecesarios con otras versiones de las dependencias cuando se instala LEILA.
Por favor prueben con flexibilizar esto, cambiando el "==" por ">=" (versión mayor o igual a ). Esto permitirá reducir conflictos a medida que otras librerías van sacando nuevas versiones.
Por supuesto, hay que probar que con este cambio (y utilizando como resultado versiones más recientes de algunas librerías) el desempeño de LEILA no se vea afectado.
Gracias!
Optimizar los tiempos de ejecución de la función "EmparejamientoDuplicados", con la cual se pueden ver las columnas y filas que son exactamente las mismas
Reescribir código en las funciones "VarianzaEnPercentil", "DescripcionCategoricas" para que no se calculen los tipos generales con "dtypes" y se utilice la lista de tipos calculada en init
Reescribir el código en la función "DescripcionCategoricas" para que no se copie el conjunto de datos de entrada
Diseñar, redactar y publicar una guía de colaboraciones y adiciones DE la librería LEILA para dar lineamientos a la comunidad que faciliten la interacción y colaboración.
Estimados, reciban un cordial saludo. El problema de las versiones en la instalación (pip install leila) funciona en un entorno local específico para utilizar y probar la librería, sin embargo en un entorno de desarrollo en la nube y ya para trabajar, por ejemplo con Tensor Flow V2, genera problemas y finalmente no se puede usar. Adjunto la respuesta del servidor (Ubuntu server 64 bits) al intentar instalar Leila:
Collecting leila
Downloading https://files.pythonhosted.org/packages/dc/78/34233a4c6117cc44bca8b774e3785be99144e4cd70fa4d741e6acf8fe437/leila-0.1-py3-none-any.whl
Requirement already satisfied: chardet==3.0.4 in /usr/local/lib/python3.6/dist-packages (from leila) (3.0.4)
Collecting pytz==2020.1
Downloading https://files.pythonhosted.org/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl (510kB)
|████████████████████████████████| 512kB 5.6MB/s
Collecting idna==2.9
Downloading https://files.pythonhosted.org/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl (58kB)
|████████████████████████████████| 61kB 5.5MB/s
Requirement already satisfied: MarkupSafe==1.1.1 in /usr/local/lib/python3.6/dist-packages (from leila) (1.1.1)
Collecting six==1.14.0
Downloading https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl
Collecting pandas==1.0.3
Downloading https://files.pythonhosted.org/packages/bb/71/8f53bdbcbc67c912b888b40def255767e475402e9df64050019149b1a943/pandas-1.0.3-cp36-cp36m-manylinux1_x86_64.whl (10.0MB)
|████████████████████████████████| 10.0MB 7.6MB/s
Requirement already satisfied: python-dateutil==2.8.1 in /usr/local/lib/python3.6/dist-packages (from leila) (2.8.1)
Requirement already satisfied: requests==2.23.0 in /usr/local/lib/python3.6/dist-packages (from leila) (2.23.0)
Requirement already satisfied: sodapy==2.1.0 in /usr/local/lib/python3.6/dist-packages (from leila) (2.1.0)
Requirement already satisfied: numpy>=1.18.4 in /usr/local/lib/python3.6/dist-packages (from leila) (1.18.5)
Collecting xlrd==1.2.0
Downloading https://files.pythonhosted.org/packages/b0/16/63576a1a001752e34bf8ea62e367997530dc553b689356b9879339cf45a4/xlrd-1.2.0-py2.py3-none-any.whl (103kB)
|████████████████████████████████| 112kB 44.4MB/s
Collecting phik==0.10.0
Downloading https://files.pythonhosted.org/packages/01/5a/7ef1c04ce62cd72f900c06298dc2385840550d5c653a0dbc19109a5477e6/phik-0.10.0-py3-none-any.whl (599kB)
|████████████████████████████████| 604kB 40.1MB/s
Collecting certifi==2020.4.5.1
Downloading https://files.pythonhosted.org/packages/57/2b/26e37a4b034800c960a00c4e1b3d9ca5d7014e983e6e729e33ea2f36426c/certifi-2020.4.5.1-py2.py3-none-any.whl (157kB)
|████████████████████████████████| 163kB 49.1MB/s
Collecting scipy==1.5.1
Downloading https://files.pythonhosted.org/packages/ab/f9/6eeed6d5cd8dd435bbf105d10d778c2d76de1a5838fdbc315a59fb7fad64/scipy-1.5.1-cp36-cp36m-manylinux1_x86_64.whl (25.9MB)
|████████████████████████████████| 25.9MB 68.5MB/s
Requirement already satisfied: Jinja2==2.11.2 in /usr/local/lib/python3.6/dist-packages (from leila) (2.11.2)
Collecting urllib3==1.25.9
Downloading https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl (126kB)
|████████████████████████████████| 133kB 49.8MB/s
Requirement already satisfied: joblib>=0.14.1 in /usr/local/lib/python3.6/dist-packages (from phik==0.10.0->leila) (0.16.0)
Requirement already satisfied: matplotlib>=2.2.3 in /usr/local/lib/python3.6/dist-packages (from phik==0.10.0->leila) (3.2.2)
Requirement already satisfied: numba>=0.38.1 in /usr/local/lib/python3.6/dist-packages (from phik==0.10.0->leila) (0.48.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=2.2.3->phik==0.10.0->leila) (1.2.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=2.2.3->phik==0.10.0->leila) (2.4.7)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=2.2.3->phik==0.10.0->leila) (0.10.0)
Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from numba>=0.38.1->phik==0.10.0->leila) (50.3.0)
Requirement already satisfied: llvmlite<0.32.0,>=0.31.0dev0 in /usr/local/lib/python3.6/dist-packages (from numba>=0.38.1->phik==0.10.0->leila) (0.31.0)
ERROR: tensorflow 2.3.0 has requirement scipy==1.4.1, but you'll have scipy 1.5.1 which is incompatible.
ERROR: nbclient 0.5.0 has requirement jupyter-client>=6.1.5, but you'll have jupyter-client 5.3.5 which is incompatible.
ERROR: kaggle 1.5.8 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25.9 which is incompatible.
ERROR: PipeServer-colab 1.0.0 has requirement six~=1.15.0, but you'll have six 1.14.0 which is incompatible.
ERROR: fbprophet 0.7.1 has requirement pandas>=1.0.4, but you'll have pandas 1.0.3 which is incompatible.
ERROR: datascience 0.10.6 has requirement folium==0.2.1, but you'll have folium 0.8.3 which is incompatible.
ERROR: albumentations 0.1.12 has requirement imgaug<0.2.7,>=0.2.5, but you'll have imgaug 0.2.9 which is incompatible.
Installing collected packages: pytz, idna, six, pandas, xlrd, scipy, phik, certifi, urllib3, leila
Found existing installation: pytz 2018.9
Uninstalling pytz-2018.9:
Successfully uninstalled pytz-2018.9
Found existing installation: idna 2.10
Uninstalling idna-2.10:
Successfully uninstalled idna-2.10
Found existing installation: six 1.15.0
Uninstalling six-1.15.0:
Successfully uninstalled six-1.15.0
Found existing installation: pandas 1.0.5
Uninstalling pandas-1.0.5:
Successfully uninstalled pandas-1.0.5
Found existing installation: xlrd 1.1.0
Uninstalling xlrd-1.1.0:
Successfully uninstalled xlrd-1.1.0
Found existing installation: scipy 1.4.1
Uninstalling scipy-1.4.1:
Successfully uninstalled scipy-1.4.1
Found existing installation: certifi 2020.6.20
Uninstalling certifi-2020.6.20:
Successfully uninstalled certifi-2020.6.20
Found existing installation: urllib3 1.24.3
Uninstalling urllib3-1.24.3:
Successfully uninstalled urllib3-1.24.3
Successfully installed certifi-2020.4.5.1 idna-2.9 leila-0.1 pandas-1.0.3 phik-0.10.0 pytz-2020.1 scipy-1.5.1 six-1.14.0 urllib3-1.25.9 xlrd-1.2.0
WARNING: The following packages were previously imported in this runtime:
[pandas,pytz,six]
You must restart the runtime in order to use newly installed versions.
Comentar scripts de forma completa para que queden claros los pasos
Reescribir código en la función "DescripcionNumericas" para que no se calcule el tipo general en español de las columnas, sino se utilice la lista con los tipos calculada en init
Reescribir el código en la función "DescripcionNumericas" para que no se copie el conjunto de datos de entrada
Incluir gráficas como correlaciones para analizar la relación de las variables de un conjunto de datos de manera visual
Reescribir el código en la función "EmparejamientoDuplicados" para que no se copie el conjunto de datos de entrada
Definir el tamaño límite de un conjunto de datos sobre el cual no utilizar la función "EmparejamientoDuplicados" para columnas y poner en documentación para que sea visto por usuarios. EL cálculo de duplicados por columnas es el más lento de toda la librería y no se recomienda para conjuntos de datos muy grandes por su demora en la ejecución.
Esto se revisará después de optimizar la función "EmparejamientoDuplicados"
Buen día
Sería posible que adicionaran la opción de instalar la librería utilizando conda?
por ejemplo con el comando
conda install -c conda-forge leila
Reescribir el código en la función "CorrelacionCategoricas" para que no se copie el conjunto de datos de entrada
Hola, gracias por la librería.
Cuando intento hacer un reporte de calidad de un dataset grande, se presentan muchos problemas. Solucioné lo del token, pero lograr evaluar la calidad de los datos (lo hice como prueba para ver los limites y si salía la evaluación de las filas) es, como esperaba, un proceso que toma mucho tiempo y consume muchos recursos (un poco más de 32 Gigas de RAM en su pico más alto, utilizó cerca de 9 núcleos de procesador y una GPU Radeon AMD RX 5700 XT al 20%. Envío el código utilizado.
api_id = 'rpmr-utcd'
token = 'xxxxxxxx'
RowLimit=1000000000
client = Socrata("www.datos.gov.co", app_token=token)
MetaData = client.get_metadata(api_id)
Data = client.get(api_id, limit=RowLimit)
DS = pd.DataFrame.from_records(Data)
Vars = list(DS.columns)
Types = DS.dtypes
generar_reporte(df = DS, titulo='Perfilamiento datos SECOP I - Colombia', archivo='perfilamiento.html')
La base de datos no tiene columnas numéricas
Traceback (most recent call last):
File "", line 12, in
generar_reporte(df = DS, titulo='Perfilamiento datos SECOP I - Colombia', archivo='perfilamiento.html')
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\leila\reporte.py", line 172, in generar_reporte
dataframe_duplic_colum = base.EmparejamientoDuplicados(col=True)
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\leila\calidad_datos.py", line 366, in EmparejamientoDuplicados
dupli = base.T.duplicated(keep=False)
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\frame.py", line 2711, in transpose
result = self._constructor(
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\frame.py", line 464, in init
mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\internals\construction.py", line 210, in init_ndarray
return create_block_manager_from_blocks(block_values, [columns, index])
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\internals\managers.py", line 1658, in create_block_manager_from_blocks
mgr._consolidate_inplace()
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\internals\managers.py", line 945, in _consolidate_inplace
self.blocks = tuple(_consolidate(self.blocks))
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\internals\managers.py", line 1886, in _consolidate
merged_blocks = _merge_blocks(
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\pandas\core\internals\blocks.py", line 3099, in _merge_blocks
new_values = np.vstack([b.values for b in blocks])
File "<array_function internals>", line 5, in vstack
File "C:\ProgramData\Anaconda3\envs\Leila\lib\site-packages\numpy\core\shape_base.py", line 283, in vstack
return _nx.concatenate(arrs, 0)
File "<array_function internals>", line 5, in concatenate
MemoryError: Unable to allocate 974. MiB for an array with shape (9816364, 13) and data type object
Reducir los tiempos de ejecución al calcular los duplicados de columnas, especialmente para conjuntos de datos muy grandes. Se estudiará agregar un parámetro para seleccionar algunas filas de las columnas al hacer la verificación de duplicados. Este número podrá ser cambiado por el usuario
Incluir gráficas en el reporte automático en la sección de cada variable
Se hará después de incluir la sección de análisis de cada variable sin gráficas
Incluir una sección para cada variable en el reporte automático con su propio análisis descriptivo y de calidad
No incluye gráficas
Adecuar la función "generar_reporte" para que se puedan ingresar los parámetros de las métricas que se desean calcular y mostrar únicamente los resultados escogidos en el reporte
Identificar los parámetros necesarios para crear un indicador con las características mínimas requeridas por un conjunto de datos para que sea trabajable
Escribir funciones que creen los parámetros de insumo del indicador
Crear el indicador
Elaboración de scripts para validar automáticamente si la instalación y cada uno de los módulos de las librerías funcionan correctamente
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.