pandas 系列 `any`、`max`、`sum` 与 python 内置函数的性能好奇心

Performance curiosity on pandas series `any`, `max`, `sum` vs python builtins

在使用 pandas/numpy 的 python 应用程序中寻求性能通常受益于使用 pandas/numpy 实现的方法而不是自己实现的代码,例如通过循环。这可能是对我提出的问题的一个糟糕介绍,但在下面的屏幕截图中(如果我没有测试过的话)我期望使用该系列方法的版本 运行 比 python 更快内置。既然不是这样,这意味着我对这个例子建立了错误的直觉,但我还找不到原因。所以问题是,为什么在这种情况下使用 python 内建函数比系列中应用的方法具有更高的性能(我是否遗漏了其他东西?)?

Pandas 有自己的函数,与 Python 的内置函数 方式 不同,因此如果你调用 Series.max() 你实际上是在调用 nanops._nanminmax() which is added via the IndexOpsMixin instead of builtins.max()

每个行为不同,因此具有不同的执行时间。

其余方法也类似。如果您好奇,请检查 Series class 和 class 的源代码,以了解内置函数和 Pandas 实现之间的确切差异。

我还漏掉了什么吗?

你假设你总是会得到相同的结果,这是不正确的。 sumpandas.Series.sum 的不同输出示例是

import pandas as pd
s = pd.Series([1.0,2.0,float("nan")])
print(s.sum())
print(sum(s))

输出

3.0
nan