Calidad datos

Este módulo se enfoca en analizar cualquier base de datos (dataframe) de interés para el usuario. Se tiene acceso a funciones de estadísticas descriptivas, cálculo de memoria, registros duplicados, faltantes y otras.

class calidad_datos.CalidadDatos(datos, castDatos=True, diccionarioCast=None, errores='ignore', formato_fecha='%d/%m/%Y', **kwargs)

Bases: object

Constructor por defecto de la clase leila.CalidadDatos. Esta clase se encarga de manejar todas las funciones asociadas a la medición de la calidad de los datos en una base de datos estructurada.

Soporta la lectura directa de archivos con extensión .xlsx y .csv, para otro tipo de formato (.xls, xlsm, xlsb, odf, ods y odt) se recomienda hacer la conversión al formato .csv.

Nota: Se recomienda cargar directamente los archivos con esta clase, en lugar de utilizar pandas.

Parámetros:
  • datos (str, pandas.DataFrame, leila.DatosGov) – Se acepta cualquier ruta o path a archivos tipo .xlsx o .csv (recomendado). Si desea pasar un DataFrame de pandas, LEILA soporta este tipo de entrada. LEILA también soporta como entrada objectos del tipo leila.DatosGov. Para este tipo de entrada LEILA tendrá en el futuro funcionalidades extendidas de calidad de datos con base a los metadatos del conjunto de datos descargado del portal datos.gov.co.
  • castDatos (bool, opcional) – Indica si se desean convertir las columnas al mejor tipo de datos para cada columna según la función convert_dtypes de Pandas. Por ejemplo si una columna es de tipo string, pero sus datos son en su mayoría números, se convierte a columna númerica. Valor por defecto: True.
  • diccionarioCast (dict , opcional) – Diccionario donde se especifican los tipos de datos a los que se desean convertir las columnas dentro del conjunto de datos. Por ejemplo, {“col1”: “booleano”, “edad”:”numerico”}, donde col1 y edad son columnas de la base de datos. Los valores a los que se pueden convertir son: [“string”, “numerico”, “booleano”, “fecha”, “categorico”]. Valor por defecto: None.
  • errores ({"ignore", "coerce", "raise"}, opcional) – Indica qué hacer con las columnas cuyo tipo no se puede cambiar al solicitado en diccionarioCast. Valor por defecto: «ignore».
  • formato_fecha (str, optional) – Formato string para el cast de las variables tipo fecha. Para más información sobre las opciones de strings, consulte: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior. Valor por defecto: «%d/%m/%Y».
  • **kwargs – Parámetros adicionales que se le pueden pasar a la función pandas.read_csv(). Para más información sobre estos parámetros, consulte: https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html.
CantidadDuplicados(eje=0, numero=False, numero_filas=30000)

Retorna el porcentaje/número de filas o columnas duplicadas (repetidas) en el dataframe. Ver ejemplo

Parámetros:
  • eje – (int) {1, 0} Valor por defecto: 0. Si el valor es 1 la validación se realiza por columnas. Si el valor es 0 la validación se realiza por filas.
  • numero – (bool) {True, False} Valor por defecto: False. Si el valor es False el resultado se expresa como un cociente, si el valor es True el valor se expresa como una cantidad de registros (número entero).
  • numero_filas – (int) Valor por defecto: 30000. Número de filas que tendrá cada columna cuando se verifiquen los duplicados por columna (cuando “eje = 1”). Se utiliza para agilizar el proceso de verificación de duplicados de columnas, el cual puede resultar extremadamente lento para un conjunto de datos con muchas filas.
Devuelve:

(int o float) Resultado de unicidad.

CorrelacionCategoricas(metodo='phik', limite=0.5, categoriasMaximas=30, variables=None)

Genera una matriz de correlación entre las variables de tipo categóricas. Ver ejemplo

Parámetros:
  • metodo (str, opcional) – Medida de correlación a utilizar. Por defecto phik.
  • limite (float, opcional) – (valor de 0 a 1) Límite de referencia, se utiliza para determinar si las variables posiblemente son de tipo categóricas y ser incluidas en el análisis. Si el número de valores únicos por columna es mayor al número de registros limite, se considera que la variable no es categórica. Por defecto 0.5.
  • categoriasMaximas (int, opcional) – (valor mayor o igual a 2), indica el máximo número de categorías de una variable para que sea incluida en el análisis. Por defecto 30.
  • variables ([type], opcional) – Lista de nombres de las columnas categóricas separados por comas. Permite escoger las columnas de interés dentro del conjunto de datos. Por defecto None.
Devuelve:

(pandas.DataFrame) Dataframe con las correlaciones de las columnas de tipo categóricas.

CorrelacionNumericas(metodo='pearson', variables=None)

Genera una matriz de correlación entre las variables de tipo numérico Ver ejemplo.

Parámetros:
  • metodo (str, opcional) – {“pearson”, “kendall”, “spearman”} Medida de correlación. Por defecto «pearson».
  • variables ([type], opcional) – Lista de nombres de las columnas númericas separados por comas. Permite seleccionar las columnas de interés. Por defecto None.
Devuelve:

(pandas.DataFrame) Dataframe con las correlaciones de las columnas de tipo numérico analizadas.

DescripcionCategoricas(limite=0.5, categoriasMaximas=30, incluirNumericos=True, variables=None)

Genera una tabla con los primeros 10 valores más frecuentes de las columnas categóricas del dataframe, además calcula su frecuencia y porcentaje dentro del total de observaciones. Incluye los valores faltantes. Ver ejemplo.

Parámetros:
  • limite (float, opcional) – Valor de 0 a 1. Se utiliza para determinar si las variables posiblemente son de tipo categóricas y ser incluidas en el análisis. Si el número de valores únicos por columna es mayor al número de registros limite, se considera que la variable no es categórica. Por defecto 0.5
  • categoriasMaximas (int, opcional) – Valor mayor a 1. Indica el máximo número de categorías de una variable para que sea incluida en el análisis. Por defecto 30.
  • incluirNumericos (bool, opcional) – Determina si se desea considerar las variables numéricas como categóricas e incluirlas en el análisis. Si el valor es True se incluyen las variables numéricas, solo si variables es igual a None. Por defecto True.
  • variables ([type], opcional) – Lista de nombres de las columnas separados por comas. Permite escoger las columnas de interés. Si variables es None, se considera todas las columnas del conjunto de datos. Por defecto es None.
Devuelve:

(pandas.DataFrame) Dataframe con las estadísticas descriptivas de las columnas identificadas de tipo categórica.

DescripcionNumericas(variables=None)

Calcula estadísticas descriptivas de cada columna numérica. Incluyen media, mediana, valores en distintos percentiles, desviación estándar, valores extremos y porcentaje de valores faltantes. Ver ejemplo

Parámetros:variables (list, opcional.) – Por defecto None. lista de nombres de las columnas númericas que se desea analizar. Si None, todas las columnas númericas son seleccionadas.
Devuelve:(pandas.DataFrame) Dataframe con las estadísticas descriptivas de las columnas númericas.
EmparejamientoDuplicados(col=False, limite_filas=30000)

Retorna las columnas o filas que presenten valores duplicados del dataframe. Ver ejemplo

Parámetros:
  • col – (bool) {True, False}, valor por defecto: False. Si el valor es True la validación se realiza por columnas, en caso contrario, la validación se hace por filas.
  • numero_filas – (int), valor por defecto: 30000. Número de filas que tendrá cada columna cuando se verifiquen los duplicados por columna (cuando eje=1). Se utiliza para agilizar el proceso de verificación de duplicados por columnas, el cual puede resultar extremadamente lento para un conjunto de datos con muchas filas.
Devuelve:

(Dataframe) Matriz que relaciona los índices de filas o nombre de columnas que presentan valores duplicados.

Memoria(col=False, unidad='Mb')

Calcula el tamaño del conjunto de datos en memoria (megabytes). Ver ejemplo

Parámetros:
  • col (bool, opcional) – Si False realiza el cálculo de memoria del Dataframe completo, si True realiza el cálculo de memoria por cada columna del Dataframe. Por defecto False.
  • unidad (str, opcional) – {«byte», «kb», «Mb», «Gb», «Tb»} Es la unidad de medida de memoria con la que se desea ver la memoria que ocupa en el computador del conjunto de datos. Por defecto «Mb».
Devuelve:

(float | pandas.Series) Si col = False retorna el valor de memoria ocupada por el conjunto de datos. Si col = True, retorna la memoria ocupada por cada columna del conjunto de datos.

Resumen(filas=True, columnas=True, colNumericas=True, colTexto=True, colBooleanas=True, colFecha=True, colOtro=True, filasRepetidas=True, columnasRepetidas=True, colFaltantes=True, colExtremos=True, memoriaTotal=True)

Retorna una tabla con información general el conjunto de datos. Incluye número de filas y columnas, número de columnas de tipo numéricas, de texto, booleanas, fecha y otros, número de filas y columnas no únicas, número de columnas con más de la mitad de las observaciones con datos faltantes, número de columnas con más del 10% de observaciones con datos extremos y el tamaño del conjunto de datos en memoria. Ver ejemplo

Parámetros:
  • filas (bool, opcional) – Indica si se incluye el cálculo de número de filas del conjunto de datos. Por defecto True.
  • columnas (bool, opcional) – Indica si se incluye el cálculo de número de columnas del conjunto de datos. Por defecto True.
  • colNumericas (bool, opcional) – Indica si se incluye el número de columnas de tipo numéricas. Por defecto True.
  • colTexto (bool, opcional) – Indica si se incluye el número de columnas de tipo texto.Por defecto True.
  • colBooleanas (bool, opcional) – Indica si se incluye el número de columnas de tipo booleana. Por defecto True.
  • colFecha (bool, opcional) – Indica si se incluye el número de columnas de tipo fecha. Por defecto True.
  • colOtro (bool, opcional) – Indica si se incluye el número de columnas de otro tipo diferente a los anteriores. Por defecto True.
  • filasRepetidas (bool, opcional) – Indica si se incluye el número de filas repetidas. Por defecto True.
  • columnasRepetidas (bool, opcional) – Indica si se incluye el número de columnas repetidas. Por defecto True.
  • colFaltantes (bool, opcional) – Indica si se incluye el número de columnas con más de la mitad de las observaciones con datos faltantes. Por defecto True.
  • colExtremos (bool, opcional) – Indica si se incluye el número de columnas con más del 10% de observaciones con datos extremos. Por defecto True.
  • memoriaTotal (bool, opcional) – Indica si se incluye el uso del tamaño del conjunto de datos en memoria.Por defecto True.
Devuelve:

(pandas.Series) Serie de pandas con las estadísticas descriptivas del conjunto de datos.

TipoColumnas(tipoGeneral=True, tipoGeneralPython=True, tipoEspecifico=True)

Retorna el tipo de dato de cada columna del dataframe. Ver ejemplo

Parámetros:
  • tipoGeneral – (bool) {True, False}, valor por defecto: True. Incluye el tipo general de cada columna. Los tipos son: numérico, texto, booleano, otro.
  • tipoGeneralPython – (bool) {True, False}, valor por defecto: True. Incluye el tipo general de cada columna dado por el método “pandas.dtypes” de Pandas
  • tipoEspecifico – (bool) {True, False}, valor por defecto: True. Incluye el porcentaje de los tres tipos más frecuentes de cada columna. Se aplica la función nativa “type” de Python para cada observación.
Devuelve:

Dataframe de pandas con los tipos de dato de cada columna.

ValoresExtremos(extremos='ambos', numero=False, **kwargs)

Calcula el porcentaje o cantidad de valores extremos (outliers) de cada columna numérica (las columnas con números en formato string se intentarán transformar a columnas numéricas).

Parámetros:
  • extremos (str, opcional.) – {“superior”, “inferior”, “ambos”}. Si el valor es inferior se tienen en cuenta los registros con valor menor al límite inferior calculado por la metodología de valor atípico por rango intercuartílico. Si el valor es superior se tienen en cuenta los registros con valor mayor al límite superior calculado por la metodología de valor atípico por rango intercuartílico. Si el valor es ambos se tienen en cuenta los registros con valor menor al límite inferior calculado por la metodología de valor atípico por rango intercuartílico, y también aquellos con valor mayor al límite superior calculado por la metodología de valor atípico por rango intercuartílico. Valor por defecto «ambos»
  • numero (bool, opcional.) – Si False el resultado se expresa como una proporcion (en decimales), si el valor es True el valor se expresa como una cantidad de registros (número entero). Valor por defecto False
Devuelve:

(pandas.Series) Serie de pandas con la cantidad/proporción de valores extremos (outliers) de cada columna.

ValoresFaltantes(numero=False)

Calcula el porcentaje/número de valores faltantes de cada columna del dataframe. Ver ejemplo

Parámetros:numero – (bool) {True, False} Valor por defecto: False. Si el valor es False el resultado se expresa como un cociente, si el valor es True el valor se expresa como una cantidad de registros (número entero).
Devuelve:Serie de pandas con la cantidad/cociente de valores faltantes de cada columna.
ValoresUnicos(faltantes=False)

Calcula la cantidad de valores únicos de cada columna del dataframe.

Parámetros:faltantes – (bool) {True, False}, Valor por defecto: False. Indica si desea tener en cuenta los valores faltantes en el conteo de valores únicos.
Devuelve:Serie de pandas con la cantidad de valores únicos de cada columna.
VarianzaEnPercentil(percentil_inferior=5, percentil_superior=95)

Retorna el nombre de las columnas numéricas cuyo percentil_inferior sea igual a su percentil_superior.

Parámetros:
  • percentil_inferior (int, opcional.) – Percentil inferior de referencia en la comparación. Valor por defecto 5.
  • percentil_superior (int, opcional) – Percentil superior de referencia en la comparación. Valor por defecto 95.
Devuelve:

(list) Lista de los nombres de las columnas cuyo percentil inferior es igual al percentil superior.

property base

Ejemplos


A continuación se presentan ejemplos de uso, el código y resultado esperado de estos. Los datos utilizados para los ejemplos corresponden a una muestra de los Casos positivos de COVID-19 en Colombia disponibles en el portal de Datos Abiertos de Colombia, se debe aclarar que los datos fueron modificados con el propósito de presentar el alcance de las diferentes funciones de la librería.

En caso que desee utilizar los datos utilizados en los ejemplos, puede descargarlos utilizando el siguiente link. Descargar datos (6.2 MB).


>>> # Se importar la clase CalidadDatos del módulo calidad_datos
>>> from leila.calidad_datos import CalidadDatos

>>> # Se crea un objeto de la clase CalidadDatos con los datos de interés
>>> ruta_covid = "dataset ejemplos.xlsx"
>>> datos_covid = CalidadDatos(ruta_covid)

Tabla de resumen

El método CalidadDatos.Resumen() calcula varias estadísticas que dan una primera impresión del conjunto de datos.

Estas métricas incluyen el número de filas y columnas; número de columnas de distintos tipos; número de filas y columnas repetidas (duplicadas); columnas con muchos datos faltantes o extremos; peso del conjunto de datos

>>> # Calcular la tabla de resumen con el método "Resumen"
>>> resumen = datos_covid.Resumen()

>>> # Visualizar la tabla de resumen
>>> resumen

Número de filas                                       65616
Número de columnas                                       25
Columnas numéricas                                        3
Columnas de texto                                        16
Columnas booleanas                                        0
Columnas de fecha                                         6
Otro tipo de columnas                                     0
Número de filas repetidas                                 1
Número de columnas repetidas                              2
Columnas con más de la mitad de datos faltantes           4
Columnas con más del 10% de datos como extremos           0
Uso de memoria del conjunto de datos en MB (aprox)       12
dtype: int32

Tipos de cada columna

El método CalidadDatos.TipoColumnas() calcula el tipo de cada columna de tres maneras diferentes.

La primera es el tipo general de la columna en español. Indica si el tipo es numérico, texto, fecha, booleano u otro.

La segunda muestra el tipo general según el método dtypes de Python.

La tercera manera muestra los tipos de cada celda de cada columna. Es decir, muestra la distribución de tipos de cada columna. El tipo que más aparece en esa columna se muestra en la variable “tipo_especifico_1” de la tabla de tipos y muestra el porcentaje. En caso de haber más de un tipo, se mostrará en las siguientes columnas “tipo_especifico_#”

El ejemplo abajo muestra cómo el es código para generar los resultados de los tipos con el método “TipoCOlumnas”. Los parámetros del método especifican qué tipo se quiere mostrar para las columnas (con las opciones True o False)

>>> tipos = datos_covid.TipoColumnas(tipoGeneral=True,
                                 tipoGeneralPython=True,
                                 tipoEspecifico=True)
>>> tipos
index tipo_general tipo_general_python tipo_especifico_1 tipo_especifico_2
ID de caso Texto string “str”: 100.0%  
Fecha de notificación Fecha datetime64[ns] “pandas._libs.tslibs.timestamps.Timestamp”: 10…  
Código DIVIPOLA Texto string “str”: 100.0%  
Ciudad de ubicación Texto string “str”: 100.0%  
Departamento o Distrito Texto string “str”: 100.0%  
Atención Texto string “str”: 99.71% “pandas._libs.missing.NAType”: 0.29%
Edad Numérico Int64 “int”: 100.0%  
Edad 2 Numérico Int64 “int”: 100.0%  
Edad meses Numérico Int64 “int”: 100.0%  
Sexo Texto string “str”: 100.0%  
Tipo Texto string “str”: 100.0%  
Estado Texto string “str”: 99.66% “pandas._libs.missing.NAType”: 0.34%
País de procedencia Texto string “pandas._libs.missing.NAType”: 98.58% “str”: 1.42%
Fecha de inicio de síntomas Texto string “str”: 100.0%  
Fecha de muerte Fecha datetime64[ns] “pandas._libs.tslibs.nattype.NaTType”: 95.38% “pandas._libs.tslibs.timestamps.Timestamp”: 4.62%
Fecha diagnostico Fecha datetime64[ns] “pandas._libs.tslibs.timestamps.Timestamp”: 98… “pandas._libs.tslibs.nattype.NaTType”: 1.59%
Fecha recuperado Fecha datetime64[ns] “pandas._libs.tslibs.timestamps.Timestamp”: 91… “pandas._libs.tslibs.nattype.NaTType”: 8.67%
Fecha reporte web Fecha datetime64[ns] “pandas._libs.tslibs.timestamps.Timestamp”: 10…  
Fecha de registro Fecha datetime64[ns] “pandas._libs.tslibs.timestamps.Timestamp”: 10…  
Tipo recuperación Texto string “str”: 91.33% “pandas._libs.missing.NAType”: 8.67%
Codigo departamento Texto string “str”: 100.0%  
Codigo pais Texto string “pandas._libs.missing.NAType”: 98.65% “str”: 1.35%
Pertenencia etnica Texto string “str”: 98.13% “pandas._libs.missing.NAType”: 1.87%
Nombre grupo etnico Texto string “pandas._libs.missing.NAType”: 97.97% “str”: 2.03%
Diccionario Texto string “str”: 100.0%  

Datos faltantes

El método CalidadDatos.ValoresFaltantes() permite calcular el número o porcentaje de valores faltantes de un conjunto de datos. Si el parámetro “numero” tiene asignado el valor True, se calcula el número de valores faltantes de cada columna. De lo contrario, si es False, se calcula el porcentaje.

El ejemplo a continuación presenta los porcentajes de datos faltantes de cada columna del conjunto de datos de COVID-19

>>> faltantes = datos_covid.ValoresFaltantes(numero = False)
>>> faltantes

ID de caso                     0.000000
Fecha de notificación          0.000000
Código DIVIPOLA                0.000000
Ciudad de ubicación            0.000000
Departamento o Distrito        0.000000
Atención                       0.002941
Edad                           0.000000
Edad 2                         0.000000
Edad meses                     0.000000
Sexo                           0.000000
Tipo                           0.000000
Estado                         0.003414
País de procedencia            0.985766
Fecha de inicio de síntomas    0.000000
Fecha de muerte                0.953837
Fecha diagnostico              0.015941
Fecha recuperado               0.086701
Fecha reporte web              0.000000
Fecha de registro              0.000000
Tipo recuperación              0.086701
Codigo departamento            0.000000
Codigo pais                    0.986512
Pertenencia etnica             0.018745
Nombre grupo etnico            0.979685
Diccionario                    0.000000
dtype: float64

Datos duplicados

El método CalidadDatos.CantidadDuplicados() calcula el número o porcentaje de duplicados en el conjunto de datos.

El ejemplo abajo calcula el número de duplicados para filas y columnas del conjunto de datos de COVID-19.

>>> # Número de filas duplicadas.
>>> # Se escribe el parámetro eje = 0, para especificar fila
>>> # Se escribe el parámetro numero = True, para especificar el número de duplicados (si es False se calcula el porcentaje)
>>> filas_duplicadas = datos_covid.CantidadDuplicados(eje = 0, numero = True)

>>> # Número de columnas duplicadas.
>>> # Se escribe el parámetro eje = 1, para especificar columna
>>> # Se escribe el parámetro numero = False, para especificar el porcentaje de duplicados
>>> columnas_duplicadas = datos_covid.CantidadDuplicados(eje = 1, numero = True)

>>> print("Filas duplicadas: ", filas_duplicadas)
>>> print("Columnas duplicadas: ", columnas_duplicadas)

Filas duplicadas:  1
Columnas duplicadas:  2

Emparejamiento de duplicados

El método CalidadDatos.EmparejamientoDuplicados() permite mostrar los nombres de filas o columnas que son exactamente iguales. El parámetro “col” especifica si se quieren emparejar los duplicados de filas al asignarlo a False. Para emparejar las columnas se escribe True.

EL ejemplo abajo muestra los nombres de las filas duplicadas en cada columna de la tabla. Por ejemplo, la columna de la tabla “Filas iguales 1” muestra que las filas 1 y 2 son duplicadas.

>>> emparejamiento_dupli_filas = datos_covid.EmparejamientoDuplicados(col = False)
>>> emparejamiento_dupli_filas
index Filas iguales 1
0 267
1 269

EL ejemplo abajo muestra los nombres de las columnas duplicadas en cada columna de la tabla. Por ejemplo, la columna de la tabla “Columnas iguales 1” muestra que las columnas “Edad” y “Edad 2” son duplicadas.

>>> emparejamiento_dupli_cols = datos_covid.EmparejamientoDuplicados(col = True)
>>> emparejamiento_dupli_cols
index Columnas iguales 1 Columnas iguales 2
0 Edad Fecha reporte web
1 Edad 2 Fecha de registro

Estadísticas descriptivas de variables numéricas

El método CalidadDatos.DescripcionNumericas() permite calcular estadísticas descriptivas para variables numéricas tales como el promedio, la desviación estándar, el mínimo, máximo, mediana (percentil 50), valores faltantes y extremos.

El objetivo de estos cálculos es verificar si las variables del conjunto de datos contienen los valores esperados o si existen errores en la digitación de los valores

El ejemplo abajo muestra las estadísticas descriptivas para las variables “Edad”, “Edad_2” y “Edad meses”

>>> descr_numericas = datos_covid.DescripcionNumericas()
>>> descr_numericas
index count mean std min 25% 50% 75% max missing outliers_total outliers_altos outliers_bajos
Edad 65616.0 39.175536 18.661339 0.0 26.0 36.0 52.0 104.0 0.0 0.002865 0.002865 0.0
Edad 2 65616.0 39.175536 18.661339 0.0 26.0 36.0 52.0 104.0 0.0 0.002865 0.002865 0.0
Edad meses 65616.0 476.099625 223.962309 1.0 318.0 443.0 626.0 1250.0 0.0 0.004054 0.004054 0.0

Es posible calcular las estadísticas descriptivas para algunas variables únicamente. Esto se hace al asignar una lista con las variables de interés al parámetro “variables”, como se muestra a continuación

>>> descr_numericas = datos_covid.DescripcionNumericas(variables = ["Edad", "Edad meses"])
>>> descr_numericas
index count mean std min 25% 50% 75% max missing outliers_total outliers_altos outliers_bajos
Edad 65616.0 39.175536 18.661339 0.0 26.0 36.0 52.0 104.0 0.0 0.002865 0.002865 0.0
Edad meses 65616.0 476.099625 223.962309 1.0 318.0 443.0 626.0 1250.0 0.0 0.004054 0.004054 0.0

Estadísticas descriptivas de variables categóricas

El método CalidadDatos.DescripcionCategoricas() calcula la frecuencia, tanto en número como en porcentaje del total de filas, de los valores de las variables que se consideran numéricas.

Las variables se consideran categóricas si contienen valores limitados. Por defecto, el máximo número de categorías es 30 y las categorías no pueden representar más del 50% del total de filas de la columna. Estos valores se pueden modificar en los parámetros “limite” y “categoriasMaximas” del método “DescripcionCategoricas”.

Es posible también especificar si las variables numéricas con pocos valores se quieren incluir en el análisis. Por ejemplo, variables que contienen únicamente los números 1 y 2. Para agregar las variables al análisis, se asigna el valor True al parámetro incluirNumericas (el cual está por defecto) y False si no se desean incluir.

Por último, es posible agregar una lista limitada de variables al análisis, asignando una lista de Python con las variables al parámetro “variables”

El ejemplo abajo muestra cómo se calculan las frecuencias de categorías de variables categóricas con los parámetros del método DescripcionCategoricas por defecto

>>> descr_categoricas = datos_covid.DescripcionCategoricas(limite=0.5,
>>>                                                        categoriasMaximas=30,
>>>                                                        incluirNumericos=True,
>>>                                                        variables=None)
>>> descr_categoricas
index Columna Valor Frecuencia Porcentaje del total de filas
0 Atención Recuperado 59927.0 0.913299
1 Atención Fallecido 2914.0 0.044410
2 Atención Hospital 2138.0 0.032584
3 Atención Hospital UCI 438.0 0.006675
4 Atención Casa 6.0 0.000091
5 Atención Datos faltantes 193.0 0.002941
6 Atención Total categorías (incluye NA): 6 NaN NaN
0 Sexo M 35552.0 0.541819
1 Sexo F 30056.0 0.458059
2 Sexo f 6.0 0.000091
3 Sexo m 2.0 0.000030
4 Sexo Datos faltantes 0.0 0.000000
5 Sexo Total categorías (incluye NA): 4 NaN NaN
0 Tipo En estudio 50836.0 0.774750
1 Tipo Relacionado 13847.0 0.211031
2 Tipo Importado 933.0 0.014219
3 Tipo Datos faltantes 0.0 0.000000
4 Tipo Total categorías (incluye NA): 3 NaN NaN
0 Estado Leve 52084.0 0.793770
1 Estado Asintomático 6811.0 0.103801
2 Estado Moderado 3135.0 0.047778
3 Estado Fallecido 2914.0 0.044410
4 Estado Grave 448.0 0.006828
5 Estado Datos faltantes 224.0 0.003414
6 Estado Total categorías (incluye NA): 6 NaN NaN
0 Tipo recuperación PCR 35370.0 0.539045
1 Tipo recuperación Tiempo 24557.0 0.374253
2 Tipo recuperación Datos faltantes 5689.0 0.086701
3 Tipo recuperación Total categorías (incluye NA): 3 NaN NaN
0 Pertenencia etnica Otro 57670.0 0.878901
1 Pertenencia etnica Negro 5003.0 0.076247
2 Pertenencia etnica Indígena 1333.0 0.020315
3 Pertenencia etnica Rom 293.0 0.004465
4 Pertenencia etnica Raizal 72.0 0.001097
5 Pertenencia etnica Palenquero 15.0 0.000229
6 Pertenencia etnica Datos faltantes 1230.0 0.018745
7 Pertenencia etnica Total categorías (incluye NA): 7 NaN NaN
0 Diccionario {1} 32808.0 0.500000
1 Diccionario {2} 32808.0 0.500000
2 Diccionario Datos faltantes 0.0 0.000000
3 Diccionario Total categorías (incluye NA): 2 NaN NaN

Peso de las variables en la memoria RAM

Para calcular cuál es el peso de cada variable, se utiliza el método CalidadDatos.Memoria(), como se muestra en el ejemplo abajo. El parámetro “unidad” indica que se quiere calcular en Mega Bytes (“Mb”) y el parámetro “col” indica que se calcula para cada variable. En caso de desear calcular el peso total del conjunto de datos, se asigna False al parámetro “col”.

>>> peso_memoria = datos_covid.Memoria(col=True, unidad="Mb")
>>> peso_memoria

Index                          0.000122
ID de caso                     0.500610
Fecha de notificación          0.500610
Código DIVIPOLA                0.500610
Ciudad de ubicación            0.500610
Departamento o Distrito        0.500610
Atención                       0.500610
Edad                           0.563187
Edad 2                         0.563187
Edad meses                     0.563187
Sexo                           0.500610
Tipo                           0.500610
Estado                         0.500610
País de procedencia            0.500610
Fecha de inicio de síntomas    0.500610
Fecha de muerte                0.500610
Fecha diagnostico              0.500610
Fecha recuperado               0.500610
Fecha reporte web              0.500610
Fecha de registro              0.500610
Tipo recuperación              0.500610
Codigo departamento            0.500610
Codigo pais                    0.500610
Pertenencia etnica             0.500610
Nombre grupo etnico            0.500610
Diccionario                    0.500610
dtype: float64

Correlación entre variables numéricas

El método CalidadDatos.CorrelacionNumericas() calcula una matriz de correlación entre las variables numéricas del conjunto de datos. El parámetro “metodo” especifica si se desea calcular las correlaciones con el método Pearson (“pearson”), Kendall (“kendall”) o Spearman (“spearman”).

El siguiente ejemplo presenta la matriz de correlación para variables numéricas del conjunto de datos de COVID-19.

>>> corr_numericas = datos_covid.CorrelacionNumericas(metodo="pearson", variables=None)
>>> corr_numericas
index Edad Edad 2 Edad meses
Edad 1.0000 1.0000 0.9999
Edad 2 1.0000 1.0000 0.9999
Edad meses 0.9999 0.9999 1.0000

Correlación de variables categóricas

El método CalidadDatos.CorrelacionCategoricas() calcula una matriz de correlación para variables categóricas. Contiene los mismos parámetros que se explicaron en la Sección “Estadísticas descriptivas de variables categóricas”, para definir variables categóricas, pero incluye también el parámetro “metodo”. Este especifica si se quiere calcular la matriz con el método Cramer (“cramer”) o con la metodología Phik (“phik”), de la librería Phik de Python.

A continuación se calcula la matriz de correlación de variables categóricas para el conjunto de datos de COVID-19

>>> corr_categoricas = datos_covid.CorrelacionCategoricas(metodo="phik")
>>> corr_categoricas
index Atención Sexo Tipo Estado Tipo recuperación Pertenencia etnica Diccionario
Atención 1.000000 0.038193 0.195794 0.987038 0.941437 0.028540 0.000000
Sexo 0.038193 1.000000 0.094794 0.041878 0.025933 0.000000 0.000000
Tipo 0.195794 0.094794 1.000000 0.325888 0.320547 0.133658 0.000000
Estado 0.987038 0.041878 0.325888 1.000000 0.917328 0.067380 0.004040
Tipo recuperación 0.941437 0.025933 0.320547 0.917328 1.000000 0.051298 0.000000
Pertenencia etnica 0.028540 0.000000 0.133658 0.067380 0.051298 1.000000 0.002036
Diccionario 0.000000 0.000000 0.000000 0.004040 0.000000 0.002036 1.000000