当前位置: 首页 > 知识库问答 >
问题:

熊猫行动期间的进度指标

杜建章
2023-03-14

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

例如,在类似于:

df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)

其中feature_rollup是一个包含许多DF列并通过各种方法创建新用户列的函数。对于大数据帧,这些操作可能需要一段时间,所以我想知道是否可以在iPython笔记本中提供基于文本的输出,以更新我的进度。

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

这也许是需要添加到库中的东西吗?

共有1个答案

傅茂实
2023-03-14

由于流行的需求,我在tqdm中添加了pandas支持(pip install“tqdm>=4.9.0”)。与其他答案不同,这不会显著降低熊猫的速度--下面是DataFrameGroupBy.progress_apply的一个示例:

import pandas as pd
import numpy as np
from tqdm import tqdm
# from tqdm.auto import tqdm  # for notebooks

df = pd.DataFrame(np.random.randint(0, int(1e8), (10000, 1000)))

# Create new `pandas` methods which use `tqdm` progress
# (can use tqdm_gui, optional kwargs, etc.)
tqdm.pandas()

# Now you can use `progress_apply` instead of `apply`
df.groupby(0).progress_apply(lambda x: x**2)

如果您对它的工作原理感兴趣(以及如何为自己的回调修改它),请参阅github上的示例、pypi上的完整文档,或者导入模块并运行help(tqdm)。其他支持的函数包括mapapplymapaggreattransform

编辑

df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)

与:

from tqdm import tqdm
tqdm.pandas()
df_users.groupby(['userID', 'requestDate']).progress_apply(feature_rollup)

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

from tqdm import tqdm, tqdm_pandas
tqdm_pandas(tqdm())
 类似资料:
  • 问题内容: 我在Python 2.7中的Pandas DataFrame中具有以下内容: 我正在寻找计算数据帧中连续行之间的距离。输出应如下所示: 我尝试如下进行调整: 但是,出现以下错误: 此错误已通过MaxU的注释修复。修复后,此计算的输出没有意义-距离近8000 km: 根据: 这个在线计算器:如果我使用Latitude1 = 74.166061,Longitude1 = 30.512811

  • 问题内容: 我有一个熊猫数据框,如下所示: 我想按它排序,但该列只是一个。 我试图将列设置为日期对象,但是遇到了一种格式不需要的格式的问题。所需的格式为等。 因此,现在我试图找出如何使numpy将“美国”日期转换为ISO标准,以便可以使它们成为日期对象,以便可以对它们进行排序。 我该如何将这些美国日期转换为ISO标准,或者我在熊猫中缺少更直接的方法? 问题答案: 您可以用来转换为日期时间对象。它带

  • 问题内容: 在pandas数据框中有一个datetime列,其值如下: 我想知道如何舍入这些值,摆脱毫秒,仅将日期,小时,分钟和00表示为秒,如下所示: 问题答案: 使用与用于分钟设置: 我想将时间值更改为下一个值:

  • 我正在尝试编写一个函数,如果< code > selection _ Match = = ' No Match ' then < code > DNB = score _ difference 0.02 然而,我返回相同的df,没有任何修改 虽然它应该回来 Lorem ipsum dolor sit amet,consecetur adipiscing elit,sed do eiusmod te

  • 我试图使用pandas.to_datetime()将只包含小时、分钟和秒的日期列转换为日期时间形式。但是,它会自动添加年份和日期。我还尝试使用pandas.to_datetime(df["time"],format = % H:% M:% S ")dt . time,数据类型仍然是object。有没有什么方法可以变成不带年份和日期的datetime格式?

  • 问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为