Time series transformation module

Transformer: time series’ transformation module

Overview

This module contains time series’ transformation methods (log, log10, sqrt, cbrt, boxcox), trending (linear, cuadratic, cubic, diff1, diff2) and seasonal (poly2, diff) removal methods.

Examples

Transform

>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'log')
>>> mytransform
transformer(trans = log, trend = None, seasonal = None)
>>> transformed_ts = mytransform.fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    7.942718
1964-02-01    7.890583
1964-03-01    7.921173
1964-04-01    7.908755
1964-05-01    7.988204
1964-06-01    8.018296
1964-07-01    7.732808
1964-08-01    7.701652
1964-09-01    7.980024
1964-10-01    8.366603
1964-11-01    8.659387
1964-12-01    8.897272
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trans = 'log10').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    3.449478
1964-02-01    3.426836
1964-03-01    3.440122
1964-04-01    3.434729
1964-05-01    3.469233
1964-06-01    3.482302
1964-07-01    3.358316
1964-08-01    3.344785
1964-09-01    3.465680
1964-10-01    3.633569
1964-11-01    3.760724
1964-12-01    3.864036
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trans = 'sqrt').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    53.056574
1964-02-01    51.691392
1964-03-01    52.488094
1964-04-01    52.163205
1964-05-01    54.277067
1964-06-01    55.099909
1964-07-01    47.770284
1964-08-01    47.031904
1964-09-01    54.055527
1964-10-01    65.582010
1964-11-01    75.921012
1964-12-01    85.510233
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trans = 'cbrt').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    14.119722
1964-02-01    13.876464
1964-03-01    14.018683
1964-04-01    13.960775
1964-05-01    14.335436
1964-06-01    14.479956
1964-07-01    13.165536
1964-08-01    13.029519
1964-09-01    14.296402
1964-10-01    16.262594
1964-11-01    17.929767
1964-12-01    19.409398
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trans = 'boxcox').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    0.504795
1964-02-01    0.504795
1964-03-01    0.504795
1964-04-01    0.504795
1964-05-01    0.504795
1964-06-01    0.504795
1964-07-01    0.504795
1964-08-01    0.504795
1964-09-01    0.504795
1964-10-01    0.504795
1964-11-01    0.504795
1964-12-01    0.504795
Name: Perrin, dtype: float64

Removing trend

>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trend = 'linear').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01     993.871795
1964-02-01     549.592075
1964-03-01     331.312354
1964-04-01      -3.967366
1964-05-01     -80.247086
1964-06-01    -291.526807
1964-07-01   -1346.806527
1964-08-01   -1718.086247
1964-09-01   -1309.365967
1964-10-01    -231.645688
1964-11-01     930.074592
1964-12-01    2176.794872
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trend = 'cuadratic').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01   -578.005495
1964-02-01   -164.897602
1964-03-01    302.732767
1964-04-01    481.885614
1964-05-01    748.560939
1964-06-01    708.758741
1964-07-01   -346.520979
1964-08-01   -889.278222
1964-09-01   -823.512987
1964-10-01   -260.225275
1964-11-01    215.584915
1964-12-01    604.917582
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trend = 'cubic').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    196.725275
1964-02-01   -235.327672
1964-03-01   -190.277722
1964-04-01   -105.031635
1964-05-01    302.503830
1964-06-01    544.421911
1964-07-01   -182.184149
1964-08-01   -443.221112
1964-09-01   -236.595738
1964-10-01    232.785215
1964-11-01    286.014985
1964-12-01   -169.813187
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trend = 'diff1').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01       0
1964-02-01    -143
1964-03-01      83
1964-04-01     -34
1964-05-01     225
1964-06-01      90
1964-07-01    -754
1964-08-01     -70
1964-09-01     710
1964-10-01    1379
1964-11-01    1463
1964-12-01    1548
dtype: int64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(trend = 'diff2').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01       0
1964-02-01       0
1964-03-01     -60
1964-04-01      49
1964-05-01     191
1964-06-01     315
1964-07-01    -664
1964-08-01    -824
1964-09-01     640
1964-10-01    2089
1964-11-01    2842
1964-12-01    3011
dtype: int64

Removing seasonality

>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(seasonal = 'poly2').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01   -578.005495
1964-02-01   -164.897602
1964-03-01    302.732767
1964-04-01    481.885614
1964-05-01    748.560939
1964-06-01    708.758741
1964-07-01   -346.520979
1964-08-01   -889.278222
1964-09-01   -823.512987
1964-10-01   -260.225275
1964-11-01    215.584915
1964-12-01    604.917582
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> transformed_ts = transformer(seasonal = 'diff').fit_transform(ts = ts)
>>> transformed_ts
Month
1964-01-01    0
1964-02-01    0
1964-03-01    0
1964-04-01    0
1964-05-01    0
1964-06-01    0
1964-07-01    0
1964-08-01    0
1964-09-01    0
1964-10-01    0
1964-11-01    0
1964-12-01    0
dtype: int64

Restore seasonality

>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(seasonal = 'poly2')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.0
1964-02-01    2672.0
1964-03-01    2755.0
1964-04-01    2721.0
1964-05-01    2946.0
1964-06-01    3036.0
1964-07-01    2282.0
1964-08-01    2212.0
1964-09-01    2922.0
1964-10-01    4301.0
1964-11-01    5764.0
1964-12-01    7312.0
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(seasonal = 'diff')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815
1964-02-01    2672
1964-03-01    2755
1964-04-01    2721
1964-05-01    2946
1964-06-01    3036
1964-07-01    2282
1964-08-01    2212
1964-09-01    2922
1964-10-01    4301
1964-11-01    5764
1964-12-01    7312
dtype: int64

Restore transformation

>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'log')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.0
1964-02-01    2672.0
1964-03-01    2755.0
1964-04-01    2721.0
1964-05-01    2946.0
1964-06-01    3036.0
1964-07-01    2282.0
1964-08-01    2212.0
1964-09-01    2922.0
1964-10-01    4301.0
1964-11-01    5764.0
1964-12-01    7312.0
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'log10')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.0
1964-02-01    2672.0
1964-03-01    2755.0
1964-04-01    2721.0
1964-05-01    2946.0
1964-06-01    3036.0
1964-07-01    2282.0
1964-08-01    2212.0
1964-09-01    2922.0
1964-10-01    4301.0
1964-11-01    5764.0
1964-12-01    7312.0
Name: Perrin, dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'sqrt')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.0
1964-02-01    2672.0
1964-03-01    2755.0
1964-04-01    2721.0
1964-05-01    2946.0
1964-06-01    3036.0
1964-07-01    2282.0
1964-08-01    2212.0
1964-09-01    2922.0
1964-10-01    4301.0
1964-11-01    5764.0
1964-12-01    7312.0
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'cbrt')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.0
1964-02-01    2672.0
1964-03-01    2755.0
1964-04-01    2721.0
1964-05-01    2946.0
1964-06-01    3036.0
1964-07-01    2282.0
1964-08-01    2212.0
1964-09-01    2922.0
1964-10-01    4301.0
1964-11-01    5764.0
1964-12-01    7312.0
dtype: float64
>>> ts = pandas.Series.from_csv('../datasets/champagne_short.csv', index_col = 0, header = 0)
>>> mytransform = transformer(trans = 'boxcox')
>>> transformed = mytransform.fit_transform(ts)
>>> original = mytransform.restore(transformed)
>>> original
Month
1964-01-01    2815.000000
1964-02-01    2671.999999
1964-03-01    2754.999999
1964-04-01    2721.000001
1964-05-01    2946.000000
1964-06-01    3036.000001
1964-07-01    2282.000000
1964-08-01    2212.000001
1964-09-01    2921.999999
1964-10-01    4300.999998
1964-11-01    5763.999989
1964-12-01    7311.999999
Name: Perrin, dtype: float64
class skfore.transformer.transformer(trans=None, trend=None, seasonal=None)[source]

Bases: object

Class to transform the series

Args:

trans (log, log10, sqrt, cbrt, boxcox): Transformation to apply trend (linear, cuadratic, cubic, diff1, diff2): Trend to apply seasonal (poly2, diff): Seasonality to apply

fit_transform(ts)[source]

Return the transformed series

Args:

ts: Time series to apply transformation

intfrq = None

Time series after transformation and restore

model = None

Box Cox transformation lambda (if necessary)

original = None

Transformation values to restore series

restore(ts)[source]

Restore series to its original values

Args:

ts: Time series to restore

ts = None

Frequency integer of the transformed time series