如何制作从大型 xlsx 文件加载 pandas DataFrame 的进度条?

2024-01-10

from https://pypi.org/project/tqdm/ https://pypi.org/project/tqdm/:

import pandas as pd
import numpy as np
from tqdm import tqdm

df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
tqdm.pandas(desc="my bar!")p`
df.progress_apply(lambda x: x**2)

我获取了这段代码并对其进行了编辑,以便从 load_excel 创建一个 DataFrame 而不是使用随机数:

import pandas as pd
from tqdm import tqdm
import numpy as np

filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x**2)

这给了我一个错误,所以我将 df.progress_apply 更改为:

df.progress_apply(lambda x: x)

这是最终的代码:

import pandas as pd
from tqdm import tqdm
import numpy as np

filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x)

这会产生一个进度条,但它实际上并不显示任何进度,而是加载进度条,当操作完成时,它会跳转到 100%,从而达不到目的。

我的问题是:如何使这个进度条发挥作用?
Progress_apply 内部的函数实际上做了什么?
有更好的方法吗?也许是 tqdm 的替代品?

任何帮助是极大的赞赏。


以下是利用 tqdm 的单行解决方案:

import pandas as pd
from tqdm import tqdm

df = pd.concat([chunk for chunk in tqdm(pd.read_csv(file_name, chunksize=1000), desc='Loading data')])

如果您知道要加载的总行数,则可以使用参数添加该信息total到 tqdm 函数,产生百分比输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作从大型 xlsx 文件加载 pandas DataFrame 的进度条? 的相关文章

随机推荐