Skip to main content

Time series decomposition plot trend and seasonality together

Project description

time-decomp

Time series decomposition plot trend and seasonality

Plot trend and seasonality together in one chart as described at Business Days Time Series Weekly Trend and Seasonality.

Example usage from ./Python/tests/keew_decomp_test.py

# create test
# test_decomposition.py
import unittest
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from time_decomp.decomposition import DecompositionSingleton

class TestKeewDecomposition(unittest.TestCase):
    def setUp(self):
        self.decomp = DecompositionSingleton()

        n = 2000

        df = pd.DataFrame({'A': np.random.randint(0,100, size=(n,)), 'B': np.random.randint(0,100, size=(n,))})

        lsDays = [pd.Timestamp(2021, 1, 1)]*n
        for i in range(n):
            # construct time, where iYear-iMonth-i
            lsDays[i] = pd.Timestamp( np.random.randint(2021,2025), np.random.randint(1,13) , (i+1) % 28 + 1)    

        df['Day'] = lsDays

        df['Year'] = df['Day'].dt.year
        df['Month'] = df['Day'].dt.month
        df['KeewMonth'] = df['Day'].apply(self.decomp.get_month_keew)
        df['Keew']=(df['Month']-1)*4+df['KeewMonth']

        self.decomp.df = df.groupby(['Year', 'Keew']).last().reset_index()
        
        self.decomp.features = ['A', 'B']
        self.decomp.decompose_params = {'model': 'additive', 'period':48, 'extrapolate_trend':'freq'}        

    def test_plot_decomposition(self):

        # output df info
        print("Starting test_plot_decomposition")
        print("DataFrame Info:")
        print(self.decomp.df.info())
        print("DataFrame Head:")
        print("\n%s", self.decomp.df.head())

    
        self.decomp.m_decompose()
        self.decomp.plot_decomposition('A', 'Year', range(2021,2025), 'Keew', 'A keew', chart_elements=[self.decomp.ChartElement.TREND, self.decomp.ChartElement.SEASONAL])
        plt.show()

Added PLOTLY to run from IPython Notebook

from plotly.offline import iplot

decomp.m_decompose()
fig = decomp.plot_decomposition_plotly('A', 'Year', range(2021,2025), 'Keew', 'A keew', chart_elements=[ decomp.ChartElement.OBSERVED, decomp.ChartElement.SEASONAL])
iplot(fig)

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

time_decomp-1.2.2.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

time_decomp-1.2.2-py2.py3-none-any.whl (8.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file time_decomp-1.2.2.tar.gz.

File metadata

  • Download URL: time_decomp-1.2.2.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for time_decomp-1.2.2.tar.gz
Algorithm Hash digest
SHA256 ea4a8ff93c2679879162952f8e776e786b36c3a63f64b4ac325b10c62e00b690
MD5 23cca6cd5bf7d999f19c69d9f3e5f261
BLAKE2b-256 80e0a3da0050bd5e687677b268c642dbf7cb7d32345476a68a7ea29d32ed853c

See more details on using hashes here.

File details

Details for the file time_decomp-1.2.2-py2.py3-none-any.whl.

File metadata

  • Download URL: time_decomp-1.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for time_decomp-1.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4bd12ee691ea8838102ddcdc9a9c46780e7fa06ca0aaf0f61b4c8365ece6b3b2
MD5 779c294b3f95b686577a06300e930bc3
BLAKE2b-256 47417c39aea1f0ee39545f6028d807d29c37492b7d38fb8e7aa3e1e841ea3fd9

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