QuickStart

Instanciation

import ticts
ticts.TimeSeries({'2019-01-01': 1, '2019-01-02': 2})
ticts.TimeSeries({'2019-01-01': 1, '2019-01-02': 2}, default=0)

import datetime
dt1 = datetime.datetime(2019, 1, 1)
ticts.TimeSeries({dt1: 1, '2019-01-02': 2})

Samples

In [1]: dt1
Out[1]: Timestamp('2019-01-01 00:00:00+0000', tz='UTC')

In [2]: onehour
Out[2]: datetime.timedelta(seconds=3600)

In [3]: smallts
Out[3]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: 1,
2019-01-01T03:00:00+00:00: 3,
2019-01-01T06:00:00+00:00: 10,

In [4]: otherts
Out[4]: 
<TimeSeries> (default=0)
2019-01-01T02:00:00+00:00: 2,
2019-01-01T03:00:00+00:00: 3,
2019-01-01T05:00:00+00:00: 5,

GetItem

An interval is closed left, open right: [ , [

In [5]: smallts.index
Out[5]: SortedKeysView(SortedDict({Timestamp('2019-01-01 01:00:00+0000', tz='UTC'): 1, Timestamp('2019-01-01 03:00:00+0000', tz='UTC'): 3, Timestamp('2019-01-01 06:00:00+0000', tz='UTC'): 10}))

# Accessing value at key
In [6]: smallts[dt1 + onehour]
Out[6]: 1

In [7]: smallts[dt1]  # no default set

In [8]: otherts[dt1]  # default set
Out[8]: 0

# Accessing values sliced
In [9]: smallts[dt1: dt1 + 5 * onehour]  # calls TimeSeries.slice
Out[9]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: 1,
2019-01-01T03:00:00+00:00: 3,

# Getting previous is the default
In [10]: key = dt1 + 2 * onehour

In [11]: smallts[key, 'previous'] == smallts[key] == 1
Out[11]: True

# linear interpolation is available
In [12]: smallts[key, 'linear']
Out[12]: 2.0

Set Item, Set Interval

Setting a default to your TimeSeries object is mandatory in order to set intervals.

In [13]: ts = TimeSeries(smallts, default=0)

In [14]: ts[dt1 + onehour] = 2

In [15]: print(ts)
<TimeSeries> (default=0)
2019-01-01T01:00:00+00:00: 2,
2019-01-01T03:00:00+00:00: 3,
2019-01-01T06:00:00+00:00: 10,

In [16]: start = dt1 + 4 * onehour

In [17]: end = dt2 + 7 * onehour

In [18]: ts.set_interval(start, end, 7)

In [19]: print(ts)
<TimeSeries> (default=0)
2019-01-01T01:00:00+00:00: 2,
2019-01-01T03:00:00+00:00: 3,
2019-01-01T04:00:00+00:00: 7,
2019-01-02T07:00:00+00:00: 10,

# same as
In [20]: ts[start: end] = 7

In [21]: print(ts)
<TimeSeries> (default=0)
2019-01-01T01:00:00+00:00: 2,
2019-01-01T03:00:00+00:00: 3,
2019-01-01T04:00:00+00:00: 7,
2019-01-02T07:00:00+00:00: 10,

Operations

Sum

In [22]: smallts + 10
Out[22]: 
<TimeSeries> (default=None)
2019-01-01T01:00:00+00:00: 11,
2019-01-01T03:00:00+00:00: 13,
2019-01-01T06:00:00+00:00: 20,

In [23]: smallts + otherts
Out[23]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: 1,
2019-01-01T02:00:00+00:00: 3,
2019-01-01T03:00:00+00:00: 6,
2019-01-01T05:00:00+00:00: 8,
2019-01-01T06:00:00+00:00: 15,

In [24]: sum([smallts, smallts, smallts])
Out[24]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: 3,
2019-01-01T03:00:00+00:00: 9,
2019-01-01T06:00:00+00:00: 30,

Sub

In [25]: smallts - otherts
Out[25]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: 1,
2019-01-01T02:00:00+00:00: -1,
2019-01-01T03:00:00+00:00: 0,
2019-01-01T05:00:00+00:00: -2,
2019-01-01T06:00:00+00:00: 5,

Comparisons

In [26]: smallts <= 10
Out[26]: 
<TimeSeries> (default=None)
2019-01-01T01:00:00+00:00: True,
2019-01-01T03:00:00+00:00: True,
2019-01-01T06:00:00+00:00: True,

In [27]: smallts <= otherts
Out[27]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: False,
2019-01-01T02:00:00+00:00: True,
2019-01-01T03:00:00+00:00: True,
2019-01-01T05:00:00+00:00: True,
2019-01-01T06:00:00+00:00: False,

In [28]: smallts < 10
Out[28]: 
<TimeSeries> (default=None)
2019-01-01T01:00:00+00:00: True,
2019-01-01T03:00:00+00:00: True,
2019-01-01T06:00:00+00:00: False,

In [29]: smallts < otherts
Out[29]: 
<TimeSeries>
2019-01-01T01:00:00+00:00: False,
2019-01-01T02:00:00+00:00: True,
2019-01-01T03:00:00+00:00: False,
2019-01-01T05:00:00+00:00: True,
2019-01-01T06:00:00+00:00: False,

In [30]: smallts >= 10
Out[30]: 
<TimeSeries> (default=None)
2019-01-01T01:00:00+00:00: False,
2019-01-01T03:00:00+00:00: False,
2019-01-01T06:00:00+00:00: True,

In [31]: smallts > 10
Out[31]: 
<TimeSeries> (default=None)
2019-01-01T01:00:00+00:00: False,
2019-01-01T03:00:00+00:00: False,
2019-01-01T06:00:00+00:00: False,