Я бы предложил Пророк , разработанный группой по науке в Facebook. Он имеет API-интерфейс Python + R и используется для прогнозирования временных рядов, хотя вы можете использовать его только для разложения ряда на его компоненты (тренд против сезонности). Вы можете легко настроить и визуализировать разложение:
from fbprophet import Prophet
import numpy as np
import pandas as pd
# Create series
np.random.seed(0)
x = np.arange(0, 10, .285)
y_periodic = np.sin(x*np.pi)
y_random = np.random.normal(size=len(x))
y_trend = x / 10.
df = pd.DataFrame({'ds': pd.date_range('01-01-2017', periods=len(x)),
'y': y_periodic})
df.head() # has to be a DataFrame with columns "ds" and "y"
df.set_index('ds').plot(style='-*')
# Estimate the model
m = Prophet()
m.fit(df);
forecast = m.predict(df)
m.plot_components(forecast);