# graficos-con-python
Gráficos con Python
Volver a la portada del cursoGrá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
huecon 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.