python - python - 如何仅针对特定值在python中找到spearman的相关性?
问题描述
我有一个五列的数据矩阵
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_policy == "omit"
了 Nan 将在计算中被忽略。见scipy.stats.spearmanr。
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)
推荐阅读
- apache - RewriteCond 和 RewriteRule 工作正常,除非不使用路径
- javascript - @aws-cdk/pipelines 和 @aws-cdk/aws-codepipeline 有什么区别?
- css - 如何在Angular 8的一个组件中有条件地添加两个css文件
- java - Hibernate SessionFactory 和表映射
- python-3.x - 获取正确的 Python3 依赖项时出错
- python - 如何随机选择非零元素并将其替换为0?
- android - 如何每 5 秒更新一次 ViewPager2
- php - 准备涉及数组和其他参数的 MySQL 语句
- python - 这个表达式是如何计算的?“foo”中的“f”==真
- kendo-chart - Angular 12 kendo Stacked Chart 仅显示总计或总和