Visualización avanzada de Pandas con Matplotlib / Seaborn

Pandas incluye funciones básicas de trazado; combinándolo con Matplotlib y Seaborn se pueden crear gráficos de visualización más variados.


Gráficos integrados de Pandas

Gráfico de líneas

Ejemplo

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Configurar la visualización en chino (se requiere una fuente china instalada en el sistema)
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False

# Crear datos de serie temporal
dates = pd.date_range("2024-01-01", periods=30, freq="D")
df = pd.DataFrame({
    "Fecha": dates,
    "Ventas": 100 + np.random.randn(30).cumsum(),
    "Visitantes": 50 + np.random.randn(30).cumsum() * 10
})
df = df.set_index("Fecha")

print("Datos:")
print(df.head())
print("\nDatos de trazado preparados, use plt.show() para mostrar el gráfico")

Gráfico de barras

Ejemplo

import pandas as pd
import matplotlib.pyplot as plt

# Datos categóricos
data = {
    "Producto": ["A", "B", "C", "D", "E"],
    "Ventas": [120, 150, 90, 180, 110]
}
df = pd.DataFrame(data)

# Gráfico de barras
print("Usar df.plot.bar() para dibujar un gráfico de barras")
print("\nDatos:")
print(df)

Gráfico circular

Ejemplo

import pandas as pd

# Datos del gráfico circular
s = pd.Series([30, 25, 20, 15, 10], index=["A", "B", "C", "D", "E"])

print("Usar s.plot.pie() para dibujar un gráfico circular")
print("\nDatos:")
print(s)

Combinación con Matplotlib

Ejemplo

import pandas as pd
import numpy as np

# Crear datos
df = pd.DataFrame({
    "x": range(10),
    "y1": np.random.randn(10).cumsum(),
    "y2": np.random.randn(10).cumsum() + 5
})

print("Código de ejemplo de trazado con Matplotlib:")
print("""
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))

# Gráfico de líneas
ax1.plot(df["x"], df["y1"], label="Y1", color="blue")
ax1.plot(df["x"], df["y2"], label="Y2", color="red")
ax1.set_title("Gráfico de líneas")
ax1.legend()
ax1.grid(True)

# Gráfico de dispersión
ax2.scatter(df["y1"], df["y2"], alpha=0.6)
ax2.set_title("Gráfico de dispersión")
ax2.set_xlabel("Y1")
ax2.set_ylabel("Y2")

plt.tight_layout()
plt.show()
"""
)

Diseño de subtramas

Ejemplo

import pandas as pd
import numpy as np

# Ejemplo de subtramas 2x2
print("Ejemplo de diseño de subtramas 2x2:")
print("""
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

# 1. Gráfico de líneas
df["y1"].plot(ax=axes[0, 0])
axes[0, 0].set_title("Gráfico de líneas")

# 2. Gráfico de barras
df["y2"].plot.bar(ax=axes[0, 1])
axes[0, 1].set_title("Gráfico de barras")

# 3. Histograma
df["y1"].hist(ax=axes[1, 0], bins=10)
axes[1, 0].set_title("Histograma")

# 4. Gráfico circular
pd.Series([10, 20, 30]).plot.pie(ax=axes[1, 1])
axes[1, 1].set_title("Gráfico circular")

plt.tight_layout()
plt.show()
"""
)

Visualización avanzada con Seaborn

Ejemplo

import pandas as pd
import numpy as np

# Demostrar las funciones de Seaborn
print("Ejemplo de visualización con Seaborn:")
print("""
import seaborn as sns
import matplotlib.pyplot as plt

# Configurar el estilo
sns.set_style("whitegrid")

# 1. Gráfico de relaciones
fig, ax = plt.subplots(figsize=(8, 5))
sns.lineplot(data=df, x="x", y="y1", ax=ax)
ax.set_title("Gráfico de líneas")

# 2. Gráfico de distribución
sns.histplot(df["y1"], kde=True, ax=ax)

# 3. Diagrama de caja
sns.boxplot(data=df, x="category", y="value")

# 4. Mapa de calor
sns.heatmap(df.corr(), annot=True, cmap="coolwarm")

plt.show()
"""
)

Matplotlib proporciona control de bajo nivel, Seaborn proporciona una interfaz de alto nivel; combinándolos se pueden crear varios tipos de gráficos profesionales.

Otras extensiones