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

如何在单个DataFrame中按行计算corrwith生成学生成绩相关矩阵?

按行计算学生成绩的相关性矩阵方法

要计算不同学生(行)之间的成绩关联,核心思路是把学生的成绩向量作为变量,计算它们之间的相关性。由于pandas的corr()方法默认按列计算相关性,我们可以通过转置数据来实现需求:

步骤1:预处理数据

首先将Name列设为索引,分离出纯成绩数据:

import pandas as pd

cols = ['Name', 'Math', 'Science', 'English', "History"]
data = [['Tom', 100, 93, 95, 92], ['Nick', 89, 75, 82, 57], ['Julie', 99, 89, 76, 88], ['Sarah', 79, 78, 94, 88]]
df = pd.DataFrame(data, columns=cols)

# 提取成绩数据,以学生名为索引
score_df = df.set_index('Name')

步骤2:计算皮尔逊相关系数矩阵

转置成绩数据后,学生变为列,此时使用corr()即可得到学生之间的线性相关系数:

# 转置后计算列(学生)之间的相关性
student_corr_matrix = score_df.T.corr()
print(student_corr_matrix)

输出结果会是一个对称矩阵,每个单元格代表对应两名学生的成绩线性相关程度(取值范围-1到1,越接近1说明成绩趋势越一致)。

其他相似度计算方法

如果需要对比成绩的向量方向相似度(不考虑成绩绝对值的差异),可以使用余弦相似度:

from sklearn.metrics.pairwise import cosine_similarity

# 生成余弦相似度矩阵
cos_sim_matrix = pd.DataFrame(
    cosine_similarity(score_df),
    index=score_df.index,
    columns=score_df.index
)
print(cos_sim_matrix)

余弦相似度取值范围0到1,值越高说明两名学生的成绩相对高低趋势越相似。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:43:18