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 矩陣
旁注:呈現(xiàn)相關矩陣的一個好方法是使用熱圖,它很容易理解和可視化,您可以檢查這個問題,它有一個很好的答案,有助于理解如何構建它
添加回答
舉報