Según la hora y el mes, la electricidad generada por una planta solar fotovoltaica varía significativamente.
No es lo mismo la generación de energía a las 18:00 que a las 21:00, ni en enero que en junio.
Data
Los datos brutos representan la generación de energía solar en una planta fotovoltaica en el transcurso del año 2023.
Preguntas
Para crear el reporte a partir de los datos brutos, tenemos que responder a las siguientes preguntas:
- ¿Cómo formatear la columna temporal con
pandas
? - ¿Por qué es útil establecer la columna temporal como índice?
- ¿Cómo crear columnas temporales independientes?
- ¿Cómo agregar los datos en función de la hora y el mes?
- ¿Cómo filtrar los datos relevantes para el análisis?
- ¿Qué técnica permite destacar la variación de la generación de energía a lo largo del día?
Metodología
Formatear Columna Temporal
La columna temporal debe ser reconocida como un objeto de tipo
DateTime
para trabajar con las propiedades temporales que
ofrece pandas
.
Para ello, usamos la función pd.to_datetime
.
df['datetime'] = pd.to_datetime(df['datetime'])
df.dtypes
Columna Temporal A Índice
Si nuestra tabla de datos tiene una columna temporal cuyos valores son únicos, es una buena práctica establecerla como índice.
df.set_index('datetime', inplace=True)
Crear Columnas Temporales Independientes
Nos gustaría agregar la generación total de energía por mes y hora.
Para ello, creamos dos columnas nuevas: month
y
hour
.
¿Conoces a alguien que podría interesarle este artículo? Compártelo con ellos.
df = (df
.assign(
month = df.index.month,
hour = df.index.hour,
)
)
Agregar Valores Tabla Pivotante
Al tener nuevas columnas que pueden ser interpretadas como
categóricas, usamos la función pivot_table
para crear una
tabla-reporte que represente la generación total de energía por mes y
hora.
dfr = (df
.pivot_table(
index='month', columns='hour',
values='energy', aggfunc='sum'
)
)
Localiza Datos Relevantes
Como no podemos esperar de otra manera, la generación solar produce 0 energía durante la noche.
Para limpiar la tabla, seleccionamos con loc
las horas
de 6:00 a 21:00.
dfr.loc[:, 6:21]
Análisis Matriz Calor
El reporte está muy soso, le hace falta sal y algo de especias.
Se la echamos siguiendo esta receta et voilà.
Es curioso que, justo antes de comenzar el verano, pleno junio, la generación no sigue arrastrando la tendencia de la primavera. ¿Qué habrá pasado?
Te leo en los comentarios.
Conclusiones
En definitiva, gracias a este tutorial hemos respondido a las preguntas planteadas al principio:
- Formatear la columna temporal:
pd.to_datetime
convierte la columna especificada a formato de fecha y hora.
- Establecer la columna temporal como índice:
set_index
facilita operaciones temporales al hacer la columna de tiempo el índice del DataFrame.
- Crear columnas temporales independientes:
DatetimeIndex
permite extrear propiedades temporales independientes. - Agregar los datos en función de la hora y el mes:
pivot_table
organiza los datos según mes y hora, útil para análisis agregados.
- Filtrar los datos relevantes para el análisis:
loc
selecciona segmentos delDataFrame
.
- Destacar la variación de la generación de energía a lo largo
del día:
pivot_table
en combinación con los gradientes de color resalta patrones temporales.
Me encantaría escuchar tus opiniones para mejorar nuestros futuros artículos.
¿Qué te pareció más interesante/valioso de este artículo?
¿Hay algún tema que te gustaría que cubriéramos en el futuro?
Tu feedback es crucial para generar contenido de alta calidad que se alinee con tus necesidades e intereses.
¡Gracias por tu atención y apoyo de antemano!