获取 pandas 数据框中元素的序列相关性的 Pythonic 方法

标签 python python-2.7 pandas dataframe

给定一个数据框

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/

相关文章:

python - 确定列表中的所有元素是否都存在并且在另一个列表中的顺序相同

python - 基于通过欧氏距离(或任何其他距离计算技术)提取的 SIFT 描述符估计两幅图像的相似性分数

python3 + Pandas 样式 + 更改交替行颜色

python - 覆盖内置类,特别是字典类

python - 如何分组并计算pandas每列中非缺失值的百分比?

python - 对多个文件运行 Python 单元测试

python - 如何在 Django 中获取带有注释的每天帖子数量?

python - 从列表中提取时间值并添加到新列表或数组

Python:如何在另一个数据框中查找值?

python - 在 pandas 索引对象上运行内置方法时出现奇怪的错误