timeseries is a Python package which provides tools for transformation, analysis, visualization and multistep forecasting of univariate time series. It is build on top of: numpy, pandas, statsmodels, pmdarima, scikit-learn, matplotlib, and plotly.
See a sample notebook for basic usage.
More examples which employ timeseries package:
The key concept of this package is the class timeseries.Interval, which carries more information than simple pandas.Index. It works with integer, date, time indices, and others which have defined arithmetic operations and linear orders. Furthermore, it gives simple operations that help one manipulate time series and intervals, e.g., you may restrict the view of any time series, you may get earlier / further measurements, or extend the interval in custom way.
Inteval(ts=None, begin=None, end=None, as_dataframe=False, from_intv=None)The class timeseries.transform.IHSTransformer is a model that fits to standardize a time series on a given interval. It uses the S-shaped single parameter Inverse Hyperbolic Sine transformation. The aim of using the IHS transformation is to alter the data distribution so that it is less skewed and less heavy-tailed, and the ranges of values are narrowed. The parameter is estimated to obtain the Gaussian distribution by using the concentrated log-likelihood.
See: Terence C Mills. Applied time series analysis: A practical guide to modeling and forecasting. Academic press, 2019, pp. 16–18.
IHSTransformer(
ts,
interval=None,
d="auto",
lmb="auto",
difference_first=True,
save_loglikelihood_deriv=False,
verbose=False
)IHSTransformer has methods: transform(ts, interval=None) and detransform(diffs_ts, prev_original_values, index=None).
In timeseries.transform there are also: get_smoothed, get_downsampled, get_interpolated.
The most significant feature is function timeseries.plotting.plot_ts which uses engines: pyplot and plotly. It allows plotting univariate or multivariate time series stored in numpy.ndarray, pandas.Series, pandas.DataFrame.
plot_ts(ts, **kwargs) calls timeseries.plotting.pyplot_vars or timeseries.plotting.plotly_vars depending on the value of kwargs["engine"], which can be pyplot (default) or plotly. Function plot_ts return fig object, which can be provided as an argument to another plot_ts call. The type of the fig object depends on the engine, and it is compatible with functions from pyplot or plotly packages, respectively.
The following customizations are available:
pyplot_vars(
seq_vars,
color,
index,
index_values=None,
name=None,
vars_names=[],
fig=None,
axs=None,
axs_heights_ratios=None,
ax_height=None,
xmargin=None,
width=None,
height=None,
fontsize=13.5,
title_fontsize=26,
showgrid=True,
grid_kwargs=dict(),
title=None,
**kwargs,
):plotly_vars(
seq_vars,
index,
color,
name="",
vars_names=[],
showlegend=None,
legend_pos="top",
fig=None,
nrows=None,
ncols=None,
rows_and_cols=None,
axs=None,
ax_height=None,
width=None,
height=None,
yscale=None,
yticks=None,
xticks=None,
xaxis_title=False,
yaxis_title=False,
title=None,
subtitle=None, # unused currently
fontsize=14,
line_width=1.5,
dash=None, # None, "dash", or "dot"
)There are the following functions from timeseries: analysis.acf, analysis.pacf, plotting.plot_acf, plotting.plot_pacf, and generic plotting.plot_stats.
The available forecasting models are: SARIMA and seasonal median of medians. The package also contains a framework for hyperparameter search and cross-validated performance measurement, with saving the results.
A pytorch extension to timeseries package: timeseries-pytorch provides facades for pytorch models and datasets.
