Петля для тренда, сезонности и остатков - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь собрать несколько статистических данных об истории моих данных, чтобы лучше их понять.Моя цель - создать цикл, который создает PDF для тренда.сезонность и остаток для каждого столбца в моем фрейме данных.Я написал цикл, чтобы сделать это, но каждый график содержит больше данных, чем нужно.Например, первый созданный график имеет только 1 строку, но затем следующий созданный график содержит строку из первого графика и новую строку.

Я создал некоторые поддельные данные для целей тестирования.Мой код следующий:

#Creating random Data
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import statsmodels.api as sm

#I pulled the following code from another post on stackoverflow to create random data
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(365), freq='D')

np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))
data2 = np.random.randint(1, high=200, size=len(days))
df = pd.DataFrame({'test': days, 'col1': data, 'col2': data2})
df = df.set_index('test')
print(df)


#Loop to create a resid, trend, and seasonality plot for each column in the dataframe
for i in df:
    decomposition = sm.tsa.seasonal_decompose(df[i], model = 'additive')
    decomposition.resid.plot()
    plt.savefig('{} resid.pdf'.format(i), bbox_inches='tight')

    decomposition.seasonal.plot()
    plt.savefig('{} seasonal.pdf'.format(i), bbox_inches='tight')

    decomposition.trend.plot()
    plt.savefig('{} trend.pdf'.format(i), bbox_inches='tight')

Пример графика того, что я пытаюсь получить для каждого столбца: enter image description here

Что я получаю:

enter image description here

Спасибо!

...