GithubHelp home page GithubHelp logo

ucd-dnp / leila Goto Github PK

View Code? Open in Web Editor NEW
59.0 15.0 21.0 30.43 MB

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

Python 34.75% HTML 19.99% Makefile 0.22% Batchfile 0.26% CSS 0.27% Jupyter Notebook 44.51%
data-science data-quality report-generator eda exploratory-data-analysis python espanol ucd

leila's People

Contributors

davidinsuasty avatar jairoruizsaenz avatar pablomonhel avatar ucd-dnp 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

Watchers

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

leila's Issues

Optimización - cálculos de tipos específicos

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

Flexibilizar requerimientos

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!

Optimización de cálculo de tipos

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

Problemas al instalar en una plataforma con TensorFlow

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

Comentar scripts de forma completa para que queden claros los pasos

Duplicados de columnas - tamaño límite

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"

Instalar leila a través de Conda

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

Problema con generar reportes para datasets grandes

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

Mejorar tiempos de ejecución en cálculo de duplicados de columnas

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

Reporte - gráficas para cada variable

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

Reporte - análisis por variable

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

Reporte - personalización

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

Indicador de características mínimas de calidad

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

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.