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

如何使用Python(pandas)将Excel评分表转换为用户-电影评分矩阵?

pandas实现评分长表转用户-电影协同过滤矩阵

你可以直接用pandas内置的长宽表转换方法实现需求,全程不需要额外依赖,步骤如下:

1. 读取原始Excel数据

首先导入pandas库,读取本地存储的评分长表数据,读取后先做简单校验避免列名、路径错误:

import pandas as pd

# 替换为你本地的Excel文件实际路径
raw_rating = pd.read_excel("movie_rating.xlsx")

# 校验数据列,确认输出包含 userId、movieId、Rating 三个字段
print(raw_rating.columns)

2. 执行长宽表转换

使用pivot方法完成结构转换,行索引设为用户ID、列设为电影ID、单元格值为对应评分即可:

rating_matrix = raw_rating.pivot(
    index="userId",
    columns="movieId",
    values="Rating"
)

转换后的矩阵特性:

  • 形状为20行×2234列,行索引对应用户ID、列名对应电影ID,完全匹配协同过滤建模的输入要求
  • 用户未打分的电影对应位置自动填充为NaN,后续建模时可根据算法要求选择填充用户均值、全局均值或保留空值
  • 如果需要把缺失值统一替换为0,可在上述代码后追加.fillna(0),注意该操作可能会影响用户相似度计算的准确性,按需使用

如果你的原始数据存在「同一用户对同一部电影多次评分」的异常记录,pivot会触发报错,替换为pivot_table方法即可兼容,重复评分默认取均值:

rating_matrix = raw_rating.pivot_table(
    index="userId",
    columns="movieId",
    values="Rating",
    aggfunc="mean"
)

3. 结果校验

转换完成后可通过简单代码确认结构符合预期:

# 输出矩阵行列数,预期结果为(20, 2234)
print(rating_matrix.shape)

# 查看矩阵前几行样例,核对评分值和原始数据是否一致
print(rating_matrix.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:27:17