如何使用Python代码无需绘图展示DataFrame中的不相关列
实现方案
以下是基于pandas的实现代码,核心思路是通过计算列间相关系数矩阵,筛选出与其他所有列相关度均低于指定阈值的列:
完整代码示例
import pandas as pd import numpy as np # 假设df为你已有的DataFrame # 1. 仅保留数值列计算相关系数,非数值列无法计算相关性 num_df = df.select_dtypes(include='number') # 2. 计算绝对值相关系数矩阵,默认用皮尔逊相关 corr_matrix = num_df.corr().abs() # 3. 把对角线的自相关值(固定为1)替换为0,避免干扰判断 np.fill_diagonal(corr_matrix.values, 0) # 4. 自定义相关性阈值,低于该值认为是不相关,可根据需求调整 corr_threshold = 0.1 # 5. 筛选出和其他所有列的最大相关系数都低于阈值的列 uncorrelated_columns = corr_matrix.columns[corr_matrix.max(axis=1) < corr_threshold].tolist() # 输出结果 print(uncorrelated_columns)
可选调整说明
- 若需要使用斯皮尔曼/肯德尔相关系数,修改
corr()方法的参数即可,比如num_df.corr(method='spearman') - 阈值可根据业务场景调整:要求严格的不相关场景可设为0.05,宽松场景可设为0.2
- 若你的DataFrame已经全是数值列,可以跳过第一步筛选数值列的步骤
内容的提问来源于stack exchange,提问作者user17051608
相关产品推荐
相关产品推荐

