我有一个DataFrame对象stocks
填充了股票收益。我有另一个DataFrame对象industries
填充了行业返回。我想找出每只股票与每个行业的相关性。
import numpy as np
np.random.seed(123)
df1=pd.DataFrame( {'s1':np.random.randn(10000), 's2':np.random.randn(10000) } )
df2=pd.DataFrame( {'i1':np.random.randn(10000), 'i2':np.random.randn(10000) } )
要做到这一点,代价高昂的方法是合并这两个数据帧对象,计算相关性,然后抛出所有股票到股票和行业到行业的相关性。有没有更有效的方法来做到这一点?
(编辑以添加:请查看@yt的答案,该答案稍后添加,但显然更好。)
您可以使用
numpy.corrcoef()
,这与pandas中的corr
基本相同,但是语法可能更适合您想要的内容。上面印着:
或者,可以将结果加载到具有适当标签的数据帧中:
看起来是这样的:
这是一个在列上使用
apply
并避免嵌套for循环的单行程序。主要好处是apply
在数据帧中生成结果。这里有一个比JohnE的答案稍微简单一点的答案,JohnE的答案是本地使用熊猫,而不是使用numpy.corrcoef。作为额外的好处,您不必从一个愚蠢的2x2相关矩阵中检索相关值,因为pandas的序列到序列相关函数只返回一个数字,而不是一个矩阵。
相关问题 更多 >
编程相关推荐