将OHLC分钟数据转换为每日OHLC d的重采样函数输出不正确

2024-04-20 08:58:16 发布

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

我使用resample函数将分钟数据转换为每日数据,得到的数据不正确。经过对输出的仔细检查,我发现这个过程是输出每天打开的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酒吧作为每日收盘价?谢谢你,威尔


Tags: 数据importdfclosedateasopennan
2条回答

我想你只是把groupbyresample混淆了,因为你想选择一天中的某些值(第一个、最后一个、最大值等),通过分组可以做什么。但是重采样通过插值重新计算你的数据,平均每天只有一个值,随着时间的推移用尽可能接近原始的不同样本重新绘制特征。你知道吗

简而言之:用groupby替换resample。你知道吗

可能的问题是时间序列数据没有按时间递增的顺序排列。 尝试: 数据日=数据框groupby(数据框日期).ohlc()

相关问题 更多 >