【发布时间】:2017-11-29 14:22:37
【问题描述】:
我正在尝试创建一个进度条,用于使用 tqdm 将 excel 数据读入 pandas。我可以使用 csv 使用 chunksize 参数轻松做到这一点,如下所示:
data_reader = pd.read_csv(path,
chunksize = 1000)
for row in tqdm(data_reader,
total = 200):
df_list = []
df_list.append(row)
它会更新 200 个总块中每 1000 个块的进度条。但是,pd.read_excel 不再具有 chunksize 参数。有其他选择吗?
编辑:我已阅读问题 re: reading an excel file in chunks (Reading a portion of a large xlsx file with python),但是,read_excel not 不再有 chunksize 参数,pd.ExcelFile.parse 是等效的。我想知道是否有 chunksize 参数的替代方法或另一种方法来创建可迭代以在读取块时对其进行循环。
【问题讨论】:
-
这是重复的,请参阅this question 以获得答案。
-
@VinceP 不是重复的,请阅读编辑。这些答案不起作用,因为不再有 chunksize 参数。我正在寻找替代品。
-
我从未见过大于内存的 Excel 文件。出于好奇,用例是什么?
-
@AndrewL 我的代码被用于自动化一些基本的重复 ETL 函数以用于工作。它提取了一本需要处理的医疗索赔书以及一些其他数据,以在索赔被人类触及之前进行过滤、分析、细分等。该 excel 文件有 105 列,大约 2000 行,因此读入大约需要一分钟。没有转换为 csv 以使其更快的选项。我想把导入过程变成一个可迭代的,这样我就可以用 tqdm 向用户显示一个进度条。 read_csv 让我这样做(如问题中所述),但 read_excel 没有。
-
更多的是 UX 舒适而不是必需品,如果我只是将数据提取出来进行分析,那将是一回事,但我的非技术同事对等待比我更恼火,特别是因为这对他们来说是每周两次的过程。