Python Сезонное разложение Определение параметра Freq - PullRequest
0 голосов
/ 31 мая 2018

Несмотря на то, что вопрос, похоже, решался очень часто, я не могу понять, почему сезонная декомпозиция не работает в моем случае, хотя я даю в качестве входных данных фрейм данных с индексом Datetime.Вот пример моего набора данных:

    Customer order actual date  Sales Volumes
0   01/01/1900                           300
1   10/03/2008                          3000
2   15/11/2013                            10
3   23/12/2013                           200
4   04/03/2014                             5
5   17/03/2014                            30
6   22/04/2014                             1
7   26/06/2014                           290
8   30/06/2014                            40

фрагмент кода показан ниже:

from statsmodels.tsa.seasonal import seasonal_decompose
df_agg['Customer order actual date'] = pd.to_datetime(df_agg['Customer order actual date'])
df_agg = df_agg.set_index('Customer order actual date')
df_agg.reset_index().sort_values('Customer order actual date', ascending=True)
decomposition = seasonal_decompose(np.asarray(df_agg['Sales Volumes'] ), model = 'multiplicative')

Но я систематически получаю следующую ошибку:

: Вы должны указать, что freq или x должны быть объектом pandas с индексом временных рядов, для которого freq не установлен в None

Не могли бы вы объяснить, почему я должен давать ввод freq, хотя я использую фрейм данных сУказатель даты и времени?Имеет ли смысл указывать частоту в качестве входного параметра, в то время как я ищу сезонность как выход сезонного_действия?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Две точки в вашем фрагменте кода.

  1. В строке 4 кода вы сбрасываете индекс, но не присваиваете его значению, если хотите сделать это на месте,Вы должны добавить inplace=True
  2. сезонных работ по разложению на временных сериях, поэтому ваши данные должны иметь индекс даты и времени.(Вы можете сделать это либо во время загрузки CSV, либо использовать функцию pd.to_datetime().
0 голосов
/ 07 июня 2018

Функция season_decompose получает частоту через inferred_freq.Вот ссылка - https://pandas -docs.github.io / pandas-docs-travis / generate / pandas.DatetimeIndex.html

Inferred_freq, с другой стороны, генерируется infer_freq и Infer_freqиспользует значения ряда, а не индекса.https://pandas.pydata.org/pandas-docs/stable/generated/pandas.infer_freq.html

Это может быть причиной, по которой для freq необходимо установить значение даже с индексом временного ряда.

И в случае, если вы хотите знать, какая частота в сезонной_декомпозиции () -Это собственность ваших данных.Таким образом, если вы собирали свои данные месяц за месяцем, то они будут иметь месячную частоту.

Метод, используемый в методе season_decompose () для расчета частоты: _maybe_get_pandas_wrapper_freq ().

Я провел некоторое исследование по сезонному_декомпозиции() и вот ссылки, которые могут помочь вам понять исходный код функции -

исходный код сезонной декомпозиции - https://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/seasonal.py

Проверить - _maybe_get_pandas_wrapper_freq https://searchcode.com/codesearch/view/86129760/

Надеюсь, это поможет!Дайте мне знать, если вы найдете что-то интересное в дополнение к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...