Defensive timeseries analytics
Project description
timekeep
A python package for defensive timeseries analytics.
What is timekeep
All code needs to make assumptions about the data it uses: its shape, content, or format.
But constantly checking and re-checking the assumptions can make the code unwieldy.
Timeseries data presents additional complications in that many common python packages, such as
pandas
and scikitlearn
, expect 2-dimensional, static data.
timekeep
protects your timeseries data by providing simple decorators to check those assumptions.
timekeep
is heavily inspired by engarde
, but does not share its assumption about
data being a pandas
dataframe.
Quickstart
How to install
timekeep
is available from PyPi. Run
pip install timekeep
to install.
Important:
timekeep
is currently on version 0.1.0
and is in active development. As the version reflects,
the codebase is liable to change. Once main functionality has been applied, a stable version 1.0.0
will be released.
How to use
timekeep
provides decorators to be used on functions which return a timeseries dataset.
Each decorator checks an assumption about the data and raises an error if this assumption is not met.
import numpy as np
import timekeep.decorators as tkd
# Check that data returned from wont_raise
# has shape (-1, 10, 2)
@tkd.is_shape((-1, 10, 2))
def wont_raise():
return np.random.random((10, 10, 2))
# Check that data returned from will_raise is a
# timeseries dataset (has three dimensions)
@tkd.is_timeseries
def will_raise():
return np.random.random((10, 2))
Another key feature of timekeep
is conversion between timeseries data formats; timekeep
can convert between
tslearn
style timeseries dataset and sklearn
datasets, with support for tsfresh
datasets in progress. The conversion functions can be applied as decorators to methods and functions to automatically
convert your data as you supply it. For example:
import numpy as np
import timekeep.conversion as tkc
from sklearn.preprocessing import PCA
# Convert timeseries dataset to sklearn for input into sklearn.preprocessing.PCA
@tkc.convert_timeseries_input
def run_pca_on_timeseries(data):
return PCA().fit(data)
timeseries_data = np.random.random((10, 100, 2))
run_pca_on_timeseries(timeseries_data)
See the examples
folder for more. You can launch this repo on binder
and run the examples without any installation.
Contributing
Any and all help welcome. Please see the contributing guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file timekeep-0.2.0.tar.gz
.
File metadata
- Download URL: timekeep-0.2.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ded398a0dfb8db0e7efda046d915acfcd61fbe78011a37461c5bc316d103b35 |
|
MD5 | 0226cd37ae175a58e0f9a88a62dfbbff |
|
BLAKE2b-256 | 5b11471d2c963555345f53a0b5527356dc85490302b5009f533e6ce364f6de56 |