Confundido sobre qué herramienta de visualización usar? Desglosé los pros y los contras de cada biblioteca para ti
Foto de oxana v en Unsplash
Esta guía ha sido actualizada con algunos ejemplos más profundos. Puedes encontrar la última versión del blog aquí.
Si estás empezando con la visualización en Python, puede que te sientas abrumado con la cantidad de librerías y ejemplos:
Matplotlib
Seaborn
Plotly
Bokeh
Altair
Folium
Si tienes un DataFrame esperando a ser visualizado, ¿cuál deberías elegir? Algunas bibliotecas pueden ser mejores en casos específicos que las otras. Este artículo mostrará los pros y los contras de cada una. Al final de este artículo, usted debe ser capaz de distinguir las diferentes características de cada biblioteca y tener un tiempo más fácil la elección de la óptima.
Vamos a hacer esto mediante el uso de un conjunto de datos de muestra y la exploración utilizando cada biblioteca, centrándose en algunos atributos específicos:
Interactividad
¿Quieres que tu visualización sea interactiva?
Algunas librerías, como Matplotlib, presentan las visualizaciones como imágenes; por lo tanto, son buenas para explicar conceptos (en un documento, una presentación o una presentación).
Por otro lado, librerías como Altair, Bokeh y Plotly le permiten crear gráficos interactivos en los que sus usuarios pueden sumergirse y explorar por sí mismos
Sintaxis y flexibilidad
¿Cómo difiere la sintaxis de cada librería? Las bibliotecas de nivel inferior, como Matplotlib, le permiten hacer todo lo que pueda desear, pero a costa de una API más compleja. Algunas bibliotecas, como Altair, son muy declarativas, lo que facilita el mapeo de sus datos.
Tipo de datos y visualización
¿Trabaja con un caso de uso especializado, como un gráfico geográfico, con datos de gran tamaño, o utiliza un tipo de gráfico que sólo es soportado por una determinada biblioteca?
Datos
Para facilitar la comparación, en este artículo utilizaré los datos reales que raspo de Github:
Voy a incrustar las visualizaciones de cada librería utilizando Datapane, que es un framework y API de Python para publicar y compartir informes de Python. Si quieres ver más ejemplos del mundo real, echa un vistazo a los informes aportados por los usuarios en la galería de Datapane.
Para seguir el artículo, puedes descargar el archivo csv desde aquí u obtener los datos directamente desde el Blob de Datapane.
import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()
Recuerda iniciar sesión en Datapane con tu token de antemano si quieres usar el Blob. Esto debería tomar menos de 1 minuto
Matplotlib
Matplotlib es probablemente la biblioteca de Python más común para la visualización de datos. Todo el mundo que está interesado en la ciencia de datos probablemente ha utilizado Matplotlib al menos una vez.
Pros
Fácil de ver la propiedad de los datos
Cuando se analizan los datos, echar un vistazo rápido a la distribución puede ser ideal.
Por ejemplo, si quiero echar un vistazo rápido a la distribución de los 100 usuarios con más seguidores, usar Matplotlib suele ser suficiente.
Aunque el eje x de Matplotlib no se vea bien, tenemos una mejor comprensión de la distribución de los datos mirando el gráfico.
2. Puede trazar cualquier cosa
Matplotlib es muy versátil, lo que significa que puede trazar cualquier tipo de gráfico que puedas imaginar. El sitio web de Matplotlib contiene una documentación muy completa y varios gráficos en la galería, lo que hace que sea fácil encontrar tutoriales para cualquier gráfico loco que se pueda imaginar.
Como un texto como este:
Cons
Matplotlib puede trazar cualquier cosa, pero puede ser complejo trazar gráficos no básicos o ajustar los gráficos para que se vean bien.
Aunque el trazado es lo suficientemente bueno para visualizar la distribución, si quieres representar tus datos a otros, tendrás que arreglar el eje x, el eje y, lo que lleva mucho esfuerzo. Esto se debe a que Matplotlib tiene una interfaz de muy bajo nivel.
Toma de contacto: Matplotlib puede graficar cualquier cosa, pero los gráficos complejos podrían tomar mucho más códigos que otras bibliotecas
Seaborn es una biblioteca de visualización de datos de Python basada en Matplotlib. Proporciona una envoltura de alto nivel en la biblioteca que hace que sea más fácil de usar.
Pros
Menos código
Proporciona una interfaz de alto nivel para parcelas similares. En otra palabra, seaborn proporciona en general gráficos similares a los de matplotlib, pero con menos código y un diseño más bonito.
Utilizamos los mismos datos que antes para dibujar un mapa de calor similar del gráfico.
¡Obtenemos un mejor mapa de calor sin necesidad de establecer la etiqueta x e y!
Hacer más bonitos los gráficos de uso común
Mucha gente opta por seaborn cuando se trata de gráficos populares como el gráfico de barras, el gráfico de caja, el gráfico de recuento, los histogramas, etc, no sólo porque podrían ser creados con menos código, sino también porque se ven mucho más bonitos. Como podemos ver en nuestro ejemplo anterior, los colores también se ven mejor que el predeterminado de Matplotlib.
Cons
Seaborn está más restringido y no tiene una colección tan amplia como matplotlib
Takeaway: Seaborn es una versión de mayor nivel de Matplotlib. A pesar de que no tiene una amplia colección como Matplotlib, seaborn hace que los gráficos populares como el gráfico de barras, el gráfico de caja, el mapa de calor, etc se vean bonitos en menos código.
Plotly
La biblioteca de gráficos de Python de Plotly hace que sea fácil crear gráficos interactivos de calidad de publicación. También puede crear gráficos similares a los de Matplotlib y seaborn, como gráficos de líneas, gráficos de dispersión, gráficos de áreas, gráficos de barras, etc.
Pros
Como R
Si eres un fanático de los gráficos en R y echas de menos sus características al cambiar a Python, ¡Plotly te da la misma calidad de gráficos usando Python!
Mi favorito es Plotly Express porque hace que sea realmente fácil y es aún más rápido para crear grandes parcelas de una sola línea de Python.
Fácil de crear parcelas interactivas
Plotly también hace que sea fácil de crear parcelas interactivas. Los gráficos interactivos no sólo son bonitos, sino que también facilitan a los espectadores un examen más detallado de cada punto de datos.
¿Recuerdas el gráfico de barras que tenemos antes con matplotlib? Vamos a ver cómo resulta con Plotly
Con más o menos las mismas líneas de código, producimos un gráfico interactivo que podríamos pasar el ratón por encima de cada barra para ver qué usuario y el número de seguidores representa la barra. Esto significa que el consumidor de su visualización puede explorarla por sí mismo.
3. Tramas complejas hechas fáciles
Con Plotly, algunas tramas que normalmente son un reto para crear pueden ser creadas fácilmente.
Por ejemplo, si quisiéramos crear un mapa para visualizar las ubicaciones de los usuarios de Github, podemos encontrar sus latitudes y longitudes como se muestra aquí, y luego usar esos datos para localizar las ubicaciones de los usuarios en el mapa así
Con unas pocas líneas de código, las ubicaciones de todos los usuarios se representan bellamente en un mapa. El color de las burbujas representa el número de bifurcaciones y el tamaño representa el número total de estrellas
Takeaway: Plotly es genial para crear gráficos interactivos y de calidad de publicación con pocas líneas de código.
Altair
Altair es una biblioteca de visualización estadística declarativa para Python basada en vega-lite, lo que la hace ideal para gráficos que requieren mucha transformación estadística.
Pros
1. Gramática de visualización simple
La gramática utilizada para crear la visualización es fácil de entender. Sólo necesita mencionar los enlaces entre las columnas de datos a los canales de codificación y el resto de trazado se maneja automáticamente. Esto suena abstracto pero es una gran cosa cuando se trabaja con datos, y hace que la visualización de la información sea realmente rápida e intuitiva.
Por ejemplo, con los datos titánicos de arriba, nos gustaría contar el número de personas en cada clase, todo lo que necesitamos es usar count()
en el eje y
2. Fácil de transformar los datos
Altair también hace que sea realmente fácil transformar los datos mientras se crea el gráfico
Por ejemplo, si quisiéramos encontrar la edad media de cada sexo en el titanic, en lugar de hacer la transformación por adelantado como Plotly, podríamos realizar la transformación dentro del código para crear el gráfico.
También podríamos asegurarnos de que la clase es un dato nominal (datos categóricos sin ningún orden) utilizando :N
o asegurarnos de que la media_edad es un dato cuantitativo (medidas de valores como números) utilizando :Q
Vea una lista completa de transformaciones de datos aquí
3. Facilidad para enlazar gráficos
Altair también le permite hacer algunos enlaces impresionantes entre los gráficos, como el uso de una selección de intervalo para filtrar el contenido de un histograma adjunto.
Por ejemplo, si queremos visualizar el número de personas de cada clase dentro del intervalo que seleccionamos en un gráfico de puntos entre la edad y la tarifa, podríamos hacer algo así.
Al arrastrar el ratón para seleccionar el intervalo dentro del gráfico de dispersión, podríamos ver el cambio en el gráfico de barras de abajo. Cuando se combina con las transformaciones y los cálculos de antes, esto significa que puede crear algunos gráficos extremadamente interactivos que hacen cálculos sobre la marcha – ¡sin siquiera requerir un servidor Python en funcionamiento!
Cons
A menos que especifique un estilo personalizado, los gráficos simples como el gráfico de barras no se ven tan estilizados como seaborn o Plotly. Altair tampoco recomienda conjuntos de datos con más de 5000 muestras y, en su lugar, recomienda que agregue sus datos antes de la visualización.
Toma de contacto: Altair es ideal para gráficos sofisticados para mostrar estadísticas. Altair no puede manejar datos por encima de 5000 muestras y algunos gráficos simples no se ven tan estilizados en comparación con Plotly o Seaborn.
Bokeh
Bokeh es una biblioteca de visualización interactiva flexible que se dirige a los navegadores web para su representación.
Pros
Versión interactiva de Matplotlib
Si hacemos un ranking entre las bibliotecas de visualización interactiva anteriores, Bokeh probablemente ocupará el primer lugar en cuanto a la similitud con Matplotlib.
Matplotlib puede crear cualquier gráfico porque es una biblioteca de visualización de bajo nivel. Bokeh puede ser utilizado tanto como una interfaz de alto nivel o de bajo nivel; por lo tanto, puede crear muchos gráficos sofisticados que Matplotlib crea pero con menos líneas de código y mayor resolución.
Por ejemplo, el gráfico circular de Matplotlib
También podría crearse con mejor resolución y más utilidad usando Bokeh
2. Enlace entre parcelas
Bokeh también facilita mucho el enlace entre parcelas. El cambio aplicado en una parcela se aplicará a otra parcela con una variable similar.
Por ejemplo, si creamos 3 gráficos uno al lado del otro y queremos observar su relación, podríamos utilizar el cepillado vinculado
ColumnDataSource
permite compartir los datos entre las parcelas. Así, cuando aplicamos el cambio a una parcela, las otras parcelas también se modifican en consecuencia.
Cons
Debido a que Bokeh es una librería que en cierto modo tiene una interfaz de nivel medio, suele requerir menos código que Matplotlib pero requiere más código para producir la misma parcela que Seaborn, Altair o Plotly.
Por ejemplo, para crear el mismo gráfico de recuento utilizando datos titánicos, además de la necesidad de transformar los datos de antemano, también tenemos que establecer el ancho de la barra y el color si queremos que el gráfico se vea bien
Si no añadimos el ancho para el gráfico de barras, el gráfico se vería así
Así, tenemos que ajustar manualmente las dimensiones para hacer el gráfico más bonito
Si quieres crear un bonito gráfico de barras en menos código, este podría ser el inconveniente de Bokeh comparado con otras librerías
Toma de contacto: Bokeh es la única biblioteca cuya interfaz va de menos a más, lo que facilita la producción de gráficos versátiles y elegantes. Esto, sin embargo, viene con el coste de que generalmente se necesita más código para Bokeh para crear las parcelas con una calidad similar a otras bibliotecas.
Folium
Folium hace que sea fácil de visualizar los datos en un mapa de folletos interactivos. La librería tiene una serie de tilesets incorporados de OpenStreetMap, Mapbox y Stamen
Pros
Fácil de crear un mapa con marcadores
Aunque Plotly, Altair, y Bokeh también nos permiten crear mapas, Folium utiliza un callejero abierto para dar una sensación más cercana a un mapa de Google con un código mínimo
¿Recuerdas cómo creamos el mapa para visualizar las ubicaciones de los usuarios de Github utilizando Plotly? Podríamos hacer que el mapa se vea aún más bonito con Folium
La ubicación inicial en Brooklyn, NY. Aleja el zoom para ver otras ubicaciones en el mapa. Con algunas líneas de código, hemos creado un mapa real que muestra las ubicaciones de los usuarios.
2. Añadir ubicación potencial
Si queremos añadir ubicaciones potenciales de otros usuarios, Folium nos lo pone fácil permitiendo a los usuarios añadir marcadores
Pulsa en el mapa para ver una nueva ubicación generada justo donde pulsas.
3. Plugins
Folium tiene un número de plugins que puedes usar con tu mapa – incluyendo un plugin para Altair. Qué pasa si queremos ver el mapa de calor del total de estrellas de los usuarios de Github en el mundo para identificar dónde hay un alto número de usuarios top de Github con un alto número del total de estrellas? El mapa de calor en los plugins de Folium le permite hacer precisamente eso.
Amplíe la imagen para ver la imagen completa del mapa de calor.
Takeaway: Folium permite crear un mapa interactivo con pocas líneas de código. Te da una experiencia cercana a la de un mapa de Google.
Conclusión
¡Felicidades! Usted acaba de aprender acerca de seis diferentes herramientas de visualización para su visualización. Espero que este artículo le da una idea de lo que cada biblioteca hace y cuándo utilizar qué. Comprender las características clave de cada biblioteca hará que sea más rápido para usted para tirar de la biblioteca correcta como usted necesita.
Si usted todavía está confundido acerca de qué biblioteca a utilizar para sus datos, sólo tiene que elegir uno que usted encuentra lo suficientemente bueno. Entonces, si el código es demasiado largo o el gráfico no resulta tan bueno como usted imagina, simplemente inténtelo con otra biblioteca.
Siéntase libre de bifurcar y jugar con el código de este artículo en este repositorio de Github.
Me gusta escribir sobre conceptos básicos de ciencia de datos y jugar con diferentes algoritmos y herramientas de ciencia de datos. Puedes conectar conmigo en LinkedIn y Twitter.
Está en este repo si quieres ver los códigos de todos los artículos que he escrito. Sígueme en Medium para estar informado con mis últimos artículos de ciencia de datos como estos: