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