1
我正在使用下面的代碼關聯兩個數據幀。基本上,從一個數據幀(a)中選擇一組列,並從另一個數據幀(b)中選擇一列。它完美的工作,除非我需要用spearman的選項來完成。我將不勝感激任何意見或想法。謝謝...Spearman與corrwith python的相關度
a.ix[:,800000:800010].corrwith(b.ix[:,0])
我正在使用下面的代碼關聯兩個數據幀。基本上,從一個數據幀(a)中選擇一組列,並從另一個數據幀(b)中選擇一列。它完美的工作,除非我需要用spearman的選項來完成。我將不勝感激任何意見或想法。謝謝...Spearman與corrwith python的相關度
a.ix[:,800000:800010].corrwith(b.ix[:,0])
考慮在你通過每列到一個函數,這裏的匿名lambda
的數據幀apply
使用pandas.Series.corr,並且每個配對與b
柱:
隨機數據(去籽重現)
import pandas as pd
import numpy as np
np.random.seed(50)
a = pd.DataFrame({'A':np.random.randn(50),
'B':np.random.randn(50),
'C':np.random.randn(50),
'D':np.random.randn(50),
'E':np.random.randn(50)})
b = pd.DataFrame({'test':np.random.randn(10)})
再生Pearson相關
pear_result1 = a.ix[:,0:5].corrwith(b.ix[:,0])
print(pear_result1)
# A -0.073506
# B -0.098045
# C 0.166293
# D 0.123491
# E 0.348576
# dtype: float64
pear_result2 = a.apply(lambda col: col.corr(b.ix[:,0], method='pearson'), axis=0)
print(pear_result2)
# A -0.073506
# B -0.098045
# C 0.166293
# D 0.123491
# E 0.348576
# dtype: float64
print(pear_result1 == pear_result2)
# A True
# B True
# C True
# D True
# E True
# dtype: bool
Spearman相關
spr_result = a.apply(lambda col: col.corr(b.ix[:,0], method='spearman'), axis=0)
print(spr_result)
# A -0.018182
# B -0.103030
# C 0.321212
# D -0.151515
# E 0.321212
# dtype: float64
斯皮爾曼係數與p值
from scipy.stats import spearmanr, pearsonr
# SERIES OF TUPLES (<scipy.stats.stats.SpearmanrResult> class)
spr_all_result = a.apply(lambda col: spearmanr(col, b.ix[:,0]), axis=0)
# SERIES OF FLOATS
spr_corr = a.apply(lambda col: spearmanr(col, b.ix[:,0])[0], axis=0)
spr_pvalues = a.apply(lambda col: spearmanr(col, b.ix[:,0])[1], axis=0)
是完美凍糕......其實,我還可以申請我的原始列選擇的數據幀...這將(a.ix [:,0:5])。apply(lambda col:col.corr(b.ix [:,0],method ='pearson'),axis = 0)。 .....謝謝!! – NYSom
我剛剛意識到....是否有一種簡單的方法在這裏生成pvalues ...?而不必使用scipy.stats .......如果我必須使用scipy.stats,你有沒有機會知道,我如何才能應用相同的框架,你剛剛制定了......謝謝.. – NYSom
是的,您將不得不使用'scipy.stats'來檢索pvalues。請參閱擴展答案,以獲取corr和p值以及每個系列的新值。此外,StackOverflow還有一種特殊的方式說[謝謝](https://meta.stackexchange.com/a/5235)。 – Parfait