最近小编被学Python的金融学妹问到:我只有股票的日K线数据,如何转成周K线?
……这年头,学妹都钻研股票啦?还是个有耐心的玩家,要周K线!
相较日K线,周K线能过滤更多的市场噪音,提高数据的信噪比。能更好地避免被庄家骗线,骗指标。
日K线数据请看下图:图中显示了股票的日线数据,时间是最近两周。
我们要基于以上数据,生成两根周K线。问题清楚了,上代码。
import pandas as pd
path='E:\\' # 文件路径
data=pd.read_csv(path)
data.set_index('time',inplace=True) # 使用resample时,索引必须时时间类型
_resampled=data.resample('1w').agg({'code':'max',
'open':'first',
'close':'last',
'high':'max',
'low':'min',
'volume':'sum',
'money':'sum'})
_resampled
resample()是pandas库中一个非常强大的函数,能对时序数据进行重取样,支持平均、求和、取计值等操作。在使用时一定要先将DataFrame对象的索引设置为时间。而上面用到的.agg()操作可以对不同的列,使用不同的聚合方式。其中的参数是以DataFrame的列名为键,以聚合函数为值的字典。
Tips:max和min不仅能聚合数值类型,还能聚合字符串类型。
看结果:
问题解决了,但还有一个地方可以完善:时间索引的日期都是星期天,而我们需要的是每个星期五的日期。因此还需要加上代码:
import datetime
_resampled.index=_resampled.index+datetime.timedelta(days=-2)
_resampled