首页 > 解决方案 > 在熊猫中滚动一阶导数和二阶导数

问题描述

我正在尝试创建一个函数来查找 Pandas 中的滚动导数(第一和第二)。我觉得这df.diff()很方便。

我想找到滚动窗口值 = 40 的导数。

对于一阶导数,

noise = np.random.normal(size=int(1e4))
noise=pd.DataFrame(noise)
first_derivative=noise.diff(periods=40)

如果我将它用于二阶导数是否正确?

second_derivative=noise.diff(periods=40).diff()

我很困惑,但如果我periods=40再次放入第二个.diff(),那么它将是 40*40 滚动窗口(对于二阶导数)。谢谢!

标签: pythonpandasderivative

解决方案


Pandas 不是数学库,它的diff()运算只是取元素之间的离散差异,而不是导数。

为了获得导数,我建议您使用SymPy,这是一个用于符号数学的不错的 Python 库。检查文档以获取更多详细信息。

例子:

from sympy import *

>> diff(cos(x), x)
-sin(x)

推荐阅读