2 回答
TA贡献1807条经验 获得超9个赞
如果您只想要两列之间的相关性,可以使用内置pearsonr
模块 in scipy
,它返回Pearson 相关性和p 值。
尝试这个:
#input test data
>>> newData
DIS NFLX
0 0.620575 0.122005
1 0.124085 0.380087
2 0.286652 0.218533
3 0.569696 0.511214
4 0.081106 0.114614
5 0.223516 0.677468
6 0.226528 0.474243
7 0.998798 0.099523
8 0.994585 0.429352
9 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 NFLX
DIS 1.000000 -0.257523
NFLX -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 plt
import seaborn as sns
sns.heatmap(newData.corr(),annot=True, lw=2, cmap='coolwarm')
plt.show()
输出:
TA贡献1827条经验 获得超8个赞
不,你的答案是对的,这被称为相关矩阵,你从中可以理解什么
等于 1 的对角线部分始终为 1,因为同一特征的相关值为 1
两只股票之间的相关性等于 0.0272
例如,如果你有第三个特征,它将为每个特征生成一个 3*3 矩阵
旁注:呈现相关矩阵的一个好方法是使用热图,它很容易理解和可视化,您可以检查这个问题,它有一个很好的答案,有助于理解如何构建它
添加回答
举报