You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历Pandas DataFrame获取索引与列标签以批量生成regplot回归图

批量生成回归图的实现方案

你可以使用DataFrame.stack()方法将宽格式的相关矩阵转为带配对变量索引的长格式数据,直接获取每一组行标签、列标签以及对应的相关系数,完全满足批量遍历生成regplot的需求。
你所用的相关矩阵样式参考:
相关矩阵示例

具体实现步骤

  • 第一步:预处理相关矩阵,过滤无效/重复配对
    相关矩阵为对称结构,且对角线为变量自身的相关系数(值为1,无回归分析意义),可先过滤这部分数据避免重复绘图:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 替换为你自己的相关矩阵变量名、原始数据集变量名
corr_mat = 你的皮尔逊相关矩阵DataFrame
raw_df = 用于绘制回归图的原始数据集DataFrame

# 将宽格式相关矩阵转为长格式,索引为(变量1, 变量2),值为对应皮尔逊相关系数
corr_pairs = corr_mat.stack().reset_index()
corr_pairs.columns = ['var_x', 'var_y', 'corr_coef']

# 过滤规则1:只保留x变量字典序小于y变量的配对,避免重复生成x-y和y-x两张重复的图
# 若需要生成所有方向的配对,可删除下一行
corr_pairs = corr_pairs[corr_pairs['var_x'] < corr_pairs['var_y']]

# 过滤规则2(可选):只保留相关系数绝对值大于阈值的配对,减少无意义绘图
# 可根据你的需求调整阈值,比如这里设为0.3
corr_pairs = corr_pairs[corr_pairs['corr_coef'].abs() >= 0.3]
  • 第二步:遍历配对批量生成regplot
for _, row in corr_pairs.iterrows():
    x_col = row['var_x']
    y_col = row['var_y']
    corr_value = row['corr_coef']
    
    plt.figure(figsize=(6, 4))
    sns.regplot(data=raw_df, x=x_col, y=y_col)
    plt.title(f"{x_col} 与 {y_col} 回归关系 (Pearson r = {corr_value:.2f})")
    # 可选:将生成的图保存到本地
    # plt.savefig(f"reg_{x_col}_{y_col}.png", dpi=120, bbox_inches="tight")
    plt.show()

补充说明

如果需要自定义遍历规则,也可以直接嵌套循环遍历相关矩阵的行、列索引:

# 嵌套循环实现方式
all_cols = corr_mat.columns.tolist()
for x_col in all_cols:
    for y_col in all_cols:
        # 可自行加过滤条件,比如跳过自相关、跳过相关系数小于阈值的配对
        if x_col == y_col or abs(corr_mat.loc[x_col, y_col]) < 0.3:
            continue
        # 后续绘图逻辑和上面一致

内容的提问来源于stack exchange,提问作者Alex L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:57:03