如何将 OHLCV 数据重新采样为 5 分钟? [英] How to resample OHLCV data into 5-min?

查看:41
本文介绍了如何将 OHLCV 数据重新采样为 5 分钟?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这组数据

2016-08-09 12:39:00,536.7841,536.7849,536.6141,536.7849,0.656
2016-08-09 12:40:00,536.6749,536.6749,536.6749,536.6749,0.2642
2016-08-09 12:41:00,535.84,535.84,535.615,535.615,0.348
2016-08-09 12:42:00,535.5401,535.5401,534.1801,534.1801,0.507
2016-08-09 12:43:00,534.5891,534.8753,534.5891,534.807,0.656
2016-08-09 12:44:00,534.8014,534.878,534.8014,534.8416,0.502
2016-08-09 12:45:00,534.8131,534.8131,534.2303,534.6736,0.552
2016-08-09 12:47:00,534.756,538.5999,534.756,534.7836,0.62647241
2016-08-09 12:48:00,536.0557,536.6864,536.0557,536.6864,1.2614
2016-08-09 12:49:00,536.8966,537.7289,536.8966,537.7289,0.532
2016-08-09 12:50:00,537.9829,539.2199,537.9829,539.2199,0.67752932
2016-08-09 12:51:00,538.5,539.2199,538.5,539.2199,0.43768953

我想重新采样到 5 分钟的 OHCLV,所以我做了这个代码:

I want to resample it to 5-minutes OHCLV, so I did this code:

import pandas as pd

df= pd.read_csv("C:\Users\Araujo's PC\Desktop\python_scripts\CSV\cex_btc.csv",
                names=['timestamps','open','high','low','close','volume'])

df.set_index('timestamps',inplace=True)

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum'
    }

df.resample('5T', how=ohlc_dict)

print df

看来我这个错误:

TypeError: 仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但得到了一个 'Index' 实例

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'

有人可以帮助我吗?

推荐答案

您只需要将 timestamps 列中的值转换为 pandas 时间戳,然后再使用它们的值设置索引.我相信它们目前只是文本字段.

You just need to convert the values in your timestamps column to pandas timestamps before setting the index with their values. They are currently just text fields I believe.

df['timestamps'] = pd.to_datetime(df['timestamps'])
df.set_index('timestamps', inplace=True)

>>> df.resample('5T', how=ohlc_dict)

                         high     close      open       low    volume
timestamps                                                           
2016-08-09 12:35:00  536.7849  536.7849  536.7841  536.6141  0.656000
2016-08-09 12:40:00  536.6749  534.8416  536.6749  534.1801  2.277200
2016-08-09 12:45:00  538.5999  537.7289  534.8131  534.2303  2.971872
2016-08-09 12:50:00  539.2199  539.2199  537.9829  537.9829  1.115219

你也可以在阅读csv时尝试解析这些:

You can also try to parse these when reading the csv:

pd.read_csv(filename, parse_dates=['timestamps'],
            names=['timestamps','open','high','low','close','volume'])

这篇关于如何将 OHLCV 数据重新采样为 5 分钟?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆