gpt4 book ai didi

python - 有没有更好的方法来提高连接速度?

转载 作者:行者123 更新时间:2023-12-02 19:12:17 24 4
gpt4 key购买 nike

我是韩国的一名学生,我正在使用 python 来分析期权数据(金融)。我正在寻找一种更好的方法来提高 python 代码的性能。

目标数据为期权的交易记录(每分钟),时间段为2015年至2019年。由于数据被分为1227个(5年中的工作日数)文件(txt),因此我尝试将所有1227个文件连接起来,以尽量减少对内存的访问次数。这是因为我将重复使用结果文件(连接文件=预处理文件)并且访问每个单独的文件花费了太多时间。下面是我的代码的一部分。

#file_name is list type and it contains all names of the 1227 day files ordered by date

result_df = pd.DataFrame()
for f in file_name:

data_opt = pd.read_csv(location + f, header = None, sep = "\t")

#do something
#...
#...

oneday_df = pd.concat([minute_call, minute_put], axis = 0) #result of the processing one day data

result_df = pd.concat([result_df, oneday_df], axis = 0)

result_df.to_csv()

这段代码有效,我可以获得正确的结果。不过,我可以看到,速度随着时间的推移而减慢。这意味着我的代码在处理较早的数据时运行速度很快,但在处理较晚的数据时速度会变慢。有没有更好的方法来提高 python 代码的性能?

(抱歉我的英语不太好,感谢您阅读所有问题)

最佳答案

不要在内存中连接,而是保持输出 CSV 文件打开,然后将每个部分分别写入其中?

这样一来,内存中的数据一次就不会超过一天的量,这不仅提高了速度,还提高了内存消耗。

类似于:

with open('out_file.csv', 'w') as of:
for i, f in enumerate(file_name):

data_opt = pd.read_csv(location + f, header = None, sep = "\t")

#do something
#...
#...

oneday_df = pd.concat([minute_call, minute_put], axis = 0) #result of the processing one day data

is_first_part = (i == 0)
oneday_df.to_csv(of, header=is_first_part)

关于python - 有没有更好的方法来提高连接速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64086624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com