← 全部工具

asobrados03/energy-deficit

热度 60 更新于 开发与构建

Calcula el déficit energético de la demanda eléctrica española que no puede cubrirse con generación eólica, usando datos públicos de ESIOS/REE. Incluye tratamiento de series temporales, interpolación de huecos, manejo CET/CEST, exportación a CSV y tests.

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

Déficit eléctrico cubierto con energía eólica

Proyecto desarrollado en el contexto de un proceso de selección para un puesto de sistemas Linux/DevOps. Es una solución en Python 3.11, sin dependencias de terceros en tiempo de ejecución sobre Linux (en Windows requiere adicionalmente tzdata; ver nota al final del documento).

El objetivo es cuantificar, para cada intervalo de una serie de demanda eléctrica española, qué energía seguiría faltando si la generación eólica fuera la única fuente disponible. La demanda parte de un CSV y la generación eólica se obtiene de los datos públicos de ESIOS/REE. El resultado se expresa en MWh y las fechas se normalizan a UTC.

Proceso de resolución

El programa resuelve el problema en las siguientes etapas:

  • Lee la demanda de entrada. Cada registro representa la energía

consumida durante cinco minutos, en kWh, con una marca de tiempo local de Europe/Madrid.

  • Reconstruye huecos de demanda. Las celdas vacías o las marcas de

cinco minutos ausentes entre dos medidas válidas se completan mediante interpolación lineal. La copia resultante se guarda como demandapreparada.csv e identifica cada valor reconstruido con isinterpolated=true. La rejilla de reconstrucción se construye en tiempo local naive, avanzando de cinco en cinco minutos. Cada instante candidato se valida contra Europe/Madrid mediante una ida y vuelta por UTC (isnonexistentmadridtime()); los instantes que resultan inexistentes en el reloj local —como la hora que desaparece al pasar de CET a CEST— se excluyen explícitamente antes de interpolar, en vez de tratarse como un hueco a rellenar.

  • Normaliza y valida la serie temporal. Las marcas se convierten a

UTC; se rechazan duplicados, valores negativos y discontinuidades de cinco minutos. Esto evita errores de alineación, incluida la transición horaria de Europe/Madrid.

  • Consulta la generación eólica. Con la primera y última marca UTC de

la demanda preparada, solicita a la API oficial de ESIOS el indicador 551, agregado cada cinco minutos. Es la única fuente de generación admitida por la aplicación.

  • Alinea ambas fuentes y calcula el déficit. Para cada intervalo,

convierte la potencia media eólica de MW a MWh (MW × 5 / 60), convierte la demanda de kWh a MWh y aplica max(demanda - eólica, 0). Se rechaza cualquier marca presente en una fuente y ausente en la otra.

  • Genera las cuatro granularidades. Conserva el resultado original de

cinco minutos, reparte convencionalmente cada bloque en cinco filas minutales y suma energía para las salidas horaria y diaria. La primera fila diaria parcial se etiqueta con el inicio real del rango, mientras que las siguientes siguen los días naturales UTC.

  • Escribe resultados auditables. Todos los CSV usan utcdatetime y