Ejercicio 47: Análisis de Correlaciones y Visualización con Heatmaps

En este ejercicio, se busca que los estudiantes practiquen el análisis de correlaciones y su visualización mediante heatmaps. Se explorarán distintas técnicas para representar matrices de correlación utilizando Pandas Styling, Matplotlib y Seaborn.

Objetivos

  • Generar un dataset de 10 entidades con una serie temporal.
  • Calcular la matriz de correlación entre las entidades.
  • Aplicar Pandas Styling para visualizar la matriz con formato de heatmap.
  • Representar la matriz de correlación con imshow de Matplotlib y anotaciones.
  • Usar Seaborn para generar un heatmap de la correlación.

Parte A: Generación de Datos y Cálculo de Correlaciones

Se generará un dataset sintético con 10 entidades y valores temporales aleatorios.

Tareas

  1. Crear un DataFrame de Pandas con 10 columnas representando entidades y 100 filas representando valores en el tiempo.
  2. Calcular la matriz de correlación con .corr().
  3. Redondear los valores de la matriz de correlación a tres decimales para facilitar la lectura.

Código Base

import pandas as pd
import numpy as np

# Generar datos aleatorios
np.random.seed(0)
data = np.random.rand(100, 10)

# Crear DataFrame
df = pd.DataFrame(data, columns=[f'entidad_{i}' for i in range(1, 11)])

# TODO: Implementar cálculo de la matriz de correlación y redondeo

Parte B: Visualización con Pandas Styling

Se aplicará formateo y estilo con Pandas para representar la matriz de correlación como un heatmap.

Tareas

  1. Aplicar Pandas Styling:
    • Usar .style.background_gradient(cmap='coolwarm') para resaltar valores.
    • Usar .format("{:.3f}") para mostrar pocos decimales.
    • Ajustar la escala de colores para interpretar mejor la correlación.

Código Base

# TODO: Implementar visualización con Pandas Styling

Parte C: Visualización con Matplotlib (imshow o matshow)

Se generará un heatmap usando Matplotlib con anotaciones de valores de correlación.

Tareas

  1. Crear un heatmap con imshow o matshow de Matplotlib.
    • Aplicar un mapa de color (cmap='coolwarm').
    • Agregar etiquetas en los ejes con los nombres de las entidades.
    • Mostrar valores de correlación sobre las celdas con plt.text().

Código Base

import matplotlib.pyplot as plt

# TODO: Implementar visualización con Matplotlib

Parte D: Visualización con Seaborn (sns.heatmap)

Se utilizará Seaborn para generar una versión más detallada del heatmap de correlación.

Tareas

  1. Usar sns.heatmap() para representar la matriz de correlación.
    • Personalizar el mapa de color con cmap='coolwarm'.
    • Agregar valores de correlación dentro del heatmap (annot=True).
    • Ajustar los límites del color para facilitar la interpretación (vmin=-1, vmax=1).

Código Base

import seaborn as sns

# TODO: Implementar visualización con Seaborn

Pruebas

Ejemplo de prueba para verificar la correcta implementación de la matriz de correlación:

# Prueba de cálculo de correlación
correlation_matrix = df.corr().round(3)
print(correlation_matrix)

Reflexiones

  • ¿Por qué es útil analizar correlaciones en datasets de múltiples variables?
  • ¿Cuándo es más conveniente usar Pandas Styling en lugar de una librería de visualización?
  • ¿Cuáles son las ventajas de usar Matplotlib para visualizar correlaciones?
  • ¿Cómo se comparan las distintas formas de visualizar la correlación?

Entrega esperada

  • Código bien estructurado con generación y exploración de datos.
  • Matriz de correlación formateada y visualizada con Pandas Styling.
  • Heatmap con Matplotlib (imshow/matshow) con anotaciones.
  • Heatmap con Seaborn (sns.heatmap) con personalización de colores y valores.
  • Reflexiones sobre las ventajas de cada método de visualización.