2016-05-19 63 views
2

我知道如何創建一個(可愛)熊貓相關表,由相關排名限於m列。熊貓相關表由n行

問題是,它會以交叉矩陣的形式輸出值的完整矩陣(對於所有列x所有列)的相關性。

但是如果我只想檢查一列,比如說df['m'],那麼它在所有其他列上的相關性呢?

我是否需要創建兩個數據框並檢查它們之間的相關性?有更快的腳本嗎?

回答

1

IIUC,你可以只切片corr()DataFrame這樣的:

c = df.corr()['m'].abs() 
so = c.sort_values(kind='quicksort') 
print(so) 
2

你可以簡單地通過df列循環,並建立一個系列出來的相關性:

result = (pd.Series([df['m'].corr(df[col]) for col in df], index=df.columns) 
      .abs().sort_values()) 

如果您打算爲多列做到這一點,它可能更快地計算出整個相關矩陣和使用.loc選擇感興趣的行:so.loc['m']


例如,

import numpy as np 
import pandas as pd 
np.random.seed(2016) 

df = pd.DataFrame(np.random.random((4,4)), columns=list('klmn')) 
result = (pd.Series([df['m'].corr(df[col]) for col in df], index=df.columns) 
      .abs().sort_values()) 
print(result) 
# l 0.041438 
# n 0.086255 
# k 0.393375 
# m 1.000000 
# dtype: float64 

c = df.corr().abs() 
s = c.unstack() 
so = s.sort_values() # s.order is deprecated. use s.sort_values 
print(so.loc['m']) 
# l 0.041438 
# n 0.086255 
# k 0.393375 
# m 1.000000 
# dtype: float64 

resultso.loc['m']是相同的。