相关性错误

我是 python 和 pandas/matplotlib 的新手。我正在尝试计算迪士尼和 Netflix 的两个收盘股价之间的相关性(作为示例),但不确定我是否做得正确?当我输出如下图所示的数据时,它看起来很奇怪,并不像我预期的那样(因为我预计它是显示两只股票之间相关性的一行)。

计算两个收盘股价之间的相关性的最佳/最简单方法是什么,以及如何使输出看起来更好?任何提示或帮助表示赞赏!

https://img2.mukewang.com/651294e40001630f06500202.jpg

阿晨1998
浏览 90回答 2
2回答

函数式编程

如果您只想要两列之间的相关性,可以使用内置pearsonr模块 in scipy,它返回Pearson 相关性和p 值。尝试这个:#input test data>>> newData        DIS      NFLX0  0.620575  0.1220051  0.124085  0.3800872  0.286652  0.2185333  0.569696  0.5112144  0.081106  0.1146145  0.223516  0.6774686  0.226528  0.4742437  0.998798  0.0995238  0.994585  0.4293529  0.277520  0.882989>>> from scipy import stats>>> corr, p_value = stats.pearsonr(newData['DIS'].values, newData['NFLX'].values)>>> print(corr)-0.25752281938162824它不会返回任何有缺陷的东西。返回一个方形相关矩阵,如果有多个特征/变量,df.corr()这非常有用。您始终可以通过和提取df['DIS']和之间的相关性:df['NFLX']lociloc>>> #test data>>> newData.corr()           DIS      NFLXDIS   1.000000 -0.257523NFLX -0.257523  1.000000 >>> newData.corr().loc['DIS','NFLX']-0.25752281938162824>>> newData.corr().loc['NFLX','DIS']-0.25752281938162824>>> newData.corr().iloc[1][0] # 2nd row and 1st column -0.25752281938162824>>>newData.corr().loc[0][1] # 1nd row and 2nd column -0.25752281938162824您可以使用 pandas 立即使相关矩阵看起来更好style:newData.corr().style.background_gradient(cmap='viridis') 如果你想让相关矩阵看起来更好。您可以使用名为 的seaborn 热图功能sns.heatmap。这是一个例子:import matplotlib.pyplot as pltimport seaborn as snssns.heatmap(newData.corr(),annot=True, lw=2, cmap='coolwarm')plt.show()输出:

斯蒂芬大帝

不,你的答案是对的,这被称为相关矩阵,你从中可以理解什么等于 1 的对角线部分始终为 1,因为同一特征的相关值为 1两只股票之间的相关性等于 0.0272例如,如果你有第三个特征,它将为每个特征生成一个 3*3 矩阵旁注:呈现相关矩阵的一个好方法是使用热图,它很容易理解和可视化,您可以检查这个问题,它有一个很好的答案,有助于理解如何构建它
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python