Saltar al contenido

# graficos-con-python

Gráficos con Python

Volver a la portada del curso
Notebook

Gráficos Estadísticos con Seaborn

Sección 3 · Visualización con Seaborn

Gráficos estadísticos con Seaborn

Seaborn está construido sobre Matplotlib y se especializa en gráficos estadísticos. Su gran ventaja es que trabaja directamente con tablas de pandas: le dices qué columna va en cada eje y qué columna define los colores, y Seaborn se encarga de agrupar, calcular y dibujar. En este ejercicio explorarás un conjunto de datos real con los gráficos estadísticos más usados.

Los datos: el conjunto iris

Usarás el conjunto iris, que viene incluido en scikit-learn y no requiere descargar nada. Tiene 150 flores de tres especies con cuatro medidas cada una. Primero lo conviertes en un DataFrame con nombres de columnas cómodos:

from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
df = iris.frame.copy()
df.columns = ["sepal_largo", "sepal_ancho", "petalo_largo", "petalo_ancho", "target"]
df["especie"] = iris.target_names[iris.target]
print(df.head())
print(df["especie"].value_counts())

Distribuciones: histogramas y densidad

Para entender cómo se reparten los valores de una variable se usa el histograma. Con hue separas los grupos por color y con kde=True agregas una curva de densidad suavizada que facilita comparar formas.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
df = iris.frame.copy()
df.columns = ["sepal_largo", "sepal_ancho", "petalo_largo", "petalo_ancho", "target"]
df["especie"] = iris.target_names[iris.target]

sns.set_theme(style="whitegrid")
fig, ax = plt.subplots(figsize=(8, 4))
sns.histplot(data=df, x="petalo_largo", hue="especie", kde=True, ax=ax)
ax.set_title("Largo del pétalo por especie")
fig.savefig("histograma.png", dpi=150)

Comparar grupos: cajas y violines

El diagrama de caja resume cada grupo con su mediana, sus cuartiles y los valores atípicos. El violín muestra además la forma completa de la distribución. Son la forma más directa de responder a la pregunta: ¿qué grupo tiene valores más altos y qué tan dispersos están?

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
df = iris.frame.copy()
df.columns = ["sepal_largo", "sepal_ancho", "petalo_largo", "petalo_ancho", "target"]
df["especie"] = iris.target_names[iris.target]

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
sns.boxplot(data=df, x="especie", y="petalo_largo", ax=ax1)
sns.violinplot(data=df, x="especie", y="petalo_largo", ax=ax2)
fig.tight_layout()
fig.savefig("cajas_violines.png", dpi=150)

Relaciones entre variables

El gráfico de dispersión con hue muestra de un vistazo si los grupos se separan. En iris, el largo y el ancho del pétalo distinguen muy bien a las tres especies.

Qué practicarás en el notebook

  • Cargar iris sin descargas y prepararlo en un DataFrame.
  • Dibujar histogramas con densidad, cajas, violines y dispersión con hue.
  • Combinar Seaborn con Matplotlib usando el parámetro ax.

Errores comunes

  • Pasar listas sueltas en lugar de un DataFrame y perder los nombres de columnas en los ejes.
  • Usar hue con una variable de muchísimos valores distintos: la leyenda se vuelve inmanejable.
  • Interpretar la curva de densidad como si fueran datos exactos; es una estimación suavizada.

Cierre

Con histogramas, cajas, violines y dispersión cubres la mayoría de los análisis exploratorios. En la siguiente lectura verás las funciones avanzadas de Seaborn que multiplican estos gráficos en cuadrículas con una sola línea.

Recursos