Skip to content

Commit a2a05b2

Browse files
committed
date in energy data
1 parent be7873c commit a2a05b2

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

codegreen_core/data/main.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66
from . import entsoe as et
77

88

9+
def _format_energy_data(df):
10+
start_time_column = df.pop("startTimeUTC")
11+
df.insert(0, "startTime", start_time_column)
12+
local_timezone = datetime.now().astimezone().tzinfo
13+
df["startTime"] = pd.to_datetime(df["startTime"], format="%Y%m%d%H%M").dt.tz_localize("UTC").dt.tz_convert(local_timezone)
14+
df.insert(1, "startTimeUTC", start_time_column)
15+
return df
16+
917
def energy(country, start_time, end_time, type="generation", interval60=True) -> dict:
1018
"""
1119
Returns hourly time series of energy production mix for a specified country and time range.
@@ -19,8 +27,9 @@ def energy(country, start_time, end_time, type="generation", interval60=True) ->
1927
========================== ========== ================================================================
2028
Column type Description
2129
========================== ========== ================================================================
22-
startTimeUTC datetime Start date in UTC (60 min interval)
23-
Biomass float64
30+
startTimeUTC object Start date in UTC (format YYYYMMDDhhmm)
31+
startTime datetime Start time in local timezone
32+
Biomass float64
2433
Fossil Hard coal float64
2534
Geothermal float64
2635
....more energy sources float64
@@ -47,11 +56,13 @@ def energy(country, start_time, end_time, type="generation", interval60=True) ->
4756
:param datetime start_time: The start date for data retrieval. A Datetime object. Note that this date will be rounded to the nearest hour.
4857
:param datetime end_time: The end date for data retrieval. A datetime object. This date is also rounded to the nearest hour.
4958
:param str type: The type of data to retrieve; either 'generation' or 'forecast'. Defaults to 'generation'.
59+
:param boolean interval60: To fix the time interval of data to 60 minutes. True by default. Only applicable for generation data
60+
5061
:return: A dictionary containing:
5162
- `error`: A string with an error message, empty if no errors.
5263
- `data_available`: A boolean indicating if data was successfully retrieved.
5364
- `data`: A pandas DataFrame containing the energy data if available, empty DataFrame if not.
54-
- `time_interval` : the time interval of the DataFrame
65+
- `time_interval` : the time interval of the DataFrame
5566
:rtype: dict
5667
"""
5768
if not isinstance(country, str):
@@ -70,11 +81,15 @@ def energy(country, start_time, end_time, type="generation", interval60=True) ->
7081
e_source = meta.get_country_energy_source(country)
7182
if e_source == "ENTSOE":
7283
if type == "generation":
73-
return et.get_actual_production_percentage(
84+
energy_data = et.get_actual_production_percentage(
7485
country, start_time, end_time, interval60
7586
)
87+
energy_data["data"] = _format_energy_data(energy_data["data"])
88+
return energy_data
7689
elif type == "forecast":
77-
return et.get_forecast_percent_renewable(country, start_time, end_time)
90+
energy_data = et.get_forecast_percent_renewable(country, start_time, end_time)
91+
energy_data["data"] = _format_energy_data(energy_data["data"])
92+
return energy_data
7893
else:
7994
raise CodegreenDataError(Message.NO_ENERGY_SOURCE)
8095
return None

0 commit comments

Comments
 (0)