Las 6 principales librerías de visualización de datos para Python

Las 6 principales librerías de visualización de datos para Python

Juan Gabriel Gomila Juan Gabriel Gomila
16 minutos

Leer el artículo
Audio generated by DropInBlog's Blog Voice AI™ may have slight pronunciation nuances. Learn more

Librerías de Python

Vamos a conocer las 6 librerías de python más importantes para la visualización de datos. Un artículo extenso y detallado al máximo.

Articulo originalmente publicado en el blog de SuperDataScience.


Sin duda, el Índice de Paquetes Python está abarrotado de librerias adecuadas para prácticamente todas las necesidades de visualización de datos que existen. Ya sea que necesites una libreria intensamente enfocada a la realización de una tarea específica, o una que pueda ser usada para varios propósitos, Python te tiene cubierto, sin lugar a dudas.

Y aun así, considerando la gran cantidad de librerias competidoras que los codificadores pueden elegir en estos días, no es una sorpresa que muchos terminen sintiéndose perdidos en el mar.

Este predicamento plantea un par de preguntas: ¿cómo sabemos qué libreria nos servirá mejor? Y considerando la naturaleza de cada proyecto, ¿qué método de visualización permite estructurar y representar adecuadamente grandes conjuntos de datos, y así hacer la información más comprensible para el público?

 

Seleccionar el marco correcto

De hecho, navegar por las aparentemente infinitas opciones de trazado de barras, líneas, dispersión e incluso gráficos de tarta puede parecer a menudo una tarea de Sísifo.

Sin embargo, no temas.

Para ahorrarte tiempo y horas interminables de investigación, hemos creado esta guía para ayudarte a familiarizarte con algunas de las librerias de visualización más populares. Por muy abrumador que parezca elegir un marco de trabajo que se ajuste a las necesidades de tu proyecto, ten siempre en cuenta que el principal trabajo de una buena visualización de datos es proporcionar a los usuarios información sólida de forma comprensible, casi visceral, sin sacrificar a unos por otros.

Así que para ayudarte a encontrar tu camino, vamos a hacer un rápido desglose de algunas de las más famosas librerías de visualización y su aplicación basada en el proyecto que necesitas realizar (con nuestros respectivos comentarios).

 

Librerías de visualización destacadas

  • Red neuronal de ciencia de datos. La gran mayoría de los tutoriales para la ciencia de los datos utilizan matplotlib. Esta libreria de visualización de propósito general es adecuada para múltiples proyectos, ya que sirve como base para aplicar otros marcos sobre ella.
  • Modelo de regresión o clasificación de datos. Es muy probable que un codificador que haga una regresión o clasificación se incline hacia Seaborn debido a su matriz de correlación. Como su nombre lo sugiere, lo que esta matriz muestra - de un solo vistazo - es si los elementos de datos tienen una relación o conexión mutua.
  • Stock Ticker. Este tipo de proyecto típicamente requiere un gráfico que pueda trazar datos en tiempo real y responder cuando el usuario mueve el cursor sobre el gráfico. Nuestras opciones recomendadas aquí son Plotly o Bokeh, dos marcos que soportan JavaScript.
  • Mapeo. Por ejemplo, si se asigna un codificador para trabajar con una base de datos de MongoDB, que almacena datos geográficos y de otro tipo en formato JSON, la tarea probablemente requiera dibujar mapas. En ese caso, nuestra sugerencia de marco sería geoplotlib simplemente porque está diseñado especialmente para ese propósito.
  • Estadística aplicada en un entorno universitario o de investigación. Los codificadores que realizan investigaciones -que pueden incluir ensayos clínicos para compañías farmacéuticas o utilizar algoritmos para que el proceso judicial sea mucho menos sesgado- es muy probable que utilicen el lenguaje de programación R. Sin embargo, hoy en día esta tendencia se está desplazando hacia el uso de Python simplemente porque este lenguaje se ha extendido en términos de tareas de aprendizaje automático. Pero considerando que es más fácil para los programadores de R usar algo que ya conocen, la solución recomendada sería ggplot ya que puede funcionar como un front-end en Python para la librería de visualización del lenguaje R ggplot.

 

Solo la punta del iceberg

Por supuesto, esto es sólo la punta del iceberg cuando se trata de librerías de visualización de datos, es un campo que evoluciona constantemente y se vuelve más matizado con cada día que pasa. El hecho es que hemos superado con creces el punto en el que el enfoque de "una sola talla para todos" puede aplicarse a cada proyecto. Hoy en día, si los codificadores no están dispuestos a ir más allá de una biblioteca, sin duda sería un descuido debilitante.

 

Matplotlib

Decir que matplotlib es el O.G. de las librerias de visualización de datos en Python no sería una exageración. A pesar de tener más de una década de antigüedad (la primera versión se desarrolló en los años ochenta), este lenguaje de programación propietario está considerado como una de las bibliotecas más solicitadas por la comunidad de codificadores para la elaboración de gráficos. Fue diseñada para parecerse mucho a MATLAB, permitiendo a los programadores apilar gráficos ya sea poniendo múltiples métricas en un solo gráfico o múltiples gráficos en una sola página.

Debido a que matplotlib fue la librería inicial de visualización de datos en Python, muchas otras librerías están construidas sobre ella o están diseñadas para trabajar en conjunto con otras librerías. Esto significa que puedes pasarle cualquier tipo de datos de tipo matriz Python - como pandas DataFrames o matrices Numpy - sin tener que convertirlos a otro formato.

Mientras que matplotlib hace el trabajo maravillosamente cuando se trata de obtener un sentido de los datos, no es particularmente útil para crear gráficos de calidad de publicación. O como Chris Moffitt lo pone en su visión general de las herramientas de visualización de Python, matplotlib "es extremadamente poderoso pero con ese poder viene la complejidad".

Aquí hay algunos gráficos de muestra creados con matplotlib:

 

Gráfico de líneas

Este código traza una matriz Numpy de 1 a 5 en incrementos de 0,25.

import matplotlib.pyplot as plt 
import numpy as np 
 y = np.arange(1,5,0.25) 
 plt.plot(y, 'go')


Aquí hay más ejemplos tomados de la documentación de matplotlib:

 

Gráfico de barras apiladas

Apilar una métrica sobre otra permite que un solo gráfico muestre más datos. Por ejemplo, aquí vemos las puntuaciones desglosadas por grupo y luego por sexo.

 

Gráfico de líneas de colores

Este es un ejemplo de dos gráficos colocados en un solo lienzo. El color se utiliza para facilitar la visualización de los puntos de datos que están en un cierto rango.

 

Seaborn

Aprovechando el poder de matplotlib, Seaborn es capaz de crear gráficos vívidos y estilizados en sólo unas pocas líneas de código. De hecho, una de las ventajas de usar esta biblioteca es la amplia elección de estilos y paletas de colores predeterminados, permitiendo a los codificadores crear diseños de gráficos estéticamente agradables y, lo más importante, completos.

Los científicos de datos a menudo usan la Matriz de Correlación de Seaborn como un primer paso en la inspección de los datos. Hemos mencionado antes que esta matriz hace un trabajo excelente en la búsqueda de correlaciones entre los elementos inspeccionados. Si los datos no están correlacionados de ninguna manera, el científico de datos puede abandonar fácilmente su supuesto y adoptar otro enfoque, ahorrando drásticamente tiempo (y nervios). Sin embargo, hay que tener en cuenta que el Seaborn se integra bien con los pandas.

Ahora bien, en el cuadro que figura a continuación, observa la correlación entre cada par de puntos que se encuentran en las tres variables a, b y c.

Ahora, echa un vistazo al gráfico y a la leyenda de la derecha. Podemos ver que los pares en el medio son 100% (color canela) porque cada valor está perfectamente correlacionado consigo mismo. Pero si miramos a (b,c), podemos ver que la correlación entre b y c es del 98%.

 

Código para generación de tráfico

Abajo está el código que usamos para generar el gráfico. Como pueden ver, el código relacionado con el gráfico es corto, lo que ilustra que Seaborn en realidad hace todo el trabajo complicado.

import numpy as np 
import seaborn as sns 
import matplotlib as plt 
import pandas as pd 
 x = np.arange(10) 
 y = np.arange(10) 
 z= np.multiply(x,y) 
 a=np.array([x,y,z]) 
 b=a.reshape(10,3) 
 data = pd.DataFrame(b, columns=['a', 'b', 'c']) 
 corr = data.corr() 
 sns.heatmap(corr,             
                 xticklabels=corr.columns.values,             
                 yticklabels=corr.columns.values)

 

Bokeh

Lo que distingue a Bokeh del resto de las librerías python es que permite una visualización dinámica, que es soportada por los navegadores modernos. Debido a que renderiza los gráficos usando JS y HTML, puede ser usado para aplicaciones web con un nivel muy alto de interactividad.

Bokeh también está disponible en lenguaje R y Scala; sin embargo, su contraparte en Python se utiliza más comúnmente que otras. Otra cosa que vale la pena mencionar es que Bokeh se diferencia de la mayoría de las librerías python en que no depende de matplotlib.

El concepto principal de esta librería de visualización de datos es que los gráficos se construyen una capa a la vez. Comenzamos creando una figura, y luego añadimos elementos -también llamados glifos- dependiendo del uso deseado: líneas, círculos, barras, arcos, parches, etc. (Para los que han usado ggplot, la idea de los glifos es esencialmente la misma que la de las geomallas, que también se añaden a un gráfico una capa a la vez).

También hay que tener en cuenta que Python no puede hacer nada de eso en un navegador. Si quieres crear gráficos con Python, necesitas un entorno que tenga tanto un intérprete de Python como soporte de gráficos (algo con lo que los cuadernos de Zeppelin o Jupyter pueden ayudar). Aquí tienes un ejemplo de un gráfico de Bokeh:

Una imagen en 3D de un avión tomada de su sitio web. Si haces clic en el enlace verás que la imagen se está moviendo realmente, eso, cortesía de JavaScript.

 

Geoplotlib

Geoplotlib es una caja de herramientas de Python de código abierto que sirve para visualizar datos geográficos. Su librería apoya el desarrollo de visualizaciones interactivas aceleradas por hardware y proporciona implementaciones de mapas de puntos, estimación de la densidad del núcleo, gráficos espaciales, teselación de Voronoi, archivos de forma y muchas otras visualizaciones espaciales.

La cartografía es un campo especializado, que requiere que se entiendan los conceptos, como el casco convexo, la triangulación de Delaunay, la proyección y GeoJSON.

El formato GeoJSON fue desarrollado por el Servicio Geológico de los Estados Unidos, que localiza elementos con longitud, latitud, polígonos, etc.

Aquí hay algunos datos de muestra, de GeoJSON.org.

{   
  "type": "Feature",   
  "geometry": {    
    "type": "Point",     
    "coordinates": [125.6, 10.1]   
   },   
   "properties": {     
     "name": "Dinagat Islands"  
     } 
 } 

Los gráficos Geoplotlib incluyen características comunes al trabajo con mapas. Esto incluye combinaciones de teclado como la panorámica y la adición o eliminación de capas.

Aquí hay un ejemplo tomado del repositorio de código Geoplotlib GitHub.

 

Ggplot

Basado en la Gramática de los Gráficos, ggplot es un sistema para la comprensión de los gráficos que se componen de varias capas que juntas crean una trama completa. Su poderoso modelo de gráficos hace que todo el proceso de construcción de gráficos complejos de varias capas sea mucho más simple.

De manera similar a Seaborn, esta librería también puede construirse sobre matplotlib, mejorando el atractivo visual de las visualizaciones de matplotlib de una manera simple pero sofisticada. Se diferencia de Seaborn en que es un puerto de ggplot2 para R.

Ahora, R es el lenguaje que la mayoría de los científicos de datos en la academia e investigación usaban antes de TensorFlow. Así que ggplot está diseñado para que los programadores de R puedan usar lo que les resulte más cómodo. Aunque parte del API no es pitónico, dado el objetivo, puede servir como una librería de visualización de datos muy potente, no obstante.

 

Plotly

Lo que hace que Plotly sea único es la capacidad de responder al paso del ratón, hacer clic con el cursor y actualizar los datos. Pero teniendo en cuenta que Python no se ejecuta en un navegador, es necesario crear tanto gráficos como Javascript.

Tendrás que seguir los documentos para configurar la clave de la API. Una vez que lo hagas, todo parece funcionar a la perfección. La única advertencia es que todo lo que estás haciendo será publicado en la web, así que asegúrate de no tener problemas con ese prospecto.

Otra cosa que vale la pena mencionar es que Plotly y Bokeh son competidores. La principal crítica de Plotly es que tienes que convertir los datos en diccionarios. Eso explica Express, un front-end de Plotly diseñado para facilitar el trabajo con Panda DataFrames.

 

Sample Chart

Aquí hay un perfecto caso de uso que muestra por qué necesitas JavaScript. Encontrará un gráfico financiero cuyos puntos de datos están demasiado cerca para mostrar toda la información relevante. Así que lo más probable es que necesites un pop-up para mostrar más información en cada punto de datos. Cuando mueves el cursor a través del gráfico, aparece un cuadro de anotación para mostrar esos detalles perspicaces.

Para terminar:

Para ser sincero, trazar datos y crear visualizaciones en el vasto ecosistema de Python es un clásico escenario de buenas y malas noticias. La buena noticia es que hay una abundancia de opciones. La mala noticia es que hay una abundancia de opciones.

Intentar averiguar qué librería funcionará mejor depende enteramente de lo que se intenta lograr. En la mayoría de los casos, sólo necesitas asignar un tiempo de prueba y ver si las características de la herramienta se ajustan a los requisitos del proyecto. Recuerda que aquí no hay ganadores ni perdedores definitivos, sólo varias posibilidades de visualización que pueden no encajar en algunos casos pero que podrían hacer magia en otros.

 

Aquí están algunas de las principales claves:

  • Matplotlib es como la madre de todas las librerías Python. Sirve como una excelente base, permitiendo a los codificadores "envolver" otras herramientas sobre ella.
  • Seaborn puede ser capaz de soportar algunos enfoques de visualización más complejos, pero aun así requiere el conocimiento de matplotlib para afinar las cosas.
  • Bokeh es una herramienta robusta para configurar su propio servidor de visualización, pero tal vez un poco exagerado cuando se crean escenarios simples.
  • Geoplotlib hará el trabajo si necesitas visualizar datos geográficos.
  • Ggplot es muy prometedor, pero todavía tiene mucho que crecer.
  • Plotly genera los gráficos más interactivos, que pueden ser guardados fuera de línea para crear vívidas visualizaciones basadas en la web.

Si nos hemos perdido algo o hay otras librerías python de visualización de datos que valen la pena mencionar, háganoslo saber y con gusto ampliaremos nuestra revisión con sus sugerencias.

« Volver al Blog

Obtener mi regalo ahora