作业期间的进度指标

我经常对超过1500万行的数据帧执行pandas操作,我希望能够访问特定操作的进度指示器

是否存在用于拆分应用联合收割机操作的基于文本的进度指示器

例如,在以下情况下:

df_users.groupby(['userID','requestDate'])。应用(功能汇总)

其中,feature\u rollup是一个有点复杂的函数,它接受许多DF列,并通过各种方法创建新的用户列。对于大数据帧,这些操作可能需要一段时间,因此我想知道是否有可能在iPython笔记本中有基于文本的输出,以更新我的进度

到目前为止,我已经尝试了Python的规范循环进度指示器,但它们没有以任何有意义的方式与pandas交互

我希望在pandas库/文档中有一些我忽略的东西,可以让您了解拆分应用联合收割机的进度。一个简单的实现可能会查看apply函数正在工作的数据帧子集的总数,并将进度报告为这些子集的完成部分

这可能是需要添加到库中的内容吗

由于受欢迎的需求,我在tqdm中添加了pandas支持(pip-install"tqdm>=4.9.0)。与其他答案不同,此不会明显减慢pandas的速度——下面是一个DataFrameGroupBy.progress\u apply的示例:

将熊猫作为pd导入
将numpy作为np导入
从TQM导入TQM
#从tqdm.auto导入笔记本电脑的tqdm
#创建使用“TQM”进度的新“pandas”方法
#(可以使用TQM_gui、可选kwargs等)
tqdm.pandas()
df=pd.DataFrame(np.random.randint(0,int(1e8)、(10000,1000)))
#现在您可以使用'progress\u apply'而不是'apply'`
df.groupby(0).应用进度(λx:x**2)

如果您对其工作原理感兴趣(以及如何为自己的回调修改它),请参阅GitHub上的示例、PyPI上的完整文档,或者导入模块并运行帮助(tqdm)。其他受支持的功能包括mapapplymapaggregatetransform

编辑


要直接回答原始问题,请替换为:

df_users.groupby(['userID','requestDate'])。应用(功能汇总)

与:

从TQM导入TQM
tqdm.pandas()
df_users.groupby(['userID','requestDate'])。应用进度(功能汇总)

注意:tqdm<=v4.8
对于低于4.8的TQM版本,您必须执行以下操作,而不是TQM.pandas()

从TQM导入TQM,TQM\u
tqdm_熊猫(tqdm())

发表评论