Source code for sentier_peakachu.entsoe

import os

import pandas as pd
from dotenv import load_dotenv
from entsoe import EntsoePandasClient


[docs] def get_api_key(): """ Getting the API key from the .env file. """ load_dotenv() API_KEY = os.getenv("ENTSOE_API_KEY") return API_KEY
[docs] def filter_actual_aggregated(df): """ Curates the generation data from ENTSO-E API to only include the actual aggregated generation data. """ if df.columns.nlevels == 1: # sometimes, consumption data is not available return df df_filtered = df.loc[:, df.columns.get_level_values(1) == "Actual Aggregated"] df_filtered.columns = df_filtered.columns.droplevel(1) return df_filtered
[docs] def get_generation_data(country_code: str, start: pd.Timestamp, end: pd.Timestamp): """ Get generation data from ENTSO-E API for a specific country and time range. Parameters ---------- country_code : str Country code (e.g. 'DE' for Germany). start : pd.Timestamp Start date and time. end : pd.Timestamp End date and time. Returns ------- pd.DataFrame Generation data for the specified country and time range. """ client = EntsoePandasClient(api_key=get_api_key()) df = client.query_generation(country_code=country_code, start=start, end=end) return filter_actual_aggregated(df)