为什么是Pandas.dataframe.groupby先分配给变量更快?

2024-09-27 23:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

有谁能帮我理解一下为什么要用下面两种方法来做,我想是什么,否则用熊猫.dataframegroupby方法,根据iPython的Magic%timeit,在不同的时间完成?在

%timeit somedf.groupby('someBoolColumn')['someBoolColumn'].count()
484 µs ± 9.52 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit grp = somedf.groupby('someBoolColumn')
grp['someBoolColumn'].count()
146 µs ± 1.47 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

somedf有7200行和24列。在

我找不到

  1. 为什么首先将对象分配给变量grp的两个线性函数是>;3
    速度更快,nor;

  2. 如果这只是特定于groupby方法或 比如,熊猫,甚至Python的一些更普遍的东西 变量分配。

非常感谢您的任何启示,因为这将真正帮助我处理许多更大的数据帧,重复使用许多不同的参数组合。在


Tags: of方法devloopcountrunsmeanstd
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:52

Ipython的^{} docs 状态:

In cell mode, the statement in the first line is used as setup code (executed but not timed) and the body of the cell is timed. The cell body has access to any variables created in the setup code.

(我的重点)。cell mode是通过使用%%timeit的双百分比形式触发的。 当您在IPython提示符处键入%magic时,IPython在文档中也会打印出一个简介:

%%timeit x = numpy.random.randn((100, 100))
numpy.linalg.svd(x)

will time the execution of the numpy svd routine, running the assignment of x as part of the setup phase, which is not timed.


因此

%%timeit grp = somedf.groupby('someBoolColumn')
grp['someBoolColumn'].count()

是计时grp['someBoolColumn'].count(),但不是赋值grp = somedf.groupby('someBoolColumn')。在


如何在没有设置行的情况下使用%%timeit

要使用%%timeit对两个语句计时,只需将%%timeit后的第一行留空:

^{pr2}$

输入两次Enter即可完成单元格。在

相关问题 更多 >

    热门问题