从本地d:\路径下导入两个通达信股票系统盘后下载的文件,5分钟数据文件名为sz000001.lc5、1分钟数据文件名为sz000001.lc1;通达信5分钟、1分钟数据格式为二进制格式,内容为''' 00 ~ 01 字节 日期,整型;计算方法为:year = floor(num/2048) + 2004; month = floor(mod(num,2048)/100); day = mod(mod(num,2048), 100); 02 ~ 03 字节 0点至目前的分钟数,整型 04 ~ 07 字节 开盘价100,整型 08 ~ 11 字节 最高价100,整型 12 ~ 15 字节 最低价100,整型 16 ~ 19 字节 收盘价100,整型 20 ~ 23 字节 成交额*100,float型 24 ~ 27 字节 成交量(股),整型 28 ~ 31 字节 (保留)''',请你将导入的两个数据文件(通达信5分钟、1分钟数据格式)用python第三方解析包解析数据、并存为CSV格式文件,并保存在相同相同路径下。
时间: 2024-02-26 11:59:34 浏览: 201
好的,您可以使用以下代码实现:
```python
import struct
import pandas as pd
# 读取二进制文件并解析
def read_dat(file_path):
with open(file_path, 'rb') as f:
data = f.read()
# 计算数据长度
data_len = len(data)
# 计算数据条数
n = data_len // 32
# 解析数据
result = []
for i in range(n):
start = i * 32
# 日期
date = struct.unpack('<H', data[start:start+2])[0]
year = date // 2048 + 2004
month = date % 2048 // 100
day = date % 100
# 时间
time = struct.unpack('<H', data[start+2:start+4])[0]
hour = time // 60
minute = time % 60
# 开盘价、最高价、最低价、收盘价、成交额、成交量
open_price = struct.unpack('<I', data[start+4:start+8])[0] / 100
high_price = struct.unpack('<I', data[start+8:start+12])[0] / 100
low_price = struct.unpack('<I', data[start+12:start+16])[0] / 100
close_price = struct.unpack('<I', data[start+16:start+20])[0] / 100
amount = struct.unpack('<f', data[start+20:start+24])[0]
volume = struct.unpack('<I', data[start+24:start+28])[0]
result.append([year, month, day, hour, minute, open_price, high_price, low_price, close_price, amount, volume])
# 转化为DataFrame并返回
return pd.DataFrame(result, columns=['year', 'month', 'day', 'hour', 'minute', 'open_price', 'high_price', 'low_price', 'close_price', 'amount', 'volume'])
# 读取数据文件并保存为CSV格式
def save_csv(file_path):
# 读取5分钟数据
df_5min = read_dat(file_path + 'sz000001.lc5')
# 保存为CSV格式
df_5min.to_csv(file_path + 'sz000001_5min.csv', index=False)
# 读取1分钟数据
df_1min = read_dat(file_path + 'sz000001.lc1')
# 保存为CSV格式
df_1min.to_csv(file_path + 'sz000001_1min.csv', index=False)
# 指定文件路径并保存为CSV格式
save_csv('d:\\')
```
注:需要安装Pandas库,可以使用pip install pandas命令进行安装。
阅读全文