Seaborn es una biblioteca de visualización de datos para Python que está basada en Matplotlib. Seaborn proporciona una interfaz de alto nivel para crear gráficos estadísticos atractivos y informativos. Esta biblioteca es muy popular en la comunidad de ciencia de datos y análisis de datos debido a su facilidad de uso y la calidad de las visualizaciones que produce.
Seaborn está diseñado para trabajar especialmente bien con estructuras de datos de Pandas y se integra de manera natural con los DataFrames de Pandas. Esta biblioteca simplifica la creación de gráficos complejos y atractivos para explorar y comunicar patrones, tendencias y relaciones en los datos.
Algunas de las características y ventajas de Seaborn incluyen:
Estilos preestablecidos: Seaborn proporciona una variedad de estilos de gráficos predefinidos que permiten personalizar la apariencia de las visualizaciones con solo una línea de código.
Tipos de gráficos estadísticos: Seaborn ofrece una amplia gama de tipos de gráficos estadísticos, incluyendo gráficos de barras, histogramas, diagramas de dispersión, gráficos de caja y bigotes, diagramas de violín, entre otros.
Funciones de agregación y agrupamiento: Seaborn permite realizar operaciones de agregación y agrupamiento directamente en los datos para simplificar la creación de gráficos estadísticos complejos.
Colores atractivos: Seaborn utiliza paletas de colores cuidadosamente diseñadas para mejorar la apariencia de las visualizaciones y facilitar la interpretación de los datos.
Facilidad de uso: Seaborn ofrece una sintaxis simple y concisa para crear visualizaciones, lo que permite a los usuarios enfocarse en el análisis de datos en lugar de en los detalles de la visualización.
Ejemplo¶
Mostraremos un ejemplo completo de cómo utilizar seaborn
con el conjunto de datos "iris":
# Importa las bibliotecas necesarias
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("whitegrid")
# Cargar el conjunto de datos iris desde la biblioteca Seaborn
url='https://drive.google.com/file/d/1xj1ynrjuZrEKuoCTtD603UyzqCw_byfD/view?usp=drive_link'
url='https://drive.google.com/uc?id=' + url.split('/')[-2]
iris = pd.read_csv(url, sep="," )
iris.head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
# Crear un gráfico de barra para mostrar el promedio de longitud del sépalo por especie
sns.barplot(data=iris, x='species', y='sepal_length')
plt.title('Promedio de Longitud del Sépalo por Especie')
plt.xlabel('Especie')
plt.ylabel('Promedio de Longitud del Sépalo')
plt.show()
# Crear un histograma para la longitud del sépalo (sepal_length)
sns.histplot(data=iris, x='sepal_length', kde=True)
plt.title('Histograma de la Longitud del Sépalo')
plt.xlabel('Longitud del Sépalo')
plt.ylabel('Frecuencia')
plt.show()
# Crear un gráfico de línea para mostrar la variación de la longitud del pétalo a lo largo del índice
sns.lineplot(data=iris, x=iris.index, y='petal_length', hue='species')
plt.title('Variación de la Longitud del Pétalo')
plt.xlabel('Índice')
plt.ylabel('Longitud del Pétalo')
plt.show()
# Crear un diagrama de dispersión para comparar la longitud del sépalo y el ancho del sépalo
sns.scatterplot(data=iris, x='sepal_length', y='sepal_width', hue='species')
plt.title('Diagrama de Dispersión: Longitud del Sépalo vs. Ancho del Sépalo')
plt.xlabel('Longitud del Sépalo')
plt.ylabel('Ancho del Sépalo')
plt.legend(title='Especie', loc='upper left')
plt.show()
# Crear un diagrama de caja y bigotes para visualizar la distribución de la longitud del pétalo por especie
sns.boxplot(data=iris, x='species', y='petal_length')
plt.title('Diagrama de Caja y Bigotes: Longitud del Pétalo por Especie')
plt.xlabel('Especie')
plt.ylabel('Longitud del Pétalo')
plt.show()
# Crear un gráfico de violín para comparar la distribución de la longitud del pétalo por especie
sns.violinplot(data=iris, x='species', y='petal_length', inner='quart')
plt.title('Gráfico de Violín: Longitud del Pétalo por Especie')
plt.xlabel('Especie')
plt.ylabel('Longitud del Pétalo')
plt.show()
# Crear un gráfico de dispersión separado para cada especie en diferentes ventanas
g = sns.FacetGrid(iris, col='species', height=4)
g.map(sns.scatterplot, 'sepal_length', 'sepal_width', alpha=0.7)
g.set_axis_labels('Longitud del Sépalo', 'Ancho del Sépalo')
g.set_titles(col_template='{col_name}')
plt.show()