如何多个excel中的数据分发到多个excel中去

文章描述了一种方法,通过先将5000多份Excel日K交易数据合并到一个大型DataFrame中,存储在内存中,然后按日期提取相同数据,避免频繁读写Excel文件,从而大大提高数据处理速度,提升了5000倍的效率。
这个问题之前有一个文章我写了这个方法,但是后来发现效率太低了,于是再次更新一下对应的技术方案,提速5000倍。
一下代码主要实现的功能:
我有5000多个excel文件,每个文件是一只股票从上市至今的日K交易数据,
现在我想知道每天所有股票的交易数据快照,相当于要从5000多个excel文件中,把日期相同的数据提出来,形成一个以日期为标签的文件,里面有所有股票这一天的交易数据。

之前的思想:依次从每个excel文件中找到某天的数据,复制到对应的日期文件中去,这里有一个缺点,就是打开和写入excel文件对应计算的开销是很大的,涉及到冷启动的问题。
加快的思想:先把5000只股票的日K数据合并成一个excel(不是合并,建立excel帧,把所有数据合并到一个excel帧中),这个帧数据存储在内存当中,然后再从内存中找到“交易日期”相同的项目,形成一个excel表格。大大的加速。代码如下:




import pandas as pd
import os

# 指定包含Excel文件的文件夹路径
folder_path = 'D:\\tmp_financial\DailyK\standard_dailyK'

# 获取文件夹中所有Excel文件的文件名
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]

# 创建一个空的DataFrame用于存储合并后的数据
merged_df = pd.DataFrame()

# 循环遍历所有Excel文件,合并所有文件到一个数据帧merged_df 中
for file in excel_files:
    # 读取Excel文件
    print(file)
    df = pd.read_excel(os.path.join(folder_path, file))
    # 将当前文件的数据添加到merged_df中
    merged_df = pd.concat([merged_df, df])

# 将合并后的数据保存到一个新的Excel文件中

# 提取“交易时间”列
transaction_times = merged_df['交易时间']
# 创建一个空的DataFrame用于存储具有相同“交易时间”的行
same_time_df = pd.DataFrame()
file_extension = ".xlsx"
des = 'D:\\tmp_financial\DailyK\camera'
# 使用交易时间迭代所有行
for time in transaction_times.unique():
    # 提取具有相同“交易时间”的行
    same_time_rows = merged_df[merged_df['交易时间'] == time]
    # 将这些行添加到新的DataFrame中
    print(time)
    same_time_df = same_time_df.append(same_time_rows)
    des_file = os.path.join(des, time + file_extension)
    same_time_df.to_excel(des_file, index=False)
    same_time_df = pd.DataFrame()#清空这个数据帧,等待下一个日期的数据进入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值