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)
Added trends analysis from EnvironmentalTrends
from time_decomp.environmentaltrends import EnvironmentalTrends
# Set pandas option to display all columns
pd.set_option('display.max_columns', None)
class TestEnvironmentalTrends(unittest.TestCase):
def setUp(self):
self.decomp = EnvironmentalTrends()
self.decomp.features = ['A']
self.decomp.trend_data_params = {'year_col':'Year', 'month_col':'Month' }
self.decomp.trends_params = {'seasons_per_year': 12, 'trend_lengths': [1], 'end_years': [2025]}
def test_m_trends(self):
self.decomp.m_trends()
# output df info
print("Starting test_plot_decomposition")
print("DataFrame Info:")
print(self.decomp.t['A'].info())
print("DataFrame Head:")
print("\n%s", self.decomp.t['A'].head())
DataFrame Head:
%s Frequency SeasonsPeryear TrendLength TrendEnd TrendPeriod \
0 Monthly 12 1 2025 Jul 2024 to Jun 2025
ValueCount Minimum Median Average Maximum YearsInPeriod \
0 12.0 5.0 48.0 50.333333 96.0 1.0
SeasonsInPeriod PercentOfYears PercentOfSeasons KW-pValue Seasonality \
0 12.0 100.0 100.0 0.443263 Non-seasonal
AppliedSeasonality MK-S MK-Variance MK-pvalue IncreasingLikelihood \
0 Non-seasonal 8.0 212.666667 0.631222 68.438909
TrendDirection SenSlope LowerSlope UpperSlope
0 Likely increasing 16.5 -384.0 544.8
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
time_decomp-1.3.0.tar.gz
(10.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file time_decomp-1.3.0.tar.gz.
File metadata
- Download URL: time_decomp-1.3.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc1d40e135e8cdb877be96d2a22dcb32c68aa9261f5b40de83fc3a370f79cc10
|
|
| MD5 |
6b08b185c1d3d878e98b18fea3871e22
|
|
| BLAKE2b-256 |
f57443aaa6573b3e4affe3311da177aad7e511be2591fae5673ffc87b8783cd3
|
File details
Details for the file time_decomp-1.3.0-py2.py3-none-any.whl.
File metadata
- Download URL: time_decomp-1.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fa44c1d40a6fa43d6bb2a3e2e7dd3246c6762921b267517defd25d552b8d841
|
|
| MD5 |
b6149b3bdc2183ef498989456a5c2cc3
|
|
| BLAKE2b-256 |
50c6c10c9a43ddc9ea1c9c0246e05a71daaed1c777a9a8510c2abcff80f9a56b
|