首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python代码显示不相关的列而不绘制

如何使用python代码显示不相关的列而不绘制
EN

Stack Overflow用户
提问于 2021-10-01 13:32:10
回答 2查看 43关注 0票数 0

我有一个DataFrame,其中一些列是相关的,而一些列是不相关的。我想只显示不相关的列作为输出。有人能帮我解决这个问题吗?我不想作图,但要显示不相关的列名。

EN

回答 2

Stack Overflow用户

发布于 2021-10-01 14:37:09

您可以首先使用df.corr()计算相关性,然后查找列名,如下所示。

试试这个:

代码语言:javascript
复制
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.RandomState(0).rand(10, 10))
corr = df.corr()
#   0           1           2           3           4            5          6           7           8           9
#0  1.000000    0.347533    0.398948    0.455743    0.072914    -0.233402   -0.731222   0.477978    -0.442621   0.015185
#1  0.347533    1.000000    -0.284056   0.571003    -0.285483   0.382480    -0.362842   0.642578    0.252556    0.190047
#2  0.398948    -0.284056   1.000000    -0.523649   0.152937    -0.139176   -0.092895   0.016266    -0.434016   -0.383585
#3  0.455743    0.571003    -0.523649   1.000000    -0.225343   -0.227577   -0.481548   0.473286    0.279258    0.446650
#4  0.072914    -0.285483   0.152937    -0.225343   1.000000    -0.104438   -0.147477   -0.523283   -0.614603   -0.189916
#5  -0.233402   0.382480    -0.139176   -0.227577   -0.104438   1.000000    -0.030252   0.417640    0.205851    0.095084
#6  -0.731222   -0.362842   -0.092895   -0.481548   -0.147477   -0.030252   1.000000    -0.494440   0.381407    -0.353652
#7  0.477978    0.642578    0.016266    0.473286    -0.523283   0.417640    -0.494440   1.000000    0.375873    0.417863
#8  -0.442621   0.252556    -0.434016   0.279258    -0.614603   0.205851    0.381407    0.375873    1.000000    0.150421
#9  0.015185    0.190047    -0.383585   0.446650    -0.189916   0.095084    -0.353652   0.417863    0.150421    1.000000


threshold = 0.2
uncorr = (corr[(corr.abs() > threshold)].fillna('True').apply(lambda row: row[row == 'True'].index.tolist(), axis=1))
uncorr_df = uncorr.to_frame('col_name_uncorrelated')
# 0 with 4,9 uncorrelated
# 1 with 9 uncorrelated
...
# 9 with 0, 1, 4, 5, 8 uncorrelated

输出:

代码语言:javascript
复制
>>> uncorr_df

    col_name_uncorrelated
0   [4, 9]
1   [9]
2   [4, 5, 6, 7]
3   []
4   [0, 2, 5, 6, 9]
5   [2, 4, 6, 9]
6   [2, 4, 5]
7   [2]
8   [9]
9   [0, 1, 4, 5, 8]
票数 0
EN

Stack Overflow用户

发布于 2021-10-01 17:00:29

首先计算相关性:

代码语言:javascript
复制
import pandas as pd
myDataFrame=pd.DataFrame(data)

correl=myDataFrame.corr()

定义你所说的“不相关”是什么意思。我将在这里使用0.5的绝对值

代码语言:javascript
复制
uncor_level=0.5

以下代码将为您提供不相关对的名称

代码语言:javascript
复制
pairs=np.full([len(correl)**2,2],None) #define an empty array to store the results
z=0
for x in range(0,len(correl)): #loop for each row(index)

    for y in range(0,len(correl)): #loop for each column

        if abs(correl.iloc[x,y])<uncor_level:

            pair=[correl.index[x],correl.columns[y]]
            pairs[z]=pair
            z=z+1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69406758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档