Analisis Exploratorio (EDA) en tres patadas

Como empezar con EDA sin matarte tirando código.

Quetzalcóatl Vázquez
tacosdedatos
6 min readNov 14, 2020

--

Photo by Markus Winkler on Unsplash

El análisis exploratorio de datos, EDA por sus siglas en inglés, es uno de los pasos necesarios tanto para proyectos de Ciencia de Datos, Análisis de Datos, Inteligencia de Negocios o incluso para una “simple” visualización.

Saltarse el análisis exploratorio de un dataset es algo que muchos analistas y desarrolladores minimizan por las ansias de empezar a construir modelos o visualizaciones. Sin embargo, es un paso clave para saber con qué materia prima contamos, cuál es de buena calidad y cuál debe repararse o de plano desecharse.

He visto ejercicios de EDA utilizando matplotlib o seaborn en Python o usando graphics o ggplot en R. Sin ánimo de minimizar ese esfuerzo puedo entender porque tanta gente se salta este paso y es que crear paso a paso cada una de las gráficas puede resultar tedioso. Es por eso que les presentaré la #bibliotecaNoLibreria de R DataExplorer

Primeros pasos con DataExplorer

Para no tener que usar el famoso dataset del Titanic o el Iris vamos a utilizar los resultados de la Prueba PLANEA 2016 para el estado de Aguascalientes en México. Esta prueba medía el desempeño de los estudiantes de nivel básico en Matemáticas y en Lenguaje y Comunicación.

El archivo con el que vamos a trabajar lo pueden encontrar aquí.

El nombre de este artículo dice tres patadas porque literalmente haremos el EDA en 3 líneas de R:

  1. La primera línea usa pacman para cargar las bibliotecas DataExplorer y readr . La primera sirve para hacer el EDA y la segunda para leer el csv separado por puntos y comas.
  2. La segunda línea usa read_csv2 para parsear el csv que descargamos de Kaggle.
  3. La tercera línea crea un reporte en HTML que exploraremos a continuación.

Notarán que yo suelo poner mi código en la forma nombre_librería::funcion . En lo personal me funciona para saber de donde estoy tomando cada función. Cuando veo código de otros repositorios luego batallo para encontrar la documentación y entender la funcionalidad del código. Entiendo que no es la buena práctica pero me es útil por ahora.

Echándose un clavado en el reporte

En cuanto se termina de ejecutar el script de R se abre una página en el navegador que en su índice muestra lo siguiente:

Índice del Reporte

En la primera sección podemos ver que nuestro dataset tiene 1,120 registros con 44 atributos cada uno. También, desde aquí podemos ver que 9 atributos son detectados como discretos y 29 como continuos. Esto es bien importante para saber por dónde podemos empezar a tirar el análisis.

Además podemos ver la calidad de los datos: ninguna observación tiene todos las columnas llenas y hay 6 columnas que de plano están vacías completamente.

Tabla de estadísticas básicas del dataset

Y como las tablas muchas veces no gustan tanto como las visualizaciones, lo anterior se acompaña de esta gráfica:

Gráfica de estadísticas básicas del dataset

La segunda parte del reporte nos muestra el nombre de las columnas y el posible tipo de dato que representa. En mi opinión, es la gráfica menos lograda del paquete:

Estructura del dataset

La siguiente sección me ha resultado de mucha ayuda para saber por donde empezar la limpieza o la corrección del script de recolección de datos. Muchas veces mi script original trae algún error y por ende no pobla todas las columnas como debiera. En este caso, la gráfica me muestra las 6 columnas sin valores y una columna donde poco más del 5% de los registros no cuentan con valor. Como plus, la leyenda explicando que significa cada color me parece buen detalle.

Análisis de datos faltantes

Y con la sección del Análisis de Distribución Univariada se empieza a poner coqueto el asunto. Lo primero va sobre variables continuas así que lo que nos va a mostrar son histogramas. Por temas espacio, sólo mostraré un par de renglones:

Un detalle que brinca de la última gráfica superior: en español_sobresalientes_escuela podemos ver como la mayoría de las observaciones están en cero puntos. Eso significa que casi ninguna escuela en el estado de Aguascalientes tiene calificación sobresaliente. Con más de 600 puntos se ven un par de observaciones. Triste para nuestros alumnos. Por otro lado, es normal que la longitud (coordenada geográfica) se la misma. Hay que revisar si la ubicación de los outliers es correcta o si es un error de registro.

Para variables categóricas tenemos gráficas de barras en vez de histogramas:

Lo primero que nos dice es que hay 6 columnas con tantas categorías que no se pueden graficar y viendo cuáles son parece tener sentido … o casi. Viendo las barras nos cuadra que sólo aparezca Aguascalientes como entidad, que tengamos escuelas Públicas y Privadas, o que los años de la encuesta sean 2017 y 2018. Lo que ya no cuadra es que aparezcan las calificaciones de matematicas_insuficiente_nacional y matematicas_insuficiente_entidad. Esto es porque DataExplorar los interpretó como categóricos aunque no sean así. Nada es perfecto y este es el costo de dejar que la librería genere en automático el reporte y que no generemos una a una las gráficas nosotros. Por eso es importantisimo que conozcamos nuestro dataset como primer paso de cualquier análisis.

Gráficas un poco más avanzadas

DataExplorer también genera las siguientes gráficas:

  • Q-Q plot
  • Análisis de Correlación
  • Análisis de Componentes Principales

Sin embargo, para no hacer esta entrada muy larga y para poder generar más contenido en esta Publicación, los exploraremos en un siguiente artículo. Por ahora, creo que vale la pena que empiecen a jugar con sus datasets y los pasen por su EDA correnpondiente para que empiecen a acostumbrarse a este paso inicial que, sin duda, hará que sus análisis suban de calidad.

Otras opciones

En tacosdedatos.com el buen io_exception hizo un blog con un acercamiento más amplio y personalizado al EDA con Python. Yo no recomiendo un enfoque o tecnología sobre otra. Creo que cada caso requiere un EDA en partícular.

Si nunca has hecho EDA, tu dataset es pequeño o no quieres ocupar mucho tiempo en esta fase, creo que DataExplorer es una buena opción. Seguramente cuando vayas avanzando en tus análisis te puede quedar corto o no podrás tolerar los errores que DataExplorer genera al asumir los tipos de datos.

Recuerden que pueden publicar aquí en Medium o en su sitio de confianza tacosdedatos.com. Allá van a encontrar entradas con mucho más código y temas muy diversos.

Dejen sus comentarios en esta entrada o en mi Twitter @nerudista.

Sigan nerudeando datos.

--

--

Quetzalcóatl Vázquez
tacosdedatos

Data Analysis and Sports lover | Tech Manager @ Globant | Creo contenido en español en @tacosdedatos | Me encanta probar #bibliotecasNoLibrerias de dataviz