Time series utilities¶
Python representations of multidimensional time series and interop with Python cffi
ConvertibleToTimestamp = Union[str, datetime, np.datetime64, pd.Timestamp]
module-attribute
¶
types that can be converted with relative unambiguity to a pandas Timestamp
TimeSeriesLike = Union[pd.Series, pd.DataFrame, xr.DataArray]
module-attribute
¶
types that can represent time series
XR_UNITS_ATTRIB_ID = 'units'
module-attribute
¶
key for the units attribute on xarray DataArray objects
as_datetime64(t)
¶
Convert, if possible, to a numpy datetime64
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
ConvertibleToTimestamp
|
date time value to convert |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
input value is not supported, notably values with time zone informations are excluded |
TypeError
|
unexpected input type |
Returns:
| Type | Description |
|---|---|
datetime64
|
np.datetime64: value as a datetime64 |
Source code in cinterop/timeseries.py
as_pydatetime(t)
¶
Convert, if possible, to a datetime
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
ConvertibleToTimestamp
|
date time value to convert |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
input value is not supported, notably values with time zone informations are excluded |
TypeError
|
unexpected input type |
Returns:
| Name | Type | Description |
|---|---|---|
datetime |
datetime
|
value as a datetime |
Source code in cinterop/timeseries.py
as_timestamp(t)
¶
Converts, if possible, a value to a pandas Timestamp
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
ConvertibleToTimestamp
|
date time value to convert |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
input value is not supported, notably values with time zone informations are excluded |
TypeError
|
unexpected input type |
Returns:
| Type | Description |
|---|---|
Timestamp
|
pd.Timestamp: date time as a pandas Timestamp |
Source code in cinterop/timeseries.py
create_daily_time_index(start, n)
¶
Creates a daily time index
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
ConvertibleToTimestamp
|
first datetime in the time index |
required |
n
|
int
|
length of the index |
required |
Returns:
| Type | Description |
|---|---|
DatetimeIndex
|
pd.DatetimeIndex: a time index suitable for a time series. |
Source code in cinterop/timeseries.py
create_ensemble_forecasts_series(npx, ens_index, lead_time_index, time_index)
¶
Create an ensemble forecasts time series (i.e. a series of ensembles of series)
Source code in cinterop/timeseries.py
create_ensemble_series(npx, ens_index, time_index)
¶
Create an ensemble (i.e. special type of multi-variate) time series
Source code in cinterop/timeseries.py
create_even_time_index(start, time_step_seconds, n)
¶
Creates a regular, evenly spaces time index
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
ConvertibleToTimestamp
|
first datetime in the time index |
required |
time_step_seconds
|
int
|
time step length in seconds |
required |
n
|
int
|
length of the index |
required |
Returns:
| Type | Description |
|---|---|
DatetimeIndex
|
pd.DatetimeIndex: a time index suitable for a time series. |
Source code in cinterop/timeseries.py
create_hourly_time_index(start, n)
¶
Creates an hourly time index
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
ConvertibleToTimestamp
|
first datetime in the time index |
required |
n
|
int
|
length of the index |
required |
Returns:
| Type | Description |
|---|---|
DatetimeIndex
|
pd.DatetimeIndex: a time index suitable for a time series. |
Source code in cinterop/timeseries.py
create_monthly_time_index(start, n)
¶
Creates a monthly time index
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
ConvertibleToTimestamp
|
first datetime in the time index |
required |
n
|
int
|
length of the index |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
day of month of the start date is more than 28 |
Returns:
| Type | Description |
|---|---|
DatetimeIndex
|
pd.DatetimeIndex: a time index suitable for a time series. |
Source code in cinterop/timeseries.py
create_single_series(npx, time_index)
¶
Create an uni-variate time series
Source code in cinterop/timeseries.py
end_ts(x)
¶
Gets the ending date of a time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
TimeSeriesLike
|
time series |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
datetime64
|
end of the series |
mk_daily_xarray_series(data, start_date, dim_name=None, units=None, colnames=None, fill_miss_func=None)
¶
Create a daily xarray time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Union[ndarray, TimeSeriesLike]
|
data from which to create the xarray series |
required |
start_date
|
ConvertibleToTimestamp
|
start date of the daily time series |
required |
dim_name
|
str
|
the name of the dimension for a multivariate series. Ignored if univariate. Defaults to None. |
None
|
units
|
str
|
units in the time series. Defaults to None. |
None
|
colnames
|
Optional[List[str]]
|
names of the columns in a multivariate series. Defaults to None. |
None
|
fill_miss_func
|
Optional[Callable[[TsArrayLike], TsArrayLike]]
|
optional function that fills in missing values (np.nan). Defaults to None. |
None
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Input arguments are not consistent. |
Returns:
| Type | Description |
|---|---|
DataArray
|
xr.DataArray: output xarray time series with at least a dimension "time" |
Source code in cinterop/timeseries.py
mk_even_step_xarray_series(data, start_date, time_step_seconds, dim_name=None, units=None, colnames=None, fill_miss_func=None)
¶
Create an xarray time series with an even time step
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Union[ndarray, TimeSeriesLike]
|
data from which to create the xarray series |
required |
start_date
|
ConvertibleToTimestamp
|
start date of the daily time series |
required |
time_step_seconds
|
int
|
time step length in seconds |
required |
dim_name
|
str
|
the name of the dimension for a multivariate series. Ignored if univariate. Defaults to None. |
None
|
units
|
str
|
units in the time series. Defaults to None. |
None
|
colnames
|
Optional[List[str]]
|
names of the columns in a multivariate series. Defaults to None. |
None
|
fill_miss_func
|
Optional[Callable[[TsArrayLike], TsArrayLike]]
|
optional function that fills in missing values (np.nan). Defaults to None. |
None
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Input arguments are not consistent. |
Returns:
| Type | Description |
|---|---|
DataArray
|
xr.DataArray: output xarray time series with at least a dimension "time" |
Source code in cinterop/timeseries.py
mk_hourly_xarray_series(data, start_date, dim_name=None, units=None, colnames=None, fill_miss_func=None)
¶
Create an hourly xarray time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Union[ndarray, TimeSeriesLike]
|
Data from which to create the xarray series |
required |
dim_name
|
str
|
the name of the dimension for a multivariate series. Ignored if univariate. Defaults to None. |
None
|
units
|
str
|
units in the time series. Defaults to None. |
None
|
time_index
|
Optional[Union[List, DatetimeIndex]]
|
the time index of the series. Optional if the input data already has a time index, such as a pandas series. Defaults to None. |
required |
colnames
|
Optional[List[str]]
|
names of the columns in a multivariate series. Defaults to None. |
None
|
fill_miss_func
|
Optional[Callable[[TsArrayLike], TsArrayLike]]
|
optional function that fills in missing values (np.nan). Defaults to None. |
None
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Input arguments are not consistent. |
Returns:
| Type | Description |
|---|---|
DataArray
|
xr.DataArray: output xarray time series with at least a dimension "time" |
Source code in cinterop/timeseries.py
mk_xarray_series(data, dim_name=None, units=None, time_index=None, colnames=None, fill_miss_func=None)
¶
Create an xarray time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Union[ndarray, TimeSeriesLike]
|
data from which to create the xarray series |
required |
dim_name
|
str
|
the name of the dimension for a multivariate series. Ignored if univariate. Defaults to None. |
None
|
units
|
str
|
units in the time series. Defaults to None. |
None
|
time_index
|
Optional[Union[List, DatetimeIndex]]
|
the time index of the series. Optional if the input data already has a time index, such as a pandas series. Defaults to None. |
None
|
colnames
|
Optional[List[str]]
|
names of the columns in a multivariate series. Defaults to None. |
None
|
fill_miss_func
|
Optional[Callable[[TsArrayLike], TsArrayLike]]
|
optional function that fills in missing values (np.nan). Defaults to None. |
None
|
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
Input arguments are not consistent. |
Returns:
| Type | Description |
|---|---|
DataArray
|
xr.DataArray: output xarray time series with at least a dimension "time" |
Source code in cinterop/timeseries.py
pd_series_to_xr_series(series)
¶
set_xr_units(x, units)
¶
Sets the units attribute of an xr.DataArray. No effect if x is not a dataarray
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
DataArray
|
data array |
required |
units
|
str
|
units descriptor |
required |
Source code in cinterop/timeseries.py
slice_pd_time_series(data, from_date=None, to_date=None)
¶
Subset a time series to a period
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Series
|
input xarray time series |
required |
from_date
|
ConvertibleToTimestamp
|
date, convertible to a timestamp. Defaults to None. |
None
|
to_date
|
ConvertibleToTimestamp
|
end date of the slice. Inclusive. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
Series
|
pd.Series: a subset time series |
Examples:
slice_pd_time_series(unaccounted_indus, from_date='1980-04-01', to_date='2000-04-01')
Source code in cinterop/timeseries.py
slice_xr_time_series(data, from_date=None, to_date=None)
¶
Subset a time series to a period
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataArray
|
input xarray time series |
required |
from_date
|
ConvertibleToTimestamp
|
date, convertible to a timestamp. Defaults to None. |
None
|
to_date
|
ConvertibleToTimestamp
|
end date of the slice. Inclusive. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
DataArray
|
xr.DataArray: a subset time series |
Examples:
slice_xr_time_series(unaccounted_indus, from_date='1980-04-01', to_date='2000-04-01')
Source code in cinterop/timeseries.py
start_ts(x)
¶
Gets the starting date of a time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
TimeSeriesLike
|
time series |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
datetime64
|
start of the series |
ts_window(ts, from_date=None, to_date=None)
¶
Gets a temporal window of a time series
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ts
|
TimeSeriesLike
|
pandas dataframe, series, or xarray DataArray |
required |
from_date
|
ConvertibleToTimestamp
|
start date of the window. Defaults to None. |
None
|
to_date
|
ConvertibleToTimestamp
|
end date of the window. Defaults to None. |
None
|
Raises:
| Type | Description |
|---|---|
TypeError
|
unhandled input time for |
Returns:
| Name | Type | Description |
|---|---|---|
TimeSeriesLike |
TimeSeriesLike
|
Subset window of the full time series |
Examples:
ts_window(unaccounted_indus, from_date='1980-04-01', to_date='2000-04-01')