前言
数据是进行量化交易的基础和关键,目前国内做量化产品的金融机构大部分是从券商获取高频实时行情数据的,另外很多金融网站也提供了数据接口,可以调用接口方式获取,也可以用爬虫的方式获取。文本讲述一种更经济便捷的方式来获取数据,即通过同花顺交易软件来导出股票数据,并且将数据转换为DataFrame 表格型的数据结构,以csv的格式存储,便于后续进行量化交易分析。
同花顺交易数据导出
1.打开同花顺软件,点击“分析”栏,选择“历史成交”,此时会出现股票的日线交易数据。
2.点击“右键”,选择“数据导出”—>“导出所有数据”,选择导出的类型为Excel,执行下一步直到完成,即得到了2004年至今的该股交易数据。
3.打开EXCEL文档已经可以查看到导出的数据了,不过在量化领域中最常用使用的是CSV格式,这里将EXCEL另存为CSV格式。CSV文件是一种文本文件,用记事本就能打开。文件的数据列以半角逗号分隔,每一行数据都以回车符结束。它可以非常容易地被导入各种PC表格及数据库中。将EXCEL另存为CSV格式时,CSV文件将EXCEL工作表中的单元格所显示的文本和数值以逗号分离进行保存。
注:如果单元格中包含逗号,则该单元格中的内容以双引号引起。
转换为DataFrame格式
在Python中,pandas是数据处理方面功能最为强大的扩展模块了,包含了高级的数据结构Series和DataFrame,使得在Python中处理数据变得非常方便、快速和简单,后续我们在应用中会深有体会。
方法1:通过pandas模块自带的read_csv函数可直接得到DataFrame格式数据,注意编码格式为“GB2132”,否则控制台会将中文解析为乱码。
df_csvload = pd.read_csv('C:\programPY\CSV_RWdata_ForNewFile\DataChange.csv',parse_dates=True,index_col=0,encoding='gb2312')
方法2:此处使用CSV模块的DictReader函数读取CSV文件,DictReader函数以字典形式返回,字典的键则是这个单元格的标题(即列头),每一个单元格内容放在字典的值内。DataFrame的创建方式有numpy二维数组、列表、Series序列以及字典方式等,此处DictReader函数返回的字典形式数据可直接创建,字典中的keys就是DataFrame里面的columns,但是没有index的值,默认是从零开始计数。
f=codecs.open('C:\programPY\CSV_RWdata_ForNewFile\DataChange.csv','rb','gb2312')#GB2312编码
reader = csv.DictReader(f)
rows = [row for row in reader]
df = pd.DataFrame(rows)
f.close()
该方法需要增加额外的处理,将“时间”列作为index索引,同时将日期信息去除星期几
df.rename(columns={ "时间":'time' },inplace=True)#替换为英文columns for index,colstr in enumerate(df['time']):colstr = colstr.split(',',1)#去除日期中的星期几df.loc[index, 'time'] = colstr[0]
df.index = df['time'].tolist()#time作为index
del df['time']#数据中删除time列
数据保存
数据处理后使用pandas模块自带的to_csv可将数据直接存储为CSV。
df.to_csv('C:\programPY\CSV_RWdata_ForNewFile\DataCheck.csv',columns=df.columns,index=True)
更多python量化交易内容互动请加微信公众号:PythonQT-YuanXiao
欢迎订阅量化交易课程:链接地址