Pandas Profiling: Una excelente herramienta para la exploración de datos

Jorge Martinez
Aug 24, 2017 · 4 min read

El mundo de los datos es fantástico. La información que se puede extraer desde un set de datos es primordial para la empresa si se analiza de la forma correcta.

Sin embargo, antes de ponerse a bucear en los datos en busca de la llave maestra que llevará a mi empresa a conseguir todos sus objetivos, debemos tener en cuenta ciertas cosas fundamentales como la calidad de la información. Todos quisiéramos tener nuestra data impecable, ordenada, estructurada, confiable, disponible, pero la mayoría de las veces eso es una utopía, un sueño, una ilusión.

A raíz de lo anterior, siempre es necesario hacer un análisis previo a nuestra información: Buscar datos nulos, campos vacíos, formatos erróneos, datos erróneos, faltas de ortografía, duplicación de información, etc. Si bien esto conlleva tiempo, existe una pequeña herramienta en Python que nos soluciona la vida (a medias, y sólo en el ámbito del análisis), llamada “Pandas Profiling”.

“Pandas Profiling” crea reportes de perfil a partir de un Pandas Dataframe. Un Dataframe no es más que una estructura de datos en formato de fila-columna, parecido a una matriz, con la diferencia de que en un Dataframe se puede almacenar cualquier tipo de dato.

Explorando los datos

En Pandas existe una función llamada df.describe(), la cual hace un pequeño análisis de las variables contenidas en un Dataframe. Si bien la función df.describe() hace bien su trabajo, es un poco básica para el análisis exploratorio de la información.

A diferencia de df.describe(), Pandas profiling provee detalles del dataset tales como la cantidad de variables, los datos nulos, total en memoria, tipos de variables, etc. Más aún, provee detalles de cada variable del dataset tal como la correlación, la media, valores nulos, cardinalidad, entre otros que veremos a continuación.

Para comenzar debemos lanzar un Jupyter notebook en la consola de Anaconda o Python:

$ jupyter notebook

Luego de esto, creamos un notebook y partimos importando las librerías que necesitamos.

#pandas y sus amigos 
import pandas as pd
import pandas_profiling
import numpy as np

Sí o sí vamos a necesitar un dataset. En esta ocasión usaremos uno que acabo de tomar de un repositorio de la UCI (Universidad de California, Irvine), el cual contiene información acerca de la calidad de algunos vinos blancos (casualmente).

Subimos el dataset y creamos un Dataframe a partir de su contenido.

#leemos el csv 
df = pd.read_csv('winequality-white.csv', engine='python', sep=";")

Una vez creado el Dataframe, podemos ver su estructura con una muestra de los datos.

#muestra de los datos 
df.head()

Se observan los datos, pero ¿ahora qué? ¿Qué hago con esto?

Primero aplicamos la función df.describe, la cual me entrega información relevante acerca del dataset.

Se observa que la función df.describe crea una matriz de las variables junto con algunos datos estadísticos, como la media, la desviación estándar, mínimos y máximos, etc; pero como vemos, no podemos ir más allá de un pequeño review de nuestras variables.¿Se puede hacer mejor? Sí, se puede.
Ahora demos paso a Pandas Profiling.

report = pandas_profiling.ProfileReport(df) report.to_file("report.html")

Primero llamamos al método, pasando como argumento nuestro Dataframe y luego (opcional) podemos exportar el reporte a HTML para una mejor visualización.

Resultados

Primero tenemos un maravilloso Overview con información acerca de los tipos de variable presentes en el dataset, la cantidad de observaciones, etc.

Podemos también visualizar detalles por variable:

Si presionamos en “Toggle details” obtenemos aún más detalles de la variable, tales como datos estadísticos, histogramas, valores extremos, valores comúnes:

Como se observa, este es un buen punto de partida para realizar la exploración y análisis de nuestra información, ya que permite obtener granularidad y datos estadísticos a partir de un set de datos, lo cual es esencial si queremos, por ejemplo, elegir las variables correctas para crear modelos predictivos.

Les dejo algunos links interesantes:

– Dataset usado: https://archive.ics.uci.edu/ml/datasets/Wine+Quality
– Pandas Profiling: https://github.com/JosPolfliet/pandas-profiling
– Demo: http://nbviewer.jupyter.org/github/JosPolfliet/pandas-profiling/blob/master/examples/meteorites.ipynb

Eso es todo por ahora. Un saludo!

Maule Devs

)

Jorge Martinez

Written by

Software Engineer — Beer lover ❤

Maule Devs

Blog de la comunidad Maule Devs que busca unificar a los desarrolladores de software de la Región del Maule en Chile

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade