【问题标题】:Plotting Weekly Tick Data From A Year Time Series绘制来自一年时间序列的每周刻度数据
【发布时间】:2013-08-17 01:09:15
【问题描述】:

我有一个时间序列,列出了几个月交易历史的期货合约的报价数据。我想要一个图表(折线图),显示时间序列中最近 4 周内每周分时数据的交易历史(该序列不断更新)

X 轴将显示周一至周五的日期,图表上随时会有 4 条单独的线详细说明价格变动数据。我已经设法使用一些代码来绘制每天的最后一笔交易,但我需要绘制分时数据,而不是每行每天只绘制一个数据点。

这是我试图用刻度数据表示的 Excel 图表 (!),只有线条会更加不稳定,因为会有更多数据点。
本质上,一张图表上的 4 条线显示了过去 4 周的交易分时数据:

我没有我尝试过的代码(它在工作中),但可以在明天上传。

【问题讨论】:

  • 您是否有您正在寻找的示例,例如您可以发布的链接或图片?另外,请发布您已经尝试过的内容。
  • 已用图片编辑 - 谢谢

标签: python matplotlib pandas time-series


【解决方案1】:

给你一些假数据:

In [11]: rng = pd.date_range('2013', freq='H', periods=1000)

In [12]: df = pd.DataFrame(np.random.randn(len(rng)), index=rng, columns=['data'])

首先,填充周数(作为一列):

In [13]: df['week'] = df.index.week

接下来,计算从一周开始的时间(可能有更优雅的方法):

In [14]: df['week_beginning'] = df.index.to_period('W').to_timestamp()

In [15]: df['week_time'] = df.index.to_series() - df['week_beginning']

现在您可以使用pivot_table

In [16]: df.pivot_table(values='data', rows='week_time', cols='week')
Out[16]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 168 entries, 0 to 601200000000000
Data columns (total 7 columns):
33    120  non-null values
34    168  non-null values
35    168  non-null values
36    168  non-null values
37    168  non-null values
38    168  non-null values
39    40  non-null values
dtypes: float64(7)

听起来这就是你想要绘制的东西(使用your previous question 中的技术):

In [17]: df.pivot_table('data', 'week_time', 'week').rename(columns=lambda x: 'Week ' + str(x)).plot()

注意:这个特殊的情节相当混乱,因为有很多数据点,事先汇总一些数据可能是有意义的。

【讨论】:

  • 完美!刚刚试用了代码,这正是我所需要的。
  • 一件快速的事情,有什么方法可以绘制最近四个星期的数据?
  • 如果它是上面的(透视)格式,那么使用pv[pv.columns[-4:]] :)
  • 有什么方法可以将 X 轴标签(['week_time'])更改为 Mon,Tue,Wed,Thurs,Fri?
  • 好问题,我认为是这样(应该能够使用 matplotlib 选项更改标签,但不是 100% 知道如何做到这一点)请参阅 stackoverflow.com/questions/11244514/…
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 2023-02-07
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
相关资源
最近更新 更多