groupby 中如何显示 tqdm 的进度条?

在循环时调用 tqdm 显示进度已经是一个常规操作,常见的方式是

for ii in tqdm(...):
    ...

while 循环的情况类似,

while icnt in tqdm(range(n)):
    ...
    icnt += 1

这里记录没有显式循环时,在 groupby 中的用法:

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

df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))

# 用 tqdm注册 pandas.progress_apply 和 pandas.Series.map_apply 两个函数,下边的 'my bar1' 可以换成其他说明文字。
tqdm.pandas(desc="my bar!")

# 接下来可以用 progress_apply 代替原本的 dataframe.apply,用 progress_map 代替原本的 dataframe.map
df2 = df.iloc[:, 0].progress_apply(lambda x: x**2)
my bar!: 100%|██████████| 100000/100000 [00:00<00:00, 596835.61it/s]

或者在 groupby 中使用自定义函数:

def calc_x(x):
    return x ** 2
df2 = df.groupby(1).progress_apply(calc_x)
my bar!: 100%|██████████| 100/100 [00:00<00:00, 374.56it/s]

参考资料:
https://pypi.org/project/tqdm/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容