如何给 pd.to_excel 加进度条?

2020-07-29 10:59:46 +08:00
 wittyfans

需求是将多个文件分别或合并处理,再按需求导出到 excel 的不同 sheet 。计算过程还好,速度挺快的,但导出 Excel 的时候就很慢,想加个进度条,有了解的 v 友吗?

目前是用 pd.ExcelWriter 将文件导出。尝试了 tqdm,但好像只支持对 pandas 计算过程直接上进度条,试了一下 Dask 的 ProgresBar 好像也不行。

2043 次点击
所在节点    Python
2 条回复
renmu123
2020-07-29 11:37:17 +08:00
pd.to_excel 依赖的是第三方的 excel 读写库,你可以试试看将 Dataframe 手动变成 python 的数据结构后使用 openpyxl 或者 xlsxwriter 导出至 excel,速度可能会比直接使用 pandas 快一点(我也没有经过测试)

PS:如果使用 openpyxl 的话,可以使用 write_only 模式
PPS:我最近在翻译 openpyxl 的中文文档,欢迎围观(第一遍还没翻译完) https://openpyxl-chinese-docs.readthedocs.io/zh_CN/latest/optimized.html
wuwukai007
2020-07-29 16:32:27 +08:00
from copy import deepcopy
from tqdm import tqdm
from openpyxl.worksheet import Worksheet
cell_base = deepcopy(Worksheet.cell)
def cell(*args,**kwargs):
---- _total.update(1)
----return cell_base(*args,**kwargs)
Worksheet.cell = cell

df = pd.read_sql(xxxx)
excel_len = (len(df)+1) * (len(df.columns)+1)
_total = tqdm(range(excel_len),desc='table_name')
df.to_excel('a.xlsx')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693970

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX