数据处理以绘制时间序列d上的季节性模式

2024-06-14 07:13:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个时间序列数据,日期范围从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、axix必须是标签,旁边没有年份。可能是一月,二月,三月…十二月

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')

Tags: 数据namedfdateindex时间序列length
1条回答
网友
1楼 · 发布于 2024-06-14 07:13:08

为每年绘制单独的线。更多的努力需要有适当的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

相关问题 更多 >