app.infra.timeseries_object

TimeseriesObject

Bases: Quantity

A class representing a time series object using xarray.DataArray as the backend. This class handles multi-dimensional time series data, including reading from CSV files, resampling, and normalizing frequencies. Maintains full backward compatibility with pandas DataFrame-based code while enabling multi-dimensional energy system modeling.

:ivar xr.DataArray data: Underlying time series data :ivar str freq: Frequency string (e.g. '1h')

__eq__(other)

Check equality with another TimeseriesObject.

:param TimeseriesObject other: Object to compare :returns bool: True if equal, else False

__getattr__(name)

Delegate attribute access to the underlying DataArray when safe.

Avoid recursion when self.data is another TimeseriesObject or is None, and do not delegate for core attributes.

__init__(**kwargs)

Initialize from xarray, pandas, or CSV file.

:param xr.DataArray|pd.DataFrame data: DataArray or DataFrame (optional) :param str input_path: Path to CSV (optional) :param str col: Column name (optional) :param str freq: Frequency string (optional)

__repr__()

String representation.

:returns str: String representation

add_dimension(dim_name, coord_values, axis=None)

Add a new dimension.

:param str dim_name: Name of new dimension :param list coord_values: Coordinate values :param int|None axis: Axis to add (optional) :returns TimeseriesObject: New TimeseriesObject

empty()

Check if data is empty.

:returns bool: True if empty, else False

get_metadata(key=None)

Get metadata attributes.

:param str|None key: Metadata key (optional) :returns dict|Any: All attributes or value for key

isel(**kwargs)

Select data by integer indices.

:param kwargs: Dimension names and indices :returns TimeseriesObject: New TimeseriesObject with selected data

normalize_freq(freq) classmethod

Normalize frequency string.

:param str freq: Frequency string :returns str|None: Normalized frequency string (e.g. '1h') or None

read(input_path, col, time_col='timestamp', datetime_format=None, **read_kwargs) staticmethod

Read CSV and return TimeseriesObject.

:param str input_path: Path to CSV :param str col: Name of the column to read :param str|None time_col: Name of the time column in the CSV (default 'timestamp'). If None, auto-detect. :param str|None datetime_format: Optional datetime format to use for parsing :returns TimeseriesObject: TimeseriesObject with column and timestamp index

resample_to(new_freq, method=None, agg='mean', in_place=False, **resample_kwargs)

Resample to new frequency.

:param str new_freq: New frequency (e.g. '15min') :param str|None method: Resampling method (optional) :param str agg: Aggregation function (default 'sum'), others like 'mean', 'max', etc., only for downsampling :param bool in_place: Modify in place (default False) :returns TimeseriesObject: Resampled TimeseriesObject :raises ValueError: If frequency cannot be inferred or method unsupported

sel(**kwargs)

Select data along dimensions.

:param kwargs: Dimension names and values :returns TimeseriesObject: New TimeseriesObject with selected data

set_metadata(**attrs)

Set metadata attributes.

:param attrs: Metadata attributes :returns TimeseriesObject: New TimeseriesObject with updated metadata

to_15m(closed='right')

Convert to 15-minute frequency.

:param str closed: Which side of bin interval is closed (default 'right') :returns TimeseriesObject: Resampled TimeseriesObject :raises ValueError: If frequency is not set

to_1h(closed='left')

Convert to 1-hour frequency.

:param str closed: Which side of bin interval is closed (default 'left') :returns TimeseriesObject: Resampled TimeseriesObject :raises ValueError: If frequency is not set

to_df()

Convert to pandas DataFrame.

:returns pd.DataFrame: DataFrame representation

to_nd()

Convert to numpy array.

:returns np.ndarray: Flattened numpy array

value(**kwargs)

Get values with optional resampling and slicing.

:param str freq: Frequency to resample to (optional) :param int time_set: Number of time steps (optional) :returns np.ndarray: Array of values