gpt4 book ai didi

python - 写入约 27k 行 38 列数据需要约 6 个多小时,这正常吗?

转载 作者:行者123 更新时间:2023-12-01 07:47:47 25 4
gpt4 key购买 nike

我正在创建一个约 27k 行的 pandas 数据框,其中包含 8 列文本和 30 列 float 。从 Google BigQuery 中提取数据并创建 DataFrame 和其他格式化变量大约需要 5 分钟。然而,一旦我开始写作过程,我就会遇到一堵砖墙。将此数据写入工作表平均需要 6 个多小时。它每秒写入约 1.2 行。我制作的其他 Excel 模板花费的时间至少减少了 70 倍,每秒写入 70-250 多行。我不明白为什么要花这么长时间。有什么事情我可以做得更有效吗?

我尝试过使用Pandas' integration with xlsxwriter但我不能/不知道如何使用单元格级格式化。我发现的所有内容似乎都表明它不支持这一点。当我使用它时,查询、创建和写入总共需要 8 分钟。添加单元格级格式设置怎么会花费这么多时间?

我还尝试在创建工作簿时添加 'constant_memory':True 选项,效果可以忽略不计。我不确定还有什么可以尝试的。我查看了正在访问的数据的大小,数据帧约为 24mb,格式变量约为 0.6。

我的写作功能的一个最小示例是:

    num_rows, num_cols = main_df.shape

for r in tqdm(xrange(num_rows), desc = 'Writing Rows'):
for c in xrange(num_cols):
worksheet.write(r, c, main_df.iloc[r, c], excel_format_data[r][c])

我知道tqdm增加了开销,但我将它与我讨论过的其他文件一起使用,并且使用相同的代码它们要快得多。唯一的区别是行数,但它不会按 1-1 缩放。

我预计输出需要一段时间,根据我运行的其他模板,可能需​​要 2-3 小时。根据xlsxwriter documentation他们用了不到 30 秒的时间写入了 12,800 行 50 列数据。他们的表显示时间与行数成相对 1 比 1 的比例,所以应该需要我大约一分钟?目前需要 6 个多小时,因此显然出现了问题。

我使用的是配备 2.3 GHz Intel Core i5 和 16 GB 2133 MHz LPDDR3 的 MacBook Pro 2017。

最佳答案

@juanpa.arrivilillaga 在评论中提供了一个答案,这对我帮助很大(见上文)。

基本上,.iloc 的效率极其低下,通过使用 .iat,我已经能够将写入时间从约 6 小时缩短到约 7 分钟。

关于python - 写入约 27k 行 38 列数据需要约 6 个多小时,这正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366066/

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