Un simple Análisis Exploratorio de Datos a partir del método describe() de pandas
Los datos se han constituido en el principal activo fijo de las Organizaciones, muchas se han potencializado en su valor con un crecimiento exponencial por las buenas políticas de gestión que hacen sobre datos y sus diversas fuentes.
En el desarrollo de los proyectos de Inteligencia Artificial, y en particular en los modelos de aprendizaje supervisado y no-supervisado, los datos representan el éxito o fracaso del modelo. Sin embargo, hay situaciones en el que el científico de datos que desarrolla un modelo de Machine Learning debe realizar una exhaustiva y detallada exploración de datos (en inglés, Exploratory Data Analysis — EDA) en los datasets que empleará en su implementación.
En este artículo te mostraremos cómo es posible realizar un breve, simple y eficaz EDA a partir del método describe() de la librería de pandas.
Para este artículo utilizaremos el dataset de una empresa del Servicio de Energía, que a través de su área Comercial realizará una estrategia de Segmentación de Clientes para un grupo clientes. Para ello ha seleccionado de su Sistema de Información Comercial un grupo de usuarios con las siguientes categorías o atributos:
NIC: Número único del Cliente
Estrato: Estrato socio-económico de la residencia donde se presta el servicio
Nhab: Número de habitaciones de la residencia donde se presta el servicio
Ingresos: Nivel de ingreso del Cliente medido en cantidad de salario mínimo mensual vigente
Consumo: Consumo mensual de energía medido en kWh
IndiReca: Índice de Recaudo, indicador que mide la efectividad de los pagos del cliente, muestra la probabilidad de pago del cliente antes del vencimiento de su factura
QSAT: Índice positivo de satisfacción del Cliente con el servicio ofrecido y la atención prestada
Luego de realizar la importación de los datos en un dataframe de pandas, se obtiene lo siguiente:
Con este atributo podemos evidenciar la cantidad de instancias u observaciones presentes en el dataframe df, es decir se tiene 12150 instancias y sus 7 atributos.
Está claro que nuestro análisis exploratorio estará enfocado sobre aquellos atributos que potencialmente serán utilizados para el desarrollo del modelo de aprendizaje automático, esto descarta al atributo NIC por ser el atributo primario de cada instancia.
El método describe() se utiliza para calcular algunos datos estadísticos como percentil, media y desviación estándar de los valores numéricos del dataframe y arroja una importante información de los datos que nos pueden ayudar a realizar un previo análisis exploratorio.
Valores Nulos
Teniendo en cuenta que nuestro dataset tiene 12150 instancias la primera revisión que debemos realizar es con la fila count, donde podemos evidenciar que atributos presenta valores nulos o faltantes:
Es decir, los atributos Estrato, Nhab y QSAT presenta en algunas instancias valores nulos (NaN) o faltantes ya que no cumplen con la cantidad de 12150, por tanto se hace necesario conocer la política de sustitución que tenga la Compañía de Energía para estos atributos.
Valores Atípicos (Outliers)
Para identificar los valores atípicos, solo basta con analizar los valores mínimo (min) y máximo (max) de cada atributo.
Para los atributos Estrato, Nhab e IndiReca se evidencia una tendencia normal en estos valores y sus percentiles.
Distinto resultado se puede observar sobre los atributos Ingresos, Consumo y QSAT, donde en sus valores mínimo y máximo se puede apreciar la existencia de valores atípicos.
A simple vista se puede deducir que los valores mínimos de Ingresos y QSAT son valores atípicos, pues no hay ingresos negativos en los clientes y no podemos calificar el índice de satisfacción de los clientes con valores negativos de acuerdo a las políticas de la Empresa.
Una metodología ágil y sencilla para evidenciar si los valores máximos corresponden a Outliers o no, es emplear un enfoque paramétrico en la detección, por el cual podemos calcular que tan alejado, medido en desviaciones estándar (std), de la media (mean) se encuentran dichos valores. La medida Z-score define una identificación de valores atípicos para aquellos que están por encima de ± 3σ.
Para los valores máximos de Ingresos y Consumo, debemos evaluar si se da la siguiente afirmación:
Para el valor máximo del atributo Ingresos se da que 8956 > 1462.46 por tanto podemos concluir que hay presencia de Outlier en este atributo, igual condición con el atributo Consumo cuyo valor máximo de 5078 > 586.53.
Conclusión. En el Análisis Exploratorio de Datos, pandas y otras librerías ofrecen muchas facilidades para determinar la presencia de valores nulos y atípicos en los datos, pero es la habilidad y destreza del científico de datos emplear estos recursos para detectarlos y corregirlos.