Pandas 具有非常方便的功能,可以使用pd.corr()对列进行成对关联。这意味着可以比较任意长度的列之间的相关性。例如:df = pd.DataFrame(np.random.randint(0,100,size=(100, 10))) 0 1 2 3 4 5 6 7 8 90 9 17 55 32 7 97 61 47 48 461 8 83 87 56 17 96 81 8 87 02 60 29 8 68 56 63 81 5 24 523 42 76 6 75 7 59 19 17 3 63...现在可以使用以下命令测试所有 10 列之间的相关性df.corr(method='pearson'): 0 1 2 3 4 5 6 7 8 90 1.000000 0.082789 -0.094096 -0.086091 0.163091 0.013210 0.167204 -0.002514 0.097481 0.0910201 0.082789 1.000000 0.027158 -0.080073 0.056364 -0.050978 -0.018428 -0.014099 -0.135125 -0.0437972 -0.094096 0.027158 1.000000 -0.102975 0.101597 -0.036270 0.202929 0.085181 0.093723 -0.0558243 -0.086091 -0.080073 -0.102975 1.000000 -0.149465 0.033130 -0.020929 0.183301 -0.003853 -0.0628894 0.163091 0.056364 0.101597 -0.149465 1.000000 -0.007567 -0.017212 -0.086300 0.177247 -0.0086125 0.013210 -0.050978 -0.036270 0.033130 -0.007567 1.000000 -0.080148 -0.080915 -0.004612 0.2437136 0.167204 -0.018428 0.202929 -0.020929 -0.017212 -0.080148 1.000000 0.135348 0.070330 0.0081707 -0.002514 -0.014099 0.085181 0.183301 -0.086300 -0.080915 0.135348 1.000000 -0.114413 -0.1116428 0.097481 -0.135125 0.093723 -0.003853 0.177247 -0.004612 0.070330 -0.114413 1.000000 -0.1535649 0.091020 -0.043797 -0.055824 -0.062889 -0.008612 0.243713 0.008170 -0.111642 -0.153564 1.000000是否有一种简单的方法也可以获得相应的 p 值(理想情况下在熊猫中),因为它是由 scipy 的kendalltau()返回的?
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
为什么不使用“方法”参数pandas.DataFrame.corr():
pearson :标准相关系数。
kendall :Kendall Tau 相关系数。
spearman :斯皮尔曼等级相关。
callable: 可调用输入两个 1d ndarrays 并返回一个浮点数。
from scipy.stats import kendalltau, pearsonr, spearmanr
def kendall_pval(x,y):
return kendalltau(x,y)[1]
def pearsonr_pval(x,y):
return pearsonr(x,y)[1]
def spearmanr_pval(x,y):
return spearmanr(x,y)[1]
然后
corr = df.corr(method=pearsonr_pval)
添加回答
举报
0/150
提交
取消