En esta entrada haremos un repaso rápido de las posibilidades que nos da Python para dibujar gráficas. Ni mucho menos es una guía completa (eso lo encontraremos aquí), sino una introducción para empezar a utilizar gráficos en análisis de datos. La visualización de datos juega un papel central en lo que se conoce como data science (literalmente ciencia de los datos, que aquí llamaremos análisis de datos). Las gráficas son la interfaz entre los datos y el analista de datos.
Las gráficas nos ayudan a dar sentido a grandes cantidades de datos de una manera sencilla. El análisis de datos suele ser un proceso iterativo, donde una serie de funciones se aplican sobre los datos originales, se observan los resultados y se modifican o se aplican nuevos procesos de acuerdo a las observaciones. Las gráficas también nos ayudan a entender los modelos extraídos de los datos, y son buenas herramientas para publicar los resultados del análisis.
Hay muchos tipos de representaciones gráficas (gráficas de línea, de barra, circulares, matriciales, etc …). La selección del tipo de gráfica depende de la naturaleza de los datos que queramos mostrar. Las series temporales suelen representarse con una gráfica de línea. Las proporciones se suelen representar usando gráficas circulares, pero también se pueden usar barras si hay una dimensión adicional (por ejemplo, proporciones que cambian en el tiempo). Para representar puntos de datos individuales, usaremos nubes de puntos. La lista es larga. En la ayuda de Microsoft Office encontramos una referencia valiosa que nos ayudará a escoger el tipo de gráfico.
Volviendo a Python, hay muchas librerías disponibles para dibujar gráficos en Python. Para elegir entre ellas, primero debemos saber qué queremos hacer con la gráfica; por ejemplo, si queremos usarla para visualizar datos en la pantalla, guardarlas en una imagen, en un artículo o mostrarlas en una aplicación web o de escritorio.
Matplotlib
Matplotlib (parte de Scipy) es la mega-librería que hace de todo. Es la más completa de todas las librerías disponibles, y puede producir gráficos para todos los usos que les queramos dar. El problema es que por defecto, los gráficos producidos por Matplotlib son muy básicos (léase, feos), por lo que hay que hacer bastantes ajustes para decorarlos adecuadamente. Matplotlib también provee widgets para Gtk y Qt para su uso en aplicaciones de escritorio.
Pandas
Pandas incluye también funciones de representación gráfica. Las clases Series and DataFrame tienen un método plot() para dibujar gráficos de los datos. En la documentación hay detalles acerca de los tipos de gráficas soportadas. La implementación se basa en Matplotlib, y los gráficos resultantes se pueden manipular usando las funciones de esta librería. Nuevamente, el mayor problema es la necesidad de un esfuerzo relativo para conseguir gráficas decoradas. No obstante, es una funcionalidad muy práctica a la hora de realizar un análisis exploratorio de los datos.
Seaborn
También basada en Matplotlib, Seaborn provee una interfaz simplificada y orientada a la visualización de datos estadísticos. Está diseñada para producir gráficas atractivas por defecto. Por otro lado, la personalización y los tipos de gráfica disponibles son algo más limitados que Matplotlib.
Bokeh
Bokeh es una librería para producir gráficos interactivos en navegadores web. Esto significa que la salida viene dada en forma de código HTML/JS que puede ser usado en una página web. También se pueden generar imágenes estáticas. Bokeh también tiene un servidor que puede usarse para mostrar gráficos con actualizaciones en vivo. El uso de Bokeh es recomendable especialmente para aplicaciones o sitios web que presenten datos a los usuarios finales. Otro sitio donde Bokeh puede resultar de gran utilidad es en las libretas Jupyter, especialmente si se van a utilizar para hacer presentaciones de estudios y resultados.
PyQtGraph
De forma similar a Bokeh para las páginas web, PyQtGraph es una librería para Qt (disponible en Python a través de la librería PySide). Qt es un entorno multi-lenguaje (C/C++, Python, Java…) y multi-plataforma (Windows, Linux, OS X, Android…) para desarrollar aplicaciones.
Conclusiones
Hemos visto tan sólo un subconjunto de las muchas librerías de representación gráfica disponibles para Python. Matplotlib es el estándar de-facto, pero no es la más sencilla. Para simplificar el trabajo (y siempre que el tipo de gráfica elegido no sea muy poco común), podemos usar Seaborn o otras opciones que no hemos nombrado explícitamente aquí (Chaco, Visvis…
encontraremos una lista completa aquí). Para usar gráficas en aplicaciones web, Bokeh es la mejor opción, dado que provee gráficos interactivos. Para aplicaciones de escritorio, Matplotlib provee los widgets necesarios para los entornos más comunes, pero específicamente para Qt, PyQtGraph simplifica mucho el proceso.
En entradas futuras veremos ejemplos de uso de cada una de las librerías aquí descritas.
¡Qué genial artículo sobre las librerías para dibujar gráficas en Python! Me ha encantado la forma clara y concisa en la que explicas cada una de las librerías y las ventajas que ofrece cada una. Gracias a tu guía, ahora tengo muchos recursos para mejorar mis gráficas y visualizaciones. Sigue compartiendo contenido de calidad como este. ¡Saludos! Becky Gomez.