[python]通达信历史日线数据解析转换为CSV文件进行存储
2018-03-02 18:37
4295 查看
[python]通达信历史日线数据解析转换为CSV文件进行存储
参考:http://blog.csdn.net/liuyukuan/article/details/53560278通达信日线数据为其自有格式,无法使用excel进行读取,本文对通达信日线数据进行解析,转换为CSV格式进行存储,方便进行读取和分析。
通达信的日线数据在通达信的安装目录: vipdoc\sh\lday 和vipdoc\sz\lday下面,数据的扩展名为.day,不能使用EXCEL直接进行读取。
通达信的日线数据格式如下:
每32个字节为一天数据
每4个字节为一个字段,
每个字段内低字节在前00 ~ 03 字节:年月日,
整型04 ~ 07 字节:开盘价*100,
整型08 ~ 11 字节:最高价*100,
整型12 ~ 15 字节:最低价*100,
整型16 ~ 19 字节:收盘价*100,
整型20 ~ 23 字节:成交额(元),
float型24 ~ 27 字节:成交量(股),
整型28 ~ 31 字节:(保留)
# %% 导入包
from struct import *
import os
import pandas as pd
#
def exactStockdatatocsv(sourcedir,targetdir,stockfile): #原始数据读取存储入缓存 srcfile = open(sourcedir + os.sep + stockfile, 'rb') buffer = srcfile.read() srcfile.close() #读取的数据长度 buflengh = len(buffer) #32的整数倍 #除32获利文件中存储了多少天的信息 datenum = int(buflengh / 32) #解析每一天的数据的内容,每一天列表的起始位置和终止位置 list_begin = 0 list_end = 32 #创建pandas股票数据表 seriesdata = pd.Series() #创建列表 stockdata = pd.DataFrame(index =range(0,datenum), columns =['date','open','high','low','close','amount','volum']) print(stockdata.index) #将个股数据转换为pandas的dataFrame格式数据 for i in range(datenum): #解析32个字节一天数据 unitdata = unpack('IIIIIfII', buffer[list_begin:list_end]) date = unitdata[0] opens = unitdata[1] / 100.0 high = unitdata[2] / 100.0 low = unitdata[3] / 100.0 close = unitdata[4] / 100.0 amount = unitdata[5] / 10.0 vol = unitdata[6] unused = unitdata[7] #加32指向下一天的数据列表 list_begin = list_begin + 32 list_end = list_end + 32 seriesdata = [ date, opens, high, low, close, amount, vol] # print(unitdata) stockdata.at[stockdata.index[i],'date'] = seriesdata[0] stockdata.at[stockdata.index[i],'open'] = seriesdata[1] stockdata.at[stockdata.index[i],'high'] = seriesdata[2] stockdata.at[stockdata.index[i],'low'] = seriesdata[3] stockdata.at[stockdata.index[i],'close'] = seriesdata[4] stockdata.at[stockdata.index[i],'amount'] = seriesdata[5] stockdata.at[stockdata.index[i],'volum'] = seriesdata[6] #生成对应的文件 savefilename = stockfile[0:8] print(savefilename) stockdata.to_csv(targetdir + os.sep + savefilename +' .csv', encoding='gbk') #通达信上证日线数据目录 shpathdir='D:/new_tdx/vipdoc/sh/lday' #通达信深证日线数据目录 szpathdir='D:/new_tdx/vipdoc/sz/lday' #通达信数据转换后存储目录 shtargetDir='shlday' sztargetDir='szlday' #将上证目录下的所有文件列表出来 szlistfile = os.listdir(szpathdir) for stockfile in szlistfile: print(stockfile) exactStockdatatocsv(szpathdir,sztargetDir,stockfile) #将上证目录下的所有文件列表出来 shlistfile = os.listdir(shpathdir) for stockfile in shlistfile: print(stockfile) exactStockdatatocsv(shpathdir,shtargetDir,stockfile)
通过上面的代码将上证数据和深证数据都转换为CSV格式。
本代码实现与其他参考实例不同的是从文件读取数据进行解析后,生成pandas的dataFrame格式进行存储,然后生成CSV文件。本例实现了所有的数据进行解析及存储,实现中有不对的地方,请指正。
相关文章推荐
- [python]解析通达信盘后数据获取历史日线数据
- [python]解析通达信盘后数据获取历史日线数据
- 数据加载、存储与文件格式 利用Python进行数据分析 第6章
- python把csv数据做成列表、字典类型的数据进行存储脚本(readDataToDic_V2.2)
- python把csv数据做成列表、字典类型的数据进行存储脚本(readDataToDic_V2.2)
- 使用Python和BeautifulSoup爬取历史上的今天网站并将描述及网址存储到csv文件中
- 利用python进行数据分析之数据加载存储与文件格式
- 利用Python进行数据分析--数据加载、存储与文件格式
- python解析csv文件 提取数据
- 利用python进行数据分析-数据加载、存储与文件格式2
- Python3.从csv文件解析MODIS数据的批量下载链接
- 利用python进行数据分析-数据加载、存储与文件格式1
- 文件进行数据存储及读取(存在手机内存里)
- 使用文件进行数据存储的模式
- 文件进行数据存储
- 将大量有规律txt文本数据转换成xml格式,在导入excel,生成excel文件,在导入spass中,对数据进行分析
- Android之使用文件进行数据存储
- 解析.CSV文件中的数据并将其插入到数据库中代码
- Android中使用File文件进行数据存储
- Android中使用File文件进行数据存储