我经常对超过1500万行左右的数据帧执行pandas操作,我希望能够访问特定操作的进度指示器。
是否存在基于文本的pandas split apply combine操作进度指示器?
例如,在类似于:
df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)
其中feature_rollup
是一个有点复杂的函数,它接受许多DF列并通过各种方法创建新的用户列。对于大型数据帧,这些操作可能需要一段时间,因此我想知道是否有可能在iPython笔记本中使用基于文本的输出来更新我的进度。
到目前为止,我已经尝试了Python的规范循环进度指示器,但是它们没有以任何有意义的方式与panda交互。
我希望在pandas库/文档中有一些我忽略了的东西,可以让人知道拆分应用组合的进度。一个简单的实现可能会查看apply
函数在其上工作的数据帧子集的总数,并将进度报告为这些子集的完成部分。
这可能是需要添加到库中的内容吗?
如果您像我一样需要在Jupyter/ipython笔记本中使用此功能的支持,这里有一个有用的指南和relevant article的源代码:
注意
_tqdm_notebook
的import语句中的下划线。正如参考文章所提到的,开发处于后期测试阶段。修改Jeff的答案(并将其作为可重用函数)。
注意:应用进度百分比updates inline。如果你的函数出错,这就不起作用了。
像往常一样,您可以将其作为一种方法添加到groupby对象中:
正如评论中提到的,这不是核心熊猫感兴趣实现的功能。但是python允许您为许多pandas对象/方法创建这些对象/方法(这样做将是相当多的工作。。。尽管你应该能够概括这种方法)。
由于流行的需求,
tqdm
增加了对pandas
的支持。与其他答案不同,这个不会明显减慢熊猫的速度--下面是一个DataFrameGroupBy.progress_apply
的示例:如果您对它的工作方式感兴趣(以及如何为自己的回调修改它),请参见examples on github、full documentation on pypi,或者导入模块并运行
help(tqdm)
。编辑
要直接回答原始问题,请替换:
使用:
注意:tqdm<;=v4.8: 对于低于4.8的TQM版本,您必须执行以下操作,而不是
tqdm.pandas()
:相关问题 更多 >
编程相关推荐