Source code for energy_analysis_toolbox.tests.test_timeseries_create_from_intervals

import numpy as np
import pandas as pd

from .. import keywords as EATK
from ..timeseries.create.from_intervals import flatten_and_fill


# =============================================================================
# flatten overconsumption
# =============================================================================
[docs] def test_flatten_empty(): """Empty dataframe is flattened as empty""" assert flatten_and_fill(pd.DataFrame()).empty
[docs] def test_flatten_one_interval(): """Check that flattening is OK in one row table.""" start = pd.Timestamp("2020-02-29") end = start + pd.Timedelta("1min") test_data = pd.DataFrame( [[start, end, 42.0]], columns=[EATK.start_f, EATK.end_f, "test"], ) flat_consumption = flatten_and_fill( test_data, start_f=EATK.start_f, end_f=EATK.end_f, time_f=EATK.time_f, ) expect_index = pd.DatetimeIndex([start, end], name=EATK.time_f) expect_series = pd.DataFrame( np.array([42.0, np.nan]).reshape(2, 1), index=expect_index, columns=["test"], ) pd.testing.assert_frame_equal( expect_series, flat_consumption, check_dtype=False, check_freq=False, )
[docs] def test_flatten(): """Check that flattening looks OK.""" time_f = "timestamp" end_f = "end_custom" start_f = "start_custom" begin = pd.Timestamp("2022-12-05 18:00:00") starts = pd.date_range(start=begin, freq="10min", periods=3, name=start_f) targets = pd.date_range(start=begin, freq="5min", periods=6, name=time_f) data = { start_f: starts, end_f: starts + pd.Timedelta("5min"), "col_str": ["toto"] * 3, "col_float": np.arange(0.0, 6.0, 2.0), } table = pd.DataFrame.from_dict(data) # Default filling flat_expect = pd.DataFrame.from_dict( { "col_str": ["toto"] * 6, "col_float": np.arange(0, 6), }, ) flat_expect.index = targets flat_expect.iloc[[1, 3, 5], :] = np.nan flat_table = flatten_and_fill(table, end_f=end_f, start_f=start_f) pd.testing.assert_frame_equal(flat_expect, flat_table, check_freq=False) # explicit filling flat_filled_table = flatten_and_fill( table, fill_values={"col_str": "tata"}, end_f=end_f, start_f=start_f, ) flat_expect["col_str"] = ["toto", "tata"] * 3 pd.testing.assert_frame_equal( flat_expect, flat_filled_table, check_freq=False, check_dtype=False, )