Jon*_*451 3 python arrays optimization performance pandas
任何人都可以帮助理解为什么以下两种方式,我认为是什么,否则与pandas.dataframe groupby方法相同的事情,根据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)
Run Code Online (Sandbox Code Playgroud)
somedf有7200行和24列.
我找不到,
为什么两个衬垫首先将对象分配给变量grp的
速度要快3 倍?
如果这只是groupby方法特有的,或者对pandas甚至是python更通用的东西,例如,关于变量赋值.
非常感谢任何启发,因为这将真正有助于我想要处理的许多更大的数据帧,反复使用许多不同的参数组合.
Ipython的%timeit文档声明:
在单元模式下,第一行中的语句用作设置代码(已执行但未定时),并且单元的主体是定时的.单元体可以访问在设置代码中创建的任何变量.
(我的重点).cell mode是使用双百分比形式触发的%%timeit.%magic在IPython提示符下键入时,IPython打印的文档中还有一个模糊:
Run Code Online (Sandbox Code Playgroud)%%timeit x = numpy.random.randn((100, 100)) numpy.linalg.svd(x)将为numpy svd例程执行时间,在设置阶段中运行x的赋值,这不是定时的.
从而,
%%timeit grp = somedf.groupby('someBoolColumn')
grp['someBoolColumn'].count()
Run Code Online (Sandbox Code Playgroud)
是时间grp['someBoolColumn'].count(),但不是任务grp = somedf.groupby('someBoolColumn').
如何在%%timeit没有设置线的情况下使用:
要使用%%timeit两个语句计时,只需将第一行留空%%timeit:
%%timeit
grp = somedf.groupby('someBoolColumn')
grp['someBoolColumn'].count()
Run Code Online (Sandbox Code Playgroud)
键入Enter两次完成单元格.
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |