量化:数据整合和处理(三)

本文介绍了如何使用Python的os和shutil模块整理股票数据,将申万一级行业的csv文件合并到stock文件夹,以及处理所有csv文件的最后一行多余数据。后续将进入量化学习阶段。
摘要由CSDN通过智能技术生成

思路

       书接上回,所有股票按照申万一级行业获取和存储完,接下来就是整合文件夹,主要用到os和shutil模块。os用于处理文件、目录和路径操作,shutil用于处理文件移动和复制。

       原本想按照"电力设备","轻工制造","医药生物","电子","计算机","传媒","机械设备"这七个成长期行业弄一个数据库,最后决定做一个全行业的,做一个七行业的。所有子行业数据存在quant1/申万一级文件夹中。文件位置如下。

代码

import os
import shutil

# 定义quant1文件夹路径和stock文件夹路径
quant1_folder = '申万一级'
stock_folder = 'stock'

# 遍历quant1文件夹下的所有文件夹
for root, dirs, files in os.walk(quant1_folder):
    # 遍历当前文件夹中的所有文件
    for file in files:
        # 判断文件是否为csv文件
        if file.endswith('.csv'):
            # 构建csv文件的完整路径
            csv_path = os.path.join(root, file)
            # 将csv文件复制stock文件夹下
            shutil.copy(csv_path, stock_folder)  

# 输出完成提示
print('所有csv文件已合并到stock文件夹下')

七行业代码

# 定义申万一级文件夹路径和stock2文件夹路径
sw_dir = '申万一级'
target_dir = 'stock2'

# 定义文件夹列表
folders = ["电力设备","轻工制造","医药生物","电子","计算机","传媒","机械设备"]

# 遍历每个文件夹
for folder in folders:
    # 构建当前文件夹的完整路径
    folder_path = os.path.join(sw_dir, folder)
    
    # 遍历当前文件夹下的所有文件
    for file in os.listdir(folder_path):
        # 判断文件是否为csv文件
        if file.endswith('.csv'):
            # 构建当前文件的完整路径
            file_path = os.path.join(folder_path, file)
            
            # 复制文件到目标文件夹中
            shutil.copy(file_path, target_dir)
            
print('所有csv文件已合并到stock2文件夹下')

最后一行的处理

         打开数据文件检查一下,结果发现所有数据都最后一行多了20200918这行,具体原因我也没找到。因此需要处理一下。路径为stock文件夹,用for语句遍历所有csv文件,读取文件、删除最后一行,存储替换原文件。

代码如下:

import csv

# stock文件夹路径或者文件路径改为:folder_path = 'stock2' 
folder_path = 'stock'  

# 遍历stock文件夹下的所有csv文件
for filename in os.listdir(folder_path):
    if filename.endswith('.csv'):
        file_path = os.path.join(folder_path, filename)
        
        # 打开并读取csv文件内容
        with open(file_path, 'r') as file:
            reader = csv.reader(file)
            rows = list(reader)
        
        # 删除最后一行数据
        if len(rows) > 0:
            rows = rows[:-1]
        
        # 将修改后的内容写回原始csv文件
        with open(file_path, 'w', newline='') as file:
            writer = csv.writer(file)
            writer.writerows(rows)

# 完成删除操作
print('已删除stock文件夹下所有csv文件的最后一行。')

folder_path = 'stock2'可以处理七行业的数据库文件,受上传数据量大小限制,压缩包里只有2000个剩下3109个不显示。

       下一篇开始正式进入量化学习。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值