我有一个数据框,我目前正在使用 scipy.stats.kurtosis
函数在滚动窗口的基础上获取峰度。我知道有一个性能更好的内置 Pandas 解决方案,pandas.kurt
;然而,我 found 对于 Python 3.8 之前的 Python 版本来说,这是一个相当错误且充满数字不一致的问题;此外,我很好奇是否有可能以任何方式将 pandas.DataFrame.rolling.apply
构造转换为 numpy
以便能够利用 numba
(因为 {{1} } 在支持的库方面非常有限,numba
不在其中)。我当前的工作示例如下:
pandas
如果到目前为止我对 df.rolling(20, min_periods=3).apply(lambda x: kurtosis(x, bias=False))
的所有理解都正确,我将需要一个可以 jit 的单独函数,因此我创建了一个 numba
函数:
scipy_kurtosis
现在,如果可能的话,下一步应该是转换 @nb.njit(nogil=True)
def scipy_kurtosis(x):
return kurtosis(x, bias=False)
构造,以便 df.rolling(20, min_periods=3)
和 jitted apply()
函数不接收要操作的 pandas 对象.这是可能的并且是一个合理的步骤吗?