熊猫重拍频率问题

时间:2016-06-08 17:18:23

标签: python pandas time-series

我正面临一个问题w.r.t pandas resample。 我有1米频率的OHLC数据。我希望将这些数据转换为5米频率并计算它的移动平均值。 假设我的移动平均值为20个柱(每个5米),然后我首先将100bars(1m bar)加载到数据帧,使用

将其转换为5m频率
conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume': 'last'}

resample_high = df_high.resample('5T', closed='right',label='right').apply(conversion).dropna()
然后

计算这个新数据框的移动平均值。 1分钟后,新的1米数据栏将可用(实时馈送),我将更新当前数据帧 1.)从数据框中删除第1个条目(总条目99) 2.)向数据框添加新条目(总条目100)

我将再次计算移动平均线并继续上述过程直到一天结束。

这里的问题是当我创建重采样数据帧时,它从

开始
xx:05:00
xx:10:00
xx:15:00

我期待框架以第一个日期索引开头,比如说数据是: -

4/8/2016 14:27,850.6,850.75,849.85,849.85,4667
4/8/2016 14:28,849.85,849.95,849.4,849.5,9933
4/8/2016 14:29,849.5,850,849.45,850,2720
4/8/2016 14:30,849.95,850.45,849.45,849.45,7795
4/8/2016 14:31,849.45,850.95,849.45,850.9,7143

5米重新采样以

开始
4/8/2016 14:30:00 XX XX XX XX

由于新的条目没有添加到数据框计算中,因此简单移动平均值的计算每次都是错误的。

如果有任何不清楚的地方,请告诉我,我会尽量让它更精细。

添加了重新采样和计算SMA的代码(使用TALIB模块)。

conversion    = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close':'last', 'Volume': 'last'}
order         = df_high.columns.tolist()
resample_high = df_high.resample('5T', closed='right',    label='right').apply(conversion).dropna()
df_h          = resample_high[order]
SMA_20        = talib.SMA(np.array(df_h['Close']), timeperiod=20)[19] }

转换问题: - 我的数据是: -

04/08/16    10:32:00    843.9   844.1   843.8   843.8   3618
04/08/16    10:33:00    843.85  844     843.5   843.7   3590
04/08/16    10:34:00    843.6   843.8   843.25  843.55  3841
04/08/16    10:35:00    843.55  843.9   843.55  843.75  4012
04/08/16    10:36:00    843.75  844.2   843.75  843.85  5337
04/08/16    10:37:00    843.9   844.8   843.9   844.4   2978
04/08/16    10:38:00    844.4   844.75  844.4   844.6   2773
04/08/16    10:39:00    844.55  844.85  844.3   844.4   3887

转换后我得到: -

2016-04-08 10:35:00  843.90  844.10  843.25  843.75    4012
2016-04-08 10:35:00  843.85  844.00  843.25  843.75    4012
2016-04-08 10:35:00  843.60  843.90  843.25  843.75    4012
2016-04-08 10:35:00  843.55  843.90  843.55  843.75    4012

0 个答案:

没有答案