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

如何在Pandas中对相关矩阵的正负值分别按行求和

实现代码

你可以直接用Pandas的布尔索引加按行求和实现,代码如下:

import pandas as pd

# 假设你已经通过df.corr()得到了相关矩阵corr_mat
# 1. 按行统计所有正相关值的总和
positive_sum = corr_mat[corr_mat > 0].sum(axis=1)
# 2. 按行统计所有负相关值的总和
negative_sum = corr_mat[corr_mat < 0].sum(axis=1)
# 3. 拼接结果并调整列名
result = pd.DataFrame({
    "PositiveCorr": positive_sum,
    "NegativeCorr": negative_sum
}).reset_index(names="Variable")

# 输出验证
print(result)

效果验证

用你给出的示例相关矩阵测试:

# 构造示例相关矩阵
corr_mat = pd.DataFrame(
    [[1.00, -0.044, -0.8]],
    columns=["A", "B", "C"],
    index=["A"]
)

运行上述代码后输出结果和你要求的格式完全一致:

Variable  PositiveCorr  NegativeCorr
0        A          1.00        -0.844

逻辑说明

  • 布尔索引corr_mat > 0会生成和相关矩阵维度一致的布尔值矩阵,仅大于0的位置为True,筛选后非正数值会变为NaN,按行求和时自动忽略NaN,即可得到所有正相关值的总和
  • 负相关值的统计逻辑同理,筛选小于0的数值求和即可
  • 该逻辑默认包含变量自身的相关系数1.0(相关矩阵对角线值),如果你不需要统计自相关,可在计算前先将对角线置为空值:
    import numpy as np
    np.fill_diagonal(corr_mat.values, np.nan)
    

内容的提问来源于stack exchange,提问作者sinha-shaurya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:36:01