Python 计算熊猫中每列数据的自相关
我想计算每一列数据的一阶自相关系数 我希望下面的每一个代码都给出相同的结果,但结果不一样 我应该用哪一个Python 计算熊猫中每列数据的自相关,python,pandas,dataframe,autocorrelation,Python,Pandas,Dataframe,Autocorrelation,我想计算每一列数据的一阶自相关系数 我希望下面的每一个代码都给出相同的结果,但结果不一样 我应该用哪一个 df[df.columns.to_list()].apply(lambda x: x.corr(x.shift())) 或 第二个应该是df[df.columns.to_list()].apply(lambda x:x.autocorr()),因为您需要内括号来调用autocorr函数 这些代码段应该给出完全相同的结果,因为autocorr的实现是一行代码:self.corr(self.s
df[df.columns.to_list()].apply(lambda x: x.corr(x.shift()))
或
第二个应该是
df[df.columns.to_list()].apply(lambda x:x.autocorr())
,因为您需要内括号来调用autocorr
函数
这些代码段应该给出完全相同的结果,因为autocorr
的实现是一行代码:self.corr(self.shift(lag))
,这与第一个代码段相同
如果这仍然不起作用,请与可复制的示例共享您的数据
作为第二个注意事项,使用
df[df.columns.to_list()]
没有任何特殊作用,因为您没有创建数据的子集,所以您只需执行df。应用并跳过df[df.columns.to_list()]
谢谢您的回复。实际上,当我添加括号时,现在显示的结果与方法相同。为什么代码仍然在没有括号的情况下运行?代码之所以运行,是因为在python中,函数是对象。因此x.autocorr
只是获取附加到对象x
(apd.Series
对象)的函数autocorr
。现在这个函数本身也是一个对象——如果不添加括号,将返回这个函数。您需要括号来调用函数,并使其实际执行您期望的操作。您能告诉我为什么在下面的链接中,“在第一个答案中,pd.Series.pct\u change
不使用括号吗?当我添加括号时,它甚至不起作用!!!我在理解这个概念时遗漏了什么?是的,这是一个将函数作为对象传递的好例子。本质上,函数调用是延迟的,因此groupby
操作可以为其提供参数。虽然这不是熊猫的具体情况,但您可以阅读更多关于熊猫的信息
df[df.columns.to_list()].apply(lambda x: x.autocorr)