Python CSV 数据解析及分钟级聚合计算 (600570 股票数据)
本文将讲解如何使用 Python 处理 600570 股票数据 CSV 文件,并进行分钟级聚合计算。数据处理将集中在交易时间段 '9:30-11:30' 和 '13:00-15:00',并按分钟窗口生成 K 线数据。
数据处理步骤:
- 读取 CSV 文件: 使用 Python 的
csv库读取 CSV 文件。 - 时间窗口筛选: 筛选出属于 '9:30-11:30' 和 '13:00-15:00' 时间段的数据。
- 分钟聚合: 对筛选后的数据进行按分钟窗口的聚合计算,生成每分钟的 K 线数据,包括 open_px, high_px, low_px, close_px, business_count, business_amount, business_balance 字段。
聚合逻辑:
- K 线数据:
- open_px: 每分钟第一个快照的 last_px。
- close_px: 每分钟最后一个快照的 last_px。
- high_px: 每分钟内最大的 last_px。
- low_px: 每分钟内最小的 last_px。
- 交易统计:
- business_count, business_amount, business_balance: 每分钟最后一个快照与上一分钟最后一个快照的对应字段的差值。
代码示例:
import csv
import datetime
# 定义时间窗口
time_windows = [('9:30', '11:30'), ('13:00', '15:00')]
# 读取 CSV 文件
with open('stock_data.csv', 'r') as f:
reader = csv.reader(f)
# 处理文件头
next(reader)
# 创建字典存储结果
results = {}
# 遍历每一行数据
for row in reader:
# 获取时间戳和 last_px
timestamp = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S.%f').time()
last_px = float(row[1])
# 判断时间是否在窗口内
for start, end in time_windows:
start_time = datetime.datetime.strptime(start, '%H:%M').time()
end_time = datetime.datetime.strptime(end, '%H:%M').time()
if start_time <= timestamp <= end_time:
# 计算分钟窗口
minute_window = timestamp.strftime('%H:%M')
# 初始化分钟窗口数据
if minute_window not in results:
results[minute_window] = {'open_px': last_px, 'high_px': last_px, 'low_px': last_px, 'close_px': last_px, 'business_count': 0, 'business_amount': 0, 'business_balance': 0}
else:
# 更新 K 线数据
results[minute_window]['high_px'] = max(results[minute_window]['high_px'], last_px)
results[minute_window]['low_px'] = min(results[minute_window]['low_px'], last_px)
results[minute_window]['close_px'] = last_px
# 更新交易统计数据
results[minute_window]['business_count'] += int(row[2]) - results[minute_window]['business_count']
results[minute_window]['business_amount'] += float(row[3]) - results[minute_window]['business_amount']
results[minute_window]['business_balance'] += float(row[4]) - results[minute_window]['business_balance']
# 打印结果
for minute_window, data in results.items():
print(f'分钟窗口: {minute_window}')
for key, value in data.items():
print(f'{key}: {value}')
print('---')
注意事项:
- 请根据实际情况修改代码中的 CSV 文件路径和数据字段。
- 确保 CSV 文件中的时间戳格式正确。
结论:
通过以上步骤,即可完成对 600570 股票数据 CSV 文件的解析和分钟级聚合计算。希望本文能帮助您更好地理解如何使用 Python 处理金融数据。
原文地址: http://www.cveoy.top/t/topic/S7b 著作权归作者所有。请勿转载和采集!