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

如何使用Polars实现与Pandas一致的十列间相关性计算效果?

在Polars中实现Pandas相关性计算逻辑

原Pandas代码逻辑回顾

你之前的Pandas代码完成了以下操作:

  1. 仅计算DataFrame中数值列的相关系数矩阵
  2. 将矩阵堆叠为长格式(MultiIndex索引的Series)
  3. 按相关系数降序排序
  4. 过滤掉相关系数等于1的行(即列与自身的相关性)

Polars实现代码

以下是完全对齐原逻辑的Polars代码:

import polars as pl

# 1. 选择数值列并计算相关系数矩阵
corr_matrix = df.select(pl.col(pl.NUMERIC_DTYPES)).corr()

# 2. 将矩阵转为长格式(对应Pandas的stack操作)
corr_long = (
    corr_matrix
    .with_row_index("col1")  # 将行名转为列,作为第一列
    .unpivot(index="col1", variable_name="col2", value_name="correlation")  # 宽表转长表
)

# 3. 按相关系数降序排序 + 4. 过滤掉相关系数等于1的行
result = corr_long.sort("correlation", descending=True).filter(pl.col("correlation") < 1)

# 可选:设置双索引,更贴近Pandas输出格式
result = result.set_index(["col1", "col2"])

print(result)

关键细节说明

  • pl.col(pl.NUMERIC_DTYPES) 等价于Pandas的numeric_only=True,仅筛选数值类型列
  • with_row_index + unpivot 对应Pandas的stack(),将宽格式相关矩阵转为包含两两列对及对应相关性的长格式
  • Polars的corr()方法默认使用Pearson相关系数,与Pandas默认行为一致
  • 最终结果的排序、过滤逻辑完全匹配原代码,输出内容与Pandas版本一致

内容的提问来源于stack exchange,提问作者Arthur Zhang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:35:21