股票联动与轮动布尔数据集构建在线实验闯关
第1关:股票交易数据获取
# -*- coding: utf-8 -*-
#读取股票“交易日历数据表.xlsx”,其中字段名称为:
#交易日期(Clddt)、星期(Daywk)
#读取股票交易数据表“DA.xlsx”,其中字段名称为:
#股票代码(Stkcd)、交易日期(Trddt)、收盘价(Clsprc)
#任务如下:
# 1.读取交易日历数据表,记为td,并统计获得2017-01-01~12-31全年的实际交易天数M
# 2.读取股票交易数据表,获得其交易数据,记为data
# 3.获得2017年全年均在交易(交易天数为M)的股票代码,用列表code来表示
def return_values():
import pandas as pd
td=pd.read_excel('交易日历数据表.xlsx')
data=pd.read_excel('DA.xlsx')
I1=td['Clddt'].values>='2017-01-01'
I2=td['Clddt'].values<='2017-12-31'
I=I1&I2
ddt=td.loc[I,['Clddt']]
M=len(ddt) #计算ddt的长度,全年的实际交易天数M
# 统计Stkcd出现次数
code_record=data.iloc[:,0].value_counts()
# 选取与全年日期的个数对应的股票代码
code=list(code_record[code_record==M].index)
return (M,data,code,td)
第2关:股票日联动与轮动布尔数据集构建
# -*- coding: utf-8 -*-
#读取股票基本信息表“TRD_Co.xlsx”,其中字段名称为:
#股票代码(Stkcd)、股票简称(Stknme)
# 基于上一关的返回结果,完成如下任务:
#1.从第二个交易日开始,计算每只股票每个交易日的涨跌情况
# 如果上涨记为1,否则为0
#2.构造布尔型涨跌标识数据集,用数据框Data来表示,其中
# index为交易日期,字段名称所有股票的“股票简称_up”,值记为0或者1的布尔值数组
def return_values():
import pandas as pd
import numpy as np
import step10_1
r=step10_1.return_values()
data=r[1]
code=r[2]
td=r[3]
stk=pd.read_excel('TRD_Co.xlsx')
sname=pd.Series(list(stk.iloc[:,1]),index=stk.iloc[:,0])
import numpy as np
D=dict()
for t in range(len(code)):
dt=data.loc[data.iloc[:,0].values==code[t],['Trddt','Clsprc']].sort_values('Trddt')
dt1=dt.iloc[0:-1,[1]]['Clsprc'];
dt2=dt.iloc[1:,[1]]['Clsprc'];
z21_up=np.zeros(len(dt1))
z21_up[dt2.values-dt1.values>0]=1
D.setdefault(sname[code[t]]+'_up',z21_up)
Data=pd.DataFrame(D,index=td['Clddt'].values[1:])
return Data