如何在Pandas中实现返回指定列的Top3最高相关性特征?
实现top_corr函数获取特征的Top N相关特征
步骤说明
- 提前计算数据框的相关系数矩阵,作为后续函数的数据源;
- 定义
top_corr函数,接收目标特征名和需要返回的Top数量; - 从相关系数矩阵中提取目标特征的相关系数序列,排除自身的完全相关项(系数为1);
- 按相关系数的绝对值降序排序(若仅需正相关,可移除
abs()),取前N个结果; - 整理成指定格式的表格并输出。
完整代码实现
import pandas as pd import numpy as np # 生成示例数据框 df = pd.DataFrame(np.random.randint(0, 100, size=(5, 5)), columns=list('abcde'), index=list('abcde')) # 计算相关系数矩阵 corr_df = df.corr() def top_corr(feature, top_n): # 提取目标特征的相关系数,排除自身 corr_series = corr_df.loc[feature].drop(feature) # 按相关系数绝对值降序排序,取前top_n个的索引 sorted_indices = corr_series.abs().sort_values(ascending=False).head(top_n).index # 获取原始相关系数值并保留两位小数 top_values = corr_series.loc[sorted_indices].round(2) # 构造结果数据框 result = pd.DataFrame({ 'Features': [feature] * top_n, 'Top Similar Features': sorted_indices, 'Correlation': top_values }) # 打印无索引的表格 print(result.to_string(index=False)) # 调用示例 top_corr('a', 3)
输出示例
运行上述代码后,会输出类似如下格式的结果(数值随随机数据变化):
Features Top Similar Features Correlation a b 0.60 a c -0.62 a e 0.28
内容的提问来源于stack exchange,提问作者Mystic
相关产品推荐
相关产品推荐

