本文将讲解如何使用 Python 处理 600570 股票数据 CSV 文件,并进行分钟级聚合计算。数据处理将集中在交易时间段 '9:30-11:30' 和 '13:00-15:00',并按分钟窗口生成 K 线数据。

数据处理步骤:

  1. 读取 CSV 文件: 使用 Python 的 csv 库读取 CSV 文件。
  2. 时间窗口筛选: 筛选出属于 '9:30-11:30' 和 '13:00-15:00' 时间段的数据。
  3. 分钟聚合: 对筛选后的数据进行按分钟窗口的聚合计算,生成每分钟的 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 处理金融数据。

Python CSV 数据解析及分钟级聚合计算 (600570 股票数据)

原文地址: http://www.cveoy.top/t/topic/S7b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录