Cuatro Bibliotecas de Visualización que se Integran Perfectamente con DataFrames de Pandas

Introducción

Hace algunas semanas, publiqué un artículo sobre cómo utilizar Pandas para crear visualizaciones directamente desde sus DataFrames sin necesidad de importar librerías de visualización. De forma predeterminada, Pandas utiliza Matplotlib como "motor de gráficos".

Cuando Pandas es suficiente para la visualización de datos, no necesitas Matplotlib

En realidad, el motor de gráficos de Pandas funciona como una API que otras librerías pueden implementar. Por lo tanto, además de Matplotlib, existen muchas otras librerías impresionantes que pueden configurarce como motor. Esto significa que todas pueden ser utilizadas como herramientas de visualización cuando graficamos directamente desde los DataFrames de Pandas.

En este artículo, preesntaré cuatro librerías que implementan la API del motor de gráficos de Pandas. Por lo tanto, pueden garficar directamente desde un DataFrame sin necesidad de importarlas.

0. Preparación

Como se mencionó anteriormente, algunas librerías de visualización de datos en Python se integran aún mejor con los DataFrames de Pandas. Generalmente, soportan el motor de gráficos de Pandas. Podemos establecer la siguiente opción para cambiar la librería de visualización del motor:

pd.options.plotting.backend = "<nombre_de_la_librería>"

Antes de demostrar estas librerías, importemos el módulo de Pandas y definamos un DataFrame simple:

import pandas as pd

# DataFrame de ejemplo
datos = pd.DataFrame({
    'Identificador': range(15),
    'Medicion': [x*1.5 for x in range(15)]
})

1. Matplotlib

Por defecto, el motor de gráficos de Pandas es Matplotlib. Esta es la razón por la que podemos graficar DataFrames directamente con Matplotlib.

datos.plot(x='Identificador', y='Medicion', kind='line', title='matplotlib como motor');

Matplotlib no necesita una introducción detallada. Se considera una de las herramientas fundamentales para la visualización de datos en Python. Su API es relativamente de bajo nivel, lo que permite muchas personalizaciones, pero a menudo requiere más esfuerzo para lograr los resultados deseados.

2. Plotly

Esta es mi librería favorita para la visualización de datos en Python. Soporta directamente el motor de gráficos de Pandas. Si aún no la has instalado en tu entorno, asegúrate de hacerlo antes de usarla:

pip install plotly

Luego, simplemente configuramos la opción en plotly. Incluso no necesitamos importarla antes de usarla:

pd.options.plotting.backend = "plotly"

datos.plot(x='Identificador', y='Medicion', title='Plotly como motor')

La característica clave de Plotly es su interactividad. Además de gestos de selección y zoom, hay muchas otras funciones por descubrir.

Además, en mi opinión, Plotly es una de las librerías de visualización más fáciles de usar en Python. Soporta una gran cantidad de tipos de visualización y proporciona una API de alto nivel. La mayoría de las veces, solo necesitamos proporcionar algunos parámetros para obtener gráficos impresionantes. Si nunca la has probado, la recomiendo encarecidamente.

3. hvPlot

La librería hvPlot puede ser menos conocida. Sin embargo, he descubierto que es muy competitiva con Plotly. También es muy interactiva. Por supuesto, necesitamos instalar esta librería antes de poder usarla:

pip install hvplot

De manera similar, como hvPlot soporta el motor de gráficos de Pandas, no necesitamos importarla. El siguiente código puede graficar directamente desde un DataFrame de Pandas:

pd.options.plotting.backend = "hvplot"

datos.plot.line(x='Identificador', y='Medicion', title='hvPlot como motor')

Además de df.plot.line, hvPlot soporta la mayoría de los tipos de gráficos comunes como diagramas de dispersión, barras, histogramas, diagramas de caja e incluso diagramas de violín. Sin embargo, para "habilitar" más tipos de gráficos como el diagrama de violín, necesitamos importar algunos métodos de hvPlot:

import hvplot.pandas

El fragmento de código completo sería el siguiente. Ten en cuenta que la sintaxis cambia de df.plot a df.hvplot para utilizar los métodos extendidos de hvPlot:

import numpy as np
import hvplot.pandas

datos = pd.DataFrame({
    'Grupo': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
    'Valores': np.random.randn(10)
})

diagrama_violin = datos.hvplot.violin(y='Valores', by='Grupo')
diagrama_violin

4. Bokeh

Bokeh es una de las librerías de visualización más populares y potentes en Python. Está diseñada específicamente para gráficos interactivos y es conocida por sus hermosas presentaciones. Veamos cómo habilitarla como motor de gráficos de Pandas.

Por supuesto, si aún no la has instalado, ejecuta pip para instalarla:

pip install bokeh

Es importante destacar que la versión más reciente de Pandas (v2.1.4) parece no ser compatible con la versión más reciente de Bokeh (v3.5.1). Para evitar conflictos al usar Bokeh como motor de gráficos de Pandas, podemos reducir su versión a Bokeh (v2.4.3) de la siguiente manera:

pip install bokeh==2.4.3

Esta es la razón por la que, a pesar de ser una librería excelente, no se recomienda especialmente. Esperemos que este problema de compatibilidad se resuelva en el futuro.

Después de instalar la librería, el código para graficar el DataFrame es similar al de las otras librerías:

pd.set_option('plotting.backend', 'pandas_bokeh')

datos.plot_bokeh(x="Identificador", y="Medicion", kind="line", title="Bokeh como motor")

Durante la investigación para hacer que funcione, descubrí que el comportamiento puede variar en diferentes entornos. Si encuentras que el gráfico no se muestra, es posible que necesites solicitar explícitamente a Bokeh que genere la salida en el entorno del notebook. En este caso, debemos importar Bokeh:

import pandas_bokeh
pandas_bokeh.output_notebook()

pd.set_option('plotting.backend', 'pandas_bokeh')
datos.plot_bokeh(x="Identificador", y="Medicion", kind="line", title="Bokeh como motor")

Etiquetas: pandas visualizacion-de-datos Matplotlib plotly hvplot

Publicado el 7-7 05:49