我有一个时间序列数据,日期范围从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轴必须是不带年份的标签。可能类似于1月,2月,3月... 12月。
2,数据对齐。这是因为每年的数据点数不会相同。例如,2014年3月内可能有20天的数据点;但是,在2015年3月有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')
答案 0 :(得分:0)
每年绘制单独的行。需要做出更多的努力才能拥有合适的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)