python - 将 OHLC 分钟数据转换为每日 OHLC 数据的重采样函数输出不正确
问题描述
我使用resample
将分钟数据转换为每日数据的功能获得了不正确的数据。在仔细检查输出后,我发现该进程正在输出 DAILY OPEN 的 16:00 柱线的开盘价。此外,它输出 9:31 柱的收盘价作为每日收盘价。
这是我的代码:
import numpy as np
import pandas as pd
from pylab import mpl, plt
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
import cufflinks as cf
df = pd.read_csv('ES#CMin_Pit.csv', index_col='Date', parse_dates=['Date'])
df.tail()
Time Inc Vol Volume Open High Low Close
Date
2005-09-07 09:34:00 2309.0 39145.0 1150.75 1151.00 1150.50 1150.75
2005-09-07 09:33:00 1803.0 36836.0 1150.75 1150.75 1150.25 1150.50
2005-09-07 09:32:00 972.0 35033.0 1150.75 1150.75 1150.50 1150.75
2005-09-07 09:31:00 1440.0 34061.0 1150.75 1151.00 1150.50 1150.50
NaT NaN NaN NaN NaN NaN NaN NaN
conversion = {'Open' : 'first', 'High' : 'max', 'Low' : 'min', 'Close' : 'last', 'Volume' : 'sum'}
data_day = df.resample('D').apply(conversion)
data_day.tail(5)
Open High Low Close Volume
Date
2018-05-20 NaN NaN NaN NaN 0.0
2018-05-21 2732.50 2739.25 2725.25 2730.50 210297692.0
2018-05-22 2726.00 2741.75 2721.50 2738.25 179224835.0
2018-05-23 2731.75 2732.75 2708.50 2710.50 292305588.0
2018-05-24 2726.00 2730.50 2705.75 2725.00 312575571.0
我怀疑问题在于建立“转换”字典,但是,我已经看到这种方法在我的研究中不止一次使用。有什么建议可以指定适当的柱线来提取每日开盘价和收盘价吗?即,使用 9:31 分钟柱线的“第一根”柱线而不是 16:00 柱线作为每日开盘价。另外使用 16:00 柱的“最后一个”而不是 9:31 柱作为每日收盘价?谢谢 LL
解决方案
可能的问题是您的时间序列数据未按时间递增顺序排序。试试:data_day = df.groupby(df.Date).ohlc()
推荐阅读
- python - 关于神经网络的一般图片问题
- postgresql - pg_rewind 无法同步第二个数据库
- php - 如何在 php 中使用带有 Object 的 json 编码
- reactjs - reactJS中使用react-router-dom认证的路由
- haskell - 使用 Haskell 程序查找列表中位数的问题
- tensorflow - 如何使用 pip 安装 tensorflow 版本 1.12.0
- python - 在python中创建一个正则表达式匹配所有hls url
- amazon-web-services - 适用于媒体(视频)流媒体的 AWS 服务
- java - JSON 到多行 Java 字符串转换器
- awk - 了解 OFS 在 AWK 中的工作原理