обработка данных для того, чтобы построить сезонную картину по данным временного ряда - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть данные временного ряда с диапазоном дат, начиная с 2007-04-06 до 2018-09-14

df.index
DatetimeIndex(['2007-04-06', '2007-04-13', '2007-04-20', '2007-04-27',
               '2007-05-04', '2007-05-11', '2007-05-18', '2007-05-25',
               '2007-06-01', '2007-06-08',
               ...
               '2018-07-13', '2018-07-20', '2018-07-27', '2018-08-03',
               '2018-08-10', '2018-08-17', '2018-08-24', '2018-08-31',
               '2018-09-07', '2018-09-14'],
              dtype='datetime64[ns]', name='Date', length=588, freq=None)

Что я собираюсь сделать, это просто построить каждый год отдельной строкой.То есть я пытался вырезать каждый год, используя что-то вроде ниже, и строить каждый год.

Yr2013=znSHFEstock.loc['2013-01-01':'2013-12-31']

Однако, каждый год не отображается отдельной строкой, а становится 1 строкой.мои проблемы:

1, на оси x должны быть метки без следующего года.Может быть что-то вроде января, февраля, марта .... декабря

2, выравнивание данных.Это потому, что количество точек данных для каждого года не будет одинаковым.Например, в марте 2014 года может быть 20 дней для точек данных;однако в марте 2015 года осталось 18 дней. Не будет ли это проблемой при их составлении.Надеюсь, я дал это понять, и спасибо за помощь

Добавление доступных данных здесь

df = pd.DataFrame({'Date':pd.date_range('2003-1-1', periods=4000,freq='B'),'Pre1':np.random.randint(4500, 5000, 4000)},
                  columns=['Date','Pre1'])
df=df.set_index('Date')

1 Ответ

0 голосов
/ 19 сентября 2018

Построение отдельных строк для каждого года.Требуются дополнительные усилия, чтобы иметь правильные отметки оси X.К сожалению, нужно запустить сейчас, посмотрю позже

Фиктивные данные

df = pd.DataFrame({'Date': pd.date_range('2003-1-1', periods=4000, freq='B'), 'Pre1': np.random.randint(4500, 5000, 4000)}, columns=['Date','Pre1'])
df=df.set_index('Date')

Код

df['Date']=df.index
df['Year']=df['Date'].apply(lambda x: x.year)
df['DateWOYear']=df['Date'].apply(lambda x: datetime.datetime(4,x.month,x.day))
grouped = df.groupby('Year')
fig = plt.figure(1)
ax = fig.add_subplot(1, 1, 1)

for y,d in grouped:
    ax.plot(d['DateWOYear'],d['Pre1'],label=y)

Результат

enter image description here

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