Skip to main content

A python library for easy manipulation and forecasting of time series.

Project description

Time Series Made Easy in Python

darts


PyPI version Conda Version Supported versions Docker Image Version (latest by date) GitHub Release Date GitHub Workflow Status Downloads Downloads

darts is a Python library for easy manipulation and forecasting of time series. It contains a variety of models, from classics such as ARIMA to deep neural networks. The models can all be used in the same way, using fit() and predict() functions, similar to scikit-learn. The library also makes it easy to backtest models, and combine the predictions of several models and external regressors. Darts supports both univariate and multivariate time series and models. The neural networks can be trained on multiple time series, and some of the models offer probabilistic forecasts.

Documentation

High Level Introductions
Articles on Selected Topics

Install

We recommend to first setup a clean Python environment for your project with at least Python 3.7 using your favorite tool (conda, venv, virtualenv with or without virtualenvwrapper).

Once your environment is set up you can install darts using pip:

pip install darts

For more detailed install instructions you can refer to our installation guide at the end of this page.

Example Usage

Create a TimeSeries object from a Pandas DataFrame, and split it in train/validation series:

import pandas as pd
from darts import TimeSeries

# Read a pandas DataFrame
df = pd.read_csv('AirPassengers.csv', delimiter=",")

# Create a TimeSeries, specifying the time and value columns
series = TimeSeries.from_dataframe(df, 'Month', '#Passengers')

# Set aside the last 36 months as a validation series
train, val = series[:-36], series[-36:]

Fit an exponential smoothing model, and make a (probabilistic) prediction over the validation series' duration:

from darts.models import ExponentialSmoothing

model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)

Plot the median, 5th and 95th percentiles:

import matplotlib.pyplot as plt

series.plot()
prediction.plot(label='forecast', low_quantile=0.05, high_quantile=0.95)
plt.legend()
darts forecast example

We invite you to go over the example and tutorial notebooks in the examples directory.

Features

Currently, the library contains the following features:

Forecasting Models: A large collection of forecasting models; from statistical models (such as ARIMA) to deep learning models (such as N-BEATS). See table of models below.

Data processing: Tools to easily apply (and revert) common transformations on time series data (scaling, boxcox, …)

Metrics: A variety of metrics for evaluating time series' goodness of fit; from R2-scores to Mean Absolute Scaled Error.

Backtesting: Utilities for simulating historical forecasts, using moving time windows.

Regression Models: Possibility to predict a time series from lagged versions of itself and of some external covariate series, using arbitrary regression models (e.g. scikit-learn models).

Multiple series training: All neural networks, as well as RegressionModels (incl. LinearRegressionModel and RandomForest) support being trained on multiple series.

Past and Future Covariates support: Some models support past-observed and/or future-known covariate time series as inputs for producing forecasts.

Multivariate Support: Tools to create, manipulate and forecast multivariate time series.

Probabilistic Support: TimeSeries objects can (optionally) represent stochastic time series; this can for instance be used to get confidence intervals.

Filtering Models: Darts offers three filtering models: KalmanFilter, GaussianProcessFilter, and MovingAverage, which allow to filter time series, and in some cases obtain probabilistic inferences of the underlying states/values.

Forecasting Models

Here's a breakdown of the forecasting models currently implemented in Darts. We are constantly working on bringing more models and features.

Model Univariate Multivariate Probabilistic Multiple-series training Past-observed covariates support Future-known covariates support
ARIMA x x
VARIMA x x
AutoARIMA x
ExponentialSmoothing x x
Theta and FourTheta x
Prophet x
FFT (Fast Fourier Transform) x
RegressionModel (incl RandomForest and LinearRegressionModel) x x x x x
RNNModel (incl. LSTM and GRU); equivalent to DeepAR in its probabilistic version x x x x x
BlockRNNModel (incl. LSTM and GRU) x x x x
NBEATSModel x x x x
TCNModel x x x x x
TransformerModel x x x x
Naive Baselines x

Contribute

The development is ongoing, and there are many new features that we want to add. We welcome pull requests and issues on GitHub.

Before working on a contribution (a new feature or a fix), check our contribution guidelines.

Contact Us

If what you want to tell us is not a suitable github issue, feel free to send us an email at darts@unit8.co for darts related matters or info@unit8.co for any other inquiries.

Installation Guide

Some of the models depend on prophet and torch, which have non-Python dependencies. A Conda environment is thus recommended because it will handle all of those in one go.

From conda-forge

Currently only Linux and macOS on the x86_64 architecture are fully supported with conda; consider using PyPI if you are running into troubles.

To create a conda environment for Python 3.7 (after installing conda):

conda create --name <env-name> python=3.7

Don't forget to activate your virtual environment

conda activate <env-name>

As some models have relatively heavy dependencies, we provide two conda-forge packages:

  • Install darts with all available models (recommended): conda install -c conda-forge u8darts-all.
  • Install core only (without neural networks, Prophet or AutoARIMA): conda install -c conda-forge u8darts

From PyPI

Install darts with all available models: pip install darts.

If this fails on your platform, please follow the official installation guides for prophet and torch, then try installing Darts again.

As some models have relatively heavy (or non-Python) dependencies, we also maintain the u8darts package, which provides the following alternate lighter install options:

  • Install core only (without neural networks, Prophet or AutoARIMA): pip install u8darts
  • Install core + neural networks (PyTorch): pip install 'u8darts[torch]'
  • Install core + Facebook Prophet: pip install 'u8darts[prophet]'
  • Install core + AutoARIMA: pip install 'u8darts[pmdarima]'

Running the examples only, without installing:

If the conda setup is causing too many problems, we also provide a Docker image with everything set up for you and ready-to-use Python notebooks with demo examples. To run the example notebooks without installing our libraries natively on your machine, you can use our Docker image:

./gradlew docker && ./gradlew dockerRun

Then copy and paste the URL provided by the docker container into your browser to access Jupyter notebook.

For this setup to work you need to have a Docker service installed. You can get it at Docker website.

Tests

The gradle setup works best when used in a python environment, but the only requirement is to have pip installed for Python 3+

To run all tests at once just run

./gradlew test_all

alternatively you can run

./gradlew unitTest_all # to run only unittests
./gradlew coverageTest # to run coverage
./gradlew lint         # to run linter

To run the tests for specific flavours of the library, replace _all with _core, _prophet, _pmdarima or _torch.

Documentation

To build documentation locally just run

./gradlew buildDocs

After that docs will be available in ./docs/build/html directory. You can just open ./docs/build/html/index.html using your favourite browser.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

darts-0.10.1.tar.gz (4.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

darts-0.10.1-py3-none-any.whl (235.3 kB view details)

Uploaded Python 3

File details

Details for the file darts-0.10.1.tar.gz.

File metadata

  • Download URL: darts-0.10.1.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for darts-0.10.1.tar.gz
Algorithm Hash digest
SHA256 d8be4c8f0f01155239c910e64207960cb558bb3b1644e4c167a2a3e1b53c774c
MD5 6eb7e25d0cce37bb725014ea7d954106
BLAKE2b-256 2d6850151038b341ab7e092c13c74eb74e3c175905e64d6187f37fa1b5318db7

See more details on using hashes here.

File details

Details for the file darts-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: darts-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 235.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for darts-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f81f0f200383d1a6c1f9207c61e6112a4a3f3929504102582bea0cb1ccafd36a
MD5 fc24913e308d271f32e554f439c0897f
BLAKE2b-256 dbef2b9efe1e0bbeba9bfc613d566d4f70faa4665d2a52cd61d1271da746565f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page