gpt4 book ai didi

python - 如何使用 Pandas 计算滚动排名相关性

转载 作者:行者123 更新时间:2023-11-28 16:42:10 26 4
gpt4 key购买 nike

我想计算数据框中两列之间的滚动排名相关性。但是,目前 pandas 中的 rolling_corr 不支持排名关联。我尝试使用 rolling_apply 实现滚动排名关联,但没有成功。看起来 rolling_apply 只需要一个数组作为输入参数,但是关联需要两个数组。有没有一种巧妙的方法可以使用 rolling_apply 或其他一些方法来实现滚动排名相关性?如果可能的话,排名相关性将是对 rolling_corr 的一个很好的补充。

最佳答案

我认为 rolling_apply 不能用于滚动相关,因为它似乎将 DataFrame 分解为一维数组。可能有更好的方法来做到这一点,但一个解决方案是让生成器自己为每个窗口生成一个切片:

def window(length, size=2, start=0):
while start + size <= length:
yield slice(start, start + size)
start += 1

然后循环遍历它..

In [144]: from pandas import DataFrame
...: import numpy as np
...:
...: df = DataFrame(np.arange(10).reshape(2,5).T, columns=['a','b'])
...:
...: df.iloc[0,1] = -1 #still perfect with ranked correlation, but not with pearson's r
...:
...: for w in window(len(df), size=3):
...: df_win = df.iloc[w,:]
...: spearman = df_win['a'].rank().corr(df_win['b'].rank())
...: pearson = df_win['a'].corr(df_win['b'])
...: print w.start, spearman, pearson
...:
0 1.0 0.917662935482
1 1.0 1.0
2 1.0 1.0

关于python - 如何使用 Pandas 计算滚动排名相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com