Python - 与公式的变量相关

时间:2017-09-01 14:50:19

标签: python arrays pandas variables correlation

我正在研究150个观测值和1500个变量的光谱医学数据阵列,存储如下(所有这些数据都是浮点数):

blood = ([[sample1_var1..., sample1_var1500],[sample2_var1..., sample2_var1500]..., [sample_150_var1..., sample150_var1500]])

我想获得每个变量与存储在150个观察列表中的另一个变量之间的相关系数,如:

 ery = ([1.524, 1.987..., 1.369])

我需要获得var1ery之间的'r'相关系数,然后var2ery。是否有一种简单的方法(可能是for-loop)?

1 个答案:

答案 0 :(得分:0)

我对你的问题的理解是:

  • blood有1500个变量和150个观察值
  • ery是一个数组/列表(你实际上在你的问题中将它作为一个元素元组)
  • 您希望找到1500个相关性(blood中每个变量与向量ery的相关性)

使用pandas和NumPy:

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

blood = pd.DataFrame(np.random.rand(150,1500)).add_prefix('var')
# blood.shape = (150, 1500)
ery = pd.Series(np.random.rand(150))
print(blood.corrwith(ery))
var0      -0.12897
var1      -0.16448
var2       0.02315
var3      -0.09275
var4      -0.00337
var5       0.00094
var6      -0.13884
var7      -0.04296
var8       0.11895
var9       0.01626
var10      0.04122
var11     -0.04241

var1488    0.12936
var1489   -0.14607
var1490    0.14229
var1491    0.06072
var1492   -0.00815
var1493    0.03401
var1494   -0.00994
var1495   -0.10997
var1496    0.05980
var1497   -0.00930
var1498    0.05205
var1499   -0.11258
dtype: float64

故障排除:有助于指定您在问题中使用的数据结构。你现在拥有的东西是模棱两可的。如果ery是列表,则您需要blood.corrwith(pd.Series(ery))