Visualización de datos en Python con Seaborn

Seaborn es una librería para Python que permite generar fácilmente elegantes gráficos. Seaborn esta basada en matplotlib y proporciona una interfaz de alto nivel que es realmente sencilla de aprender. Dada su gran popularidad se encuentra instalada por defecto en la distribución Anaconda.

La representación de datos es una tarea clave del análisis de datos. La utilización de una gráfica adecuada puede hacer que los resultados y conclusiones se comuniquen de una forma adecuada o no. Conocer y manejar diferentes herramientas es clave para poder seleccionar la gráfica adecua en cada ocasión. En esta entrada se va a repasar básicamente las funciones que ofrece la librería Seaborn.

Importación de los datos

Para utilizar la librería Seaborn en primer lugar se han de cargar un conjunto de datos. Para ello se puede utilizar el conjunto de datos de propinas que se encuentra en la propia librería. Para ello se ha de importar el método load_dataset y cargar el conjunto de datos 'tips'. En este conjunto de datos observar diferentes registros de propinas en los que se encuentra la factura total, la propina, el genero del cliente, si es fumador o no, el día de la semana, la franja horaria y el número de comensales. El código para necesario para la importación y los primeros 5 registros se muestran a continuación.

from seaborn import load_dataset

tips = load_dataset("tips")
tips.head()
total_billtipsexsmokerdaytimesize
16.991.01FemaleNoSunDinner2
10.341.66MaleNoSunDinner3
21.013.50MaleNoSunDinner3
23.683.31MaleNoSunDinner2
24.593.61FemaleNoSunDinner4

Gráfico de dispersión con Seaborn

Uno de los primeros gráficos que se pueden realizar con estos datos es un gráfico de dispersión. Mediante el cual se puede ver la relación entre dos variables como puede ser la factura y la propina. Este tipo de gráfico se puede obtener mediante el método lmplot al que se le ha de indicar la característica para el cada uno de los ejes y el conjunto de datos. Un ejemplo y el resultado se muestra a continuación:

from seaborn import lmplot

lmplot('total_bill', 'tip', data=tips, fit_reg=False)
Gráfico de dispersión

En el ejemplo se puede ver una opción fit_reg a la que se ha asignado el valor falso, esto es necesario dado que por defecto realiza la regresión lineal. en caso de que este sea el tipo de gráfico deseado simplemente se ha de omitir esta opción, como en el siguiente ejemplo.

lmplot('total_bill', 'tip', data=tips)
Gráfico de dispersión con intervalo de confianza

La gráfica así obtenida incluye además de los datos incluye la regresión lineal y el intervalo de confianza. El intervalo de confianza se puede fijar con la propiedad ci, pudiendo indicar el intervalo deseado o None para que se omita. Esta ultima opción es la que se muestra a continuación.

lmplot('total_bill', 'tip', data=tips, ci=None)
Gráfico de dispersión con regresión


Una característica interesante se lmplot es la posibilidad de representar más de una regresión a la vez. Para ello solamente se le ha de utilizar la propiedad hue a la que le ha de indicar el nombre de la columna de dataframe que se desea utilizar para separar. Por ejemplo, se puede comprobar si el comportamiento de los fumadores y no fumadores es diferente.

lmplot(x="total_bill", y="tip", hue="smoker", data=tips)
Múltiples regresiones con seaborn


Donde se puede apreciar el comportamiento de ambos es ligeramente diferente.

Diagrama de desinad

Los diagramas de densidad se pueden utilizar para ver cómo se comporta distribuciones de datos. En Seaborn este tipo de diamgramas se puede obtener con el método kdeplot. En el conjunto de datos de ejemplo puede ser de interés comprobar cómo se distribuye los valores de la factura, para lo que se puede utilizar el siguiente ejemplo.

from seaborn import kdeplot

kdeplot(tips.total_bill)
Diagrama de densidad

Este tipo de gráficas también se puede obtener en dos dimensiones, para lo que solamente se ha de inyectar dos columnas de datos en la función. Por ejemplo, para ver la distribución de propinas y la factura se puede conseguir con:

kdeplot(tips.tip, tips.total_bill)
Diagrama de densidad 2D

Histograma

Otra forma de representar distribuciones de datos es mediante la utilización de histogramas. Para conseguir este tipo de figuras se puede utilizar el método distplot. El cual se usa prácticamente igual que el anterior.

from seaborn import distplot

distplot(tips.total_bill)
Histograma con gráfico de densidad con seaborn

Si no se desea que el histograma incluya también el diagrama de desinad se ha de indicar asignando el valor falso a la opción kde. Esto es lo que se muestra a continuación:

distplot(tips.total_bill, kde=False)
Histograma con seaborn

Alternativamente lo que puede eliminar es el histograma configurando la opción hist a falso.

distplot(tips.total_bill, hist=False
Gráfico de densidad con seaborn

distplot permite agregar también un gráfico de alfombra, para lo que se ha inyectar el valor true a la propiedad rug. Siendo aconsejable eliminar la opción del histograma en este caso.

distplot(tips.total_bill, rug=True, hist=False)
Gráfico de alfombra con seaborn

Finalmente se puede hacer el gráfico vertical, para lo que se ha de propiedad vertical ha de ser verdadera.

distplot(tips.total_bill, vertical=True)
Histograma vertical con gráfico de densidad con seaborn

Boxplot

La dispersión de datos se puede comprobar también mediante los gráficos de tipo boxplot. Lo que se pueden obtener mediante el método boxplot, en su versión más sencilla solamente se ha de introducir la columna con los datos a representar.

from seaborn import boxplot

boxplot(tips.total_bill)
Boxplot vertical con seaborn

La orientación horizontal puede no ser del gusto de muchos usuarios, para que la representación sea vertical simplemente se ha mediante la propiedad orient.

boxplot(tips.total_bill, orient="v")
Boxplot con seaborn

Representar más de una gráfico tipo boxplot permite comparar la dispersión de los datos al poder ver los resultados de forma conjunta. Al igual que el los gráficos de es posible indicar una columna en base a la que dividir los datos de un dataframe. Este comportamiento se puede conseguir indicando un dataframe y el nombre de una columna para el eje x y otra para el y.

boxplot(x="sex", y="total_bill", data=tips)
Varios Boxplot con seaborn

De forma análoga a los gráficos de dispersión en serabon también se puede dividir las gráficas boxplot en base una tercera columna. Así es posible poder analizar el comportamiento de más de un conjunto de datos. Para ello se ha de utilizar la propiedad hue.

boxplot(x="sex", y="total_bill", hue="smoker", data=tips)
Varios Boxplot con seaborn

Violin

serabon también incluye los gráficos de tipo violín como alternativa a los boxplot. Esto se utilizan se generan con el método violinplot y su funcionamiento es exactamente igual a los anteriores. Por ejemplo, se puede reproducir el ultimo análisis realizado con esta nueva figura.

from seaborn import violinplot

violinplot(x="sex", y="total_bill", hue="smoker", data=tips)
Varios gráficos de violin con seaborn

Conclusiones

En esta entrada se han visto los tipos de gráficos más importantes que existen en la librería serabon. Una librería que permite obtener fácilmente elegantes representaciones de conjuntos de datos en Python.

El listado completo de las gráficas disponibles en Seaborn se puede consultar en la documentación de la propia librería.

Sin votos
Por favor espera...
Etiquetas:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *