Tutorial

Desapilar dataframe después de agrupar para crear matriz de calor

Tutorial de Python para desapilar las categorías de filas en columnas (tabla larga a ancha) para luego crear una matriz de calor.

La siguiente tabla representa una matriz de calor que resalta la cantidad total de electricidad, en teravatios-hora (TWh), producida por cada fuente dentro de la red eléctrica US48 durante 2023.

Matriz de calor mostrando la generación de electricidad por fuente en la red eléctrica US48 para 2023.
F1. Matriz de calor de generación de electricidad por fuente en 2023

Para crear la matriz de calor desde el dataset sin procesar, que típicamente viene en formato largo, necesitamos aplicar varios pasos que se cubrirán en este tutorial.

Antes de comenzar, entendamos el dataset con el que estamos trabajando.

Datos

La red eléctrica de EE.UU. produce electricidad de varias fuentes, como gas natural, solar y petróleo, cada hora. La cantidad de electricidad producida por cada fuente se registra en cada fila del dataset.

Los datos son proporcionados por la Administración de Información Energética de EE.UU. (EIA). Consulta este tutorial para aprender cómo recuperar los datos de la API de EIA.

import pandas as pd
df = pd.read_csv('data.csv')
DataFrame base mostrando el formato inicial de los datos de generación de electricidad antes del procesamiento.
F2. DataFrame inicial de datos de generación de electricidad

Preguntas

  1. ¿Cómo podemos transformar un DataFrame de formato largo a ancho?
  2. ¿Qué función resume datos en categorías?
  3. ¿Cómo visualizamos tendencias de datos a través de una matriz de calor?

Metodología

GroupBy para resumir datos en categorías

Antes de escribir el código para agrupar los datos, considera qué columnas son categóricas y cuáles son numéricas:

  1. Las columnas categóricas contienen las categorías para agrupar los datos.
  2. Las columnas numéricas contienen los valores sobre los que se aplicarán operaciones matemáticas.

En el análisis de generación de energía, es crucial identificar las fuentes utilizadas para producir electricidad cada hora. Esto ayuda a medir, por ejemplo, la tasa de utilización de fuentes renovables versus no renovables. Por lo tanto:

  1. Columnas categóricas: hour, source
  2. Columnas numéricas: generation
  3. Operación matemática: sum
sr = df.groupby(['hour', 'source']).generation.sum()
Objeto resultante después de aplicar operaciones GroupBy y sum en el DataFrame de generación por hora y fuente.
F3. Datos agrupados por hora y fuente con operación sum

Con 192 filas distribuidas en 24 horas y [X] fuentes, ¿puedes detectar las diferencias? Es difícil a simple vista, así que desapilemos el DataFrame.

Desapilar categorías de filas a columnas

En lugar de tener las fuentes como filas, las desapilaremos (unstack) en columnas para una vista completa de la generación de energía por fuente y hora.

¿Sería esto interesante para alguno de tus amigos? Compártelo con ellos.

dfr = (df
 .groupby(['hour', 'source'])
 .generation.sum()
 .unstack('source')
)
DataFrame con fuentes desapiladas en columnas, mostrando generación de energía por fuente y hora.
F4. DataFrame con fuentes de energía desapiladas en columnas

Ahora, tenemos una vista más compacta, pero todavía es difícil discernir qué fuentes son más utilizadas según la hora. Procedamos a crear la matriz de calor.

Matriz de calor con gradiente de fondo

Siguiendo las directrices de este tutorial sobre estilizar un DataFrame para crear una matriz de calor, resaltaremos los valores máximos en TWh (dividiendo por 1 millón ya que los valores están en MWh) con un fondo de gradiente.

Matriz de calor final con un gradiente de fondo resaltando la intensidad de generación de electricidad por fuente y hora.
F5. Matriz de calor final resaltando la intensidad de generación por fuente

Desde la matriz de calor, es observable que la producción de energía solar superó los 10 TWh desde la hora 17 hasta la 19.

¿Qué otros insights puedes detectar? ¡Te leo en los comentarios!

Conclusiones

  1. Transformación de largo a ancho: Desapilar filas en columnas transforma efectivamente el DataFrame, proporcionando una vista más clara y panorámica de los datos.
  2. Resumen de datos: Usar operaciones groupby y sum permite una categorización concisa de datos, esencial para el análisis.
  3. Visualización de matriz de calor: Estilizar DataFrames con background_gradient acentúa tendencias clave, haciendo los insights más accesibles.

En lugar de usar dos funciones: groupby y unstack, podrías utilizar la función pivot_table para lograr el mismo resultado. Consulta el tutorial aquí.


Me encantaría escuchar tus pensamientos para mejorar aún más nuestros futuros artículos.

¿Qué encontraste más interesante/valioso en esta pieza?

¿Hay algún tema que te gustaría que cubramos en el futuro?

Tu feedback es crucial para generar contenido de alta calidad que se alinee con tus necesidades e intereses.

¡Gracias de antemano por tu atención y apoyo!

Suscríbete a nuestro newsletter

Recibe insights semanales sobre datos, automatización e IA.

© 2025 Datons. All rights reserved.