Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到斯皮尔曼';在python中,仅针对特定值的关联?_Python_Python 3.x_Pandas_Scipy_Correlation - Fatal编程技术网

如何找到斯皮尔曼';在python中,仅针对特定值的关联?

如何找到斯皮尔曼';在python中,仅针对特定值的关联?,python,python-3.x,pandas,scipy,correlation,Python,Python 3.x,Pandas,Scipy,Correlation,我有一个五列的数据矩阵 0 1 2 3 4 nan 34 23 34 11 43 34 123 4 44 45 12 4 nan 66 89 78 43 435 23 nan 89 nan 12 687 6 232 34 4 nan 24 56 34 121 56 nan

我有一个五列的数据矩阵

 0     1     2     3     4 

nan    34    23    34     11

43    34   123     4     44

45    12     4   nan     66

89    78    43   435     23

nan   89   nan   12     687

 6    232    34    4     nan

24    56    34   121     56

nan    9    nan   54     12

 24   nan    54    12    nan

 76    11   123    76     78

 43   nan    65    23     89

 68   233    34   nan     89

 65    53    nan    7     78

 34    65     12    8     12

 56    98     43    nan   43
我还有一个fvector

fvector
23

67

23

nan

nan

87

323

nan

78

32

78

112

nan

56

nan

56
到目前为止,我刚刚能够找到基于整列的相关性

for i in datamatrix:
    coef,p=spearmanr(datamatrix[i],fvector)
    print(coef,p,"for column ",i)
我想实现两件事:

1) 。我想找到fvector和datamatrix的每一列之间的spearman相关性,但如果两个变量中的一个或两个都是nan,那么我想删除特定对的相关性。 例如,第1列中的第4个值是78,fvector中的第4个值是nan,所以我想从关联过程中排除特定的一对(不是整个列)。我不知道如何使用特定变量来查找关联

2) 。如果fvector和datamatrix列中nan值的总数大于30%,则从查找相关性中排除整个列

任何资源或参考都会有所帮助

谢谢

1)如果您设置了
nan\u policy==“ommit”
则计算中将忽略nan。看

2) 可以通过以下方式计算每列中Nan的百分比:
(df[i].isna().sum()*100)/df.shape[0]

总而言之:

nan_fvectr = int(vector.isna().sum())
for i in df:
    if ((df[i].isna().sum()+nan_fvectr)*100)/(df.shape[0]*2) >= 30:
        continue
    coef,p=stats.spearmanr(df[i],vector, nan_policy="omit")
    print(coef,p,"for column ",i)
1) 如果其中一对缺失,nan_策略是否会忽略排除这两对关联?2) 我想计算nan值的总和(datamatrix和fvector中的特定列)1是的,如果该对中的两个值之一缺失,则在计算中忽略该对。2) 检查更新的答案。在fvector中,缺少5个值。因此,我所做的是为df中的每列添加5到Nan的量。然后,将百分比计算为该和*100并除以df的长度*2。*2是因为我假设你想要列和向量中NaN的百分比。如果不是这样,只需删除If条件中的*2即可。