给定一个数据框
A = pd.DataFrame([[1, -5, 2], [2, -4, -4], [3, 3, 1], [-4, 2, -2], [-5, 1, 4]],
columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
以Pythonic的方式,如何获取列中连续元素成对的序列相关性。序列相关性很简单:
例如,对于 A 列的第一个元素:
如果元素1A > 0 & 2A > 0 or 1A < 0 & 2A < 0 Serial Correlation = 1
如果元素1A > 0 & 2A < 0 or 1A < 0 & 2A > 0 Serial Correlation = -1
您将沿着列将每个元素与前一个元素进行比较。
使用我们的虚拟 df 获得所需的输出。
A B C
1
2 1 1 -1
3 1 -1 -1
4 -1 1 -1
5 1 1 -1
然后我会做类似 serial_corr = df.mean()
的事情,以获得该列的总 s.correlation。
谢谢
最佳答案
您可以使用DataFrame 的
shift
方法。注意:如果比较的任何一个值是 0,这将产生 NaN。
result = (A.shift() * A).dropna()
result /= result.abs()
print(result)
产生
A B C
2 1 1 -1
3 1 -1 -1
4 -1 1 -1
5 1 1 -1
关于获取 pandas 数据框中元素的序列相关性的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999595/