【发布时间】:2018-05-01 21:25:19
【问题描述】:
第一篇文章,尽我所能描述我的问题。如果我需要在格式方面进行任何调整或澄清问题的任何方面,请告诉我。谢谢!
我有大型 Pandas 电影评分数据框,我需要为每部电影创建用户评分向量。我正在寻找一种更有效的方法(使用 pandas / numpy 操作或矢量化??),以便处理我的数据集中的 26M 行或用户、电影评分对。
电影评分的数据框如下所示: 输入:
movieId userId rating
1 1 1.0
1 2 4.5
1 5 5.0
1 8 5.0
1 10 5.0
2 1 2.0
2 3 4.5
2 5 5.0
2 6 3.0
2 8 4.0
输出:
密钥 = 电影 ID
Value = 每个用户评分的密集数组,0 表示用户没有对电影评分。
{
0:[1.0, 4.5, 0.0, 0.0, 5.0, 0.0, 0.0, 5.0, 0.0, 5.0]
1:[2.0, 0.0, 4.5, 0.0, 5.0, 3.0, 0.0, 4.0, 0.0, 0.0]
}
我目前有这个功能可以正确执行工作,但没有缩放我需要处理的数据量。
user_rating_by_movie 是与输入形式匹配的全局 pandas 数据框。
num_users 是用作向量长度的最大用户 ID。
def build_rating_vector_for_movie(movie_id, num_users):
rating_vector = [0] * num_users
movie_group = user_rating_by_movie.get_group(movie_id)
for u, r in zip(movie_group.userId.values, movie_group.rating.values):
rating_vector[u - 1] = r
movie_user_ratings[movie_id] = rating_vector
【问题讨论】:
标签: python pandas numpy optimization