Как разделить датафрейм по годам в питоне? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть датафрейм под названием «dataframe», который содержит кучу информации о продажах за определенную дату. Каждая запись даты представлена ​​в формате ГГГГ-ММ-ДД, и данные варьируются с 2012 по 2017 год. Я хотел бы разбить этот фрейм данных на 6 отдельных фреймов данных, по одному на каждый год. Так, например, первый разделенный фрейм данных будет содержать все записи с 2012 года.

Я думаю, что смог сделать это в коде ниже. Я делю данные на один для каждого года и помещаю их в список «лет». Однако, когда я пытаюсь запустить auto_arima на каждом кадре данных, я получаю сообщение об ошибке «Найдено входные переменные с непоследовательным количеством выборок».

Я думаю, это потому, что я неправильно разделяю свой исходный кадр данных. Как правильно разделить мой фрейм данных по году?

#Partition data into years
years = [g for n, g in dataframe.set_index('Date').groupby(pd.Grouper(freq='Y'))]

#Create a list that will hold all auto_arima results for every dataframe
stepwise_models = []

#Call auto_arima on every dataframe
for x in range(len(years)-1):
    currentDf = years[x]
    model = auto_arima(currentDf['price'], exogenous=xreg, start_p=1, start_q=1,
        max_p=3, max_q=3, m=12,
        start_P=0, seasonal=True,
        d=1, D=1, trace=True,
        error_action='ignore',  
        suppress_warnings=True, 
        stepwise=True)
    stepwise_models.append(model) #Store current auto_arima result in our stepwise_models[] list

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете использовать datetime accesor для фильтрации строк по годам и создания нового кадра данных по годам

import datetime as dt
dataframe1=dataframe[dataframe['Date'].dt.year == 2012]
...