Este párrafo lo escribo para que mi yo u otros yo futuros tengan algo de contexto pasados unos años: Estamos en una situación muy atípica por la epidemia de coronavirus que se extiende por el planeta. Ante esta situación tan adversa existe, actualmente, un confinamiento de gente en sus casas para tratar de frenar el contagio.
Objetivos de este artículo:
- Entretenerme un rato y que alguien más se entretenga leyéndolo.
- Trastear un poco con una API.
- Trastear un poco con Pandas.
Se me ha ocurrido ver la evolución de la demanda eléctrica durante estos días (llevamos alrededor de una semana encerrados) en la Península Ibérica (España continental).
¿A ver qué sale?
Empezamos importando lo que nos hace falta.
from urllib.request import urlopen import json from time import sleep import pandas as pd import matplotlib.pyplot as plt plt.style.use("bmh")
¿De dónde puedo coger datos de la demanda eléctrica? Pues resulta que Red Eléctrica de España (REE) dispone de una API.
¿Cómo es la demanda eléctrica en condiciones normales?
Veamos, por ejemplo, la producción de enero de 2020. En el siguiente código se hace una petición día a día a la API y se crea un DataFrame con los datos cada 10 minutos:
df_en = pd.DataFrame( index=pd.date_range( "2020-01-01T00:00:00.000+01:00", "2020-01-31T23:50:00.000+01:00", freq="10T", ), columns=[ "Demanda real", "Demanda programada", "Demanda prevista", ], ) for i in range (1, 32): while True: try: url = ( 'https://apidatos.ree.es/es/datos/demanda/demanda-tiempo-real?' f'start_date=2020-01-{i:02}T00:00' f'&end_date=2020-01-{i:02}T23:50' '&time_trunc=hour' ) data = json.loads(urlopen(url).read()) for entry in data["included"]: tmp = pd.DataFrame(entry["attributes"]["values"]) tmp.set_index(pd.to_datetime(tmp["datetime"]), inplace=True) col = entry["attributes"]["title"] df_en.loc[tmp.index, col] = tmp["value"] break except: sleep(3)
Dibujo los resultados y comento un poco lo que veo:
ax = df_en.plot() ax.figure.savefig("prod_enero.png") # esto creará una figura en tu disco.
Se ven cosas interesantes:
- Se una clara diferencia entre el fin de semana y el resto de días con un descenso importante en la demanda eléctrica.
- Parece que el lunes suele ser el día de más consumo y la demanda va bajando a medida que avanza la semana. ¿El lunes se consume más por el encendido de calefacciones en centros de trabajo que han estado cerrados todo el fin de semana?
- Durante la primera semana el consumo fue mucho menos y algo más atípico. ¿Por qué? Efectivamente, las vacaciones de navidad con mucha menos gente trabajando y con la gran industria consumiendo menos.
Pego una parte del artículo ‘Enero de 2020,el noveno mes más cálido del siglo XXI.’ del blog de Aemet (servicio meteorológico español), que quizá ayude a explicar un poco las diferencias que se ven semana a semana:
Durante la primera decena de enero las temperaturas máximas se situaron en general en valores por encima de los normales, mientras que las mínimas tomaron valores cercanos a los normales o ligeramente inferiores. Durante los días 12-14 se observó un descenso térmico generalizado, más acusado en las mínimas, registrándose en muchas zonas las temperaturas más bajas del mes. Entre los días 15 y 18 se observó un breve episodio cálido, con temperaturas tanto máximas como mínimas por encima de las normales. El día 19 se produjo un nuevo descenso térmico debido a la borrasca Gloria, la cual dio lugar a un temporal de viento, nieve, lluvia y oleaje, con temperaturas por debajo de las normales, especialmente las máximas, hasta el día 21. Entre los días 22-27 las temperaturas se situaron nuevamente en valores cercanos a los normales, mientras que a partir del día 28 y hasta el final del mes se observó un episodio cálido, con temperaturas tanto máximas como mínimas muy por encima de las normales para la época del año, el cual afectó tanto a la península ibérica como a los archipiélagos Balear y Canario.
- Los días 12-14 hubo descenso térmico y eso podría explicar que la demanda eléctrica fuera mayor que la semana anterior (¿calefacciones?).
- El día 19 llegó la borrasca Gloria con un nuevo descenso térmico que coincide con la semana de mayor demanda eléctrica (¿calefacciones?).
Bueno, parece que se podría explicar un poco la evolución de la demanda de Enero.
¿Es la demanda actual anómala?
En marzo las temperaturas no están siendo frías y, que yo recuerde ahora mismo, no está habiendo grandes diferencias de temperatura.
¿Se notará un descenso de la demanda?
Vamos a por los datos de demanda eléctrica de marzo hasta hace poco.
df_ma = pd.DataFrame( index=pd.date_range( "2020-03-01T00:00:00.000+01:00", "2020-03-19T23:50:00.000+01:00", freq="10T", ), columns=[ "Demanda real", "Demanda programada", "Demanda prevista", ], ) for i in range (1, 20): while True: try: url = ( 'https://apidatos.ree.es/es/datos/demanda/demanda-tiempo-real?' f'start_date=2020-03-{i:02}T00:00' f'&end_date=2020-03-{i:02}T23:50' '&time_trunc=hour' ) data = json.loads(urlopen(url).read()) for entry in data["included"]: tmp = pd.DataFrame(entry["attributes"]["values"]) tmp.set_index(pd.to_datetime(tmp["datetime"]), inplace=True) col = entry["attributes"]["title"] df_ma.loc[tmp.index, col] = tmp["value"] break except: sleep(3)
Lo dibujamos, nuevamente:
ax = df_ma.plot() ax.figure.savefig("prod_marzo.png")
Se ve que la primera semana de marzo ha tenido demandas de electricidad más bajas que las de enero (supongo que sigue siendo el menor uso de electricidad para calentarnos). Tampoco se ve tan claramente el patrón de mayor demanda los lunes, quizás porque ya no hace tanta falta encender tantas calefacciones en centros de trabajo. La segunda semana mantiene el tipo. Pero en la tercera hay una caida muy destacable. El domingo 15 creo que fue el inicio más serio del confinamiento y ha medida que ha ido evolucionando la semana la asistencia a los trabajos ha ido disminuyendo.
Calculo ahora la demanda media diaria durante lo que llevamos de marzo y la dibujo:
ax = df_ma.groupby(df_ma.index.day).sum().plot() ax.figure.savefig("prod_diaria_marzo")
Habría que destacar que el día 19 de marzo ha sido fiesta en algunos lugares de España (Castilla La Mancha, Comunidad Valenciana, Galicia, Murcia, Navarra y País Vasco) y eso puede estar influyendo bastante en esa caída tan abrupta pero el resto de la semana ya se ve una bajada importante.
Y eso es todo. Espero que, por lo menos, te haya parecido interesante en estos días de encierro.
Ah, y…
Quédate en casa hasta nuevo aviso!!!!
P.D.: Enlace al notebook.