Pandas profiling es un módulo open source de Python con el que podemos hacer rápidamente un análisis exploratorio de datos con solo unas pocas líneas de código. Además por si esto no fuera suficiente para convencernos de la utilidad de la herramienta, esta también genera informes interactivos en formato web que pueden ser presentados a cualquier persona, aunque no sepa programar.
En resumen, lo que hace pandas profiling es ahorrarnos todo el trabajo de visualizar y entender la distribución de cada variable. Nos genera un informe con toda la información fácilmente visible.
Una imagen vale más que mil palabras
Para que veas claro cómo funciona, este es un ejemplo de informe generado por pandas profiling:
También puedes ver un ejemplo interactivo de informe aquí.
Uno de los puntos fuertes del informe generado son los warnings que aparecen al inicio, donde nos indica las variables que contienen valores NaN, variables con muchos ceros, variables categóricas con alta cardinalidad, etc…
Cómo utilizar pandas profiling
El primer paso es instalarlo con este comando:
pip install pandas_profiling
Generaremos el informe utilizando estos comandos:
from pandas_profiling import ProfileReport prof = ProfileReport(df) prof.to_file('informe.html')
Ya estamos, así de simple ha sido. Podemos ver el informe generado en el archivo informe.html
Desventaja de pandas profiling
El principal inconveniente de pandas profiling es su uso con grandes datasets. Con el aumento del tamaño de los datos también aumenta mucho el tiempo para generar el informe.
Una manera de solventar este problema es generar el informe a partir de solo una parte de todos los datos que tengamos. Es importante asegurarnos de que los datos seleccionados para generar el informe sean representativos de todos los datos que tengamos, por ejemplo podria darse el caso que las primeras X filas de datos contengan únicamente datos de una sola categoría. En este ejemplo nos convendría aleatorizar el orden de los datos y seleccionar una muestra representativa.
Un ejemplo con código:
from pandas_profiling import ProfileReport #Solo utilizamos los primeros 10000 datos prof = ProfileReport(df.sample(n=10000)) prof.to_file('informe.html')
Otra alternativa es usar el modo mínimo que fue introducido en la versión 2.4 de Pandas Profiling. Puedes comprobar qué versión tienes instalada con este comando:
pandas_profiling.version.__version__
Con el modo mínimo se generará un informe simplificado con menos información que el completo pero que se podrá generar relativamente rápido para un dataset grande. Este es el código a utilizar:
profile = ProfileReport(df, minimal=True) profile.to_file("informe_min.html")