没太明白pandas `itertuples` 在下面的代码中是干什么的
Did not quite understand what pandas `itertuples` is doing in the following code
我正在研究 MovieLens Dataset 推荐引擎示例。我看到我们可以创建一个用户-项目矩阵来计算它们之间的相似性,我们将用户作为索引(或行号),将项目(电影)作为列,将每个用户对每部电影的评分作为数据矩阵。我相信这就是下面的代码正在做的事情,它看起来很强大,但是我不清楚它实际上是如何工作的。除了 itertuples(简单的主元或转置?有什么优点或缺点吗?)我们可以使用其他方法吗?
import pandas as pd
import numpy as np
r_cols = ['user_id', 'movie_id', 'rating', 'unix_timestamp']
ratings = pd.read_csv('ml-100k/u.data', sep='\t',
names=r_cols,encoding='latin-1')
n_users = ratings.user_id.unique().shape[0]
n_items = ratings.movie_id.unique().shape[0]
data_matrix = np.zeros((n_users, n_items))
for line in ratings.itertuples():
data_matrix[line[1]-1, line[2]-1] = line[3]
听起来你需要 pivot
ratings.pivot(index='user_id', columns='movie_id', values='rating')
我正在研究 MovieLens Dataset 推荐引擎示例。我看到我们可以创建一个用户-项目矩阵来计算它们之间的相似性,我们将用户作为索引(或行号),将项目(电影)作为列,将每个用户对每部电影的评分作为数据矩阵。我相信这就是下面的代码正在做的事情,它看起来很强大,但是我不清楚它实际上是如何工作的。除了 itertuples(简单的主元或转置?有什么优点或缺点吗?)我们可以使用其他方法吗?
import pandas as pd
import numpy as np
r_cols = ['user_id', 'movie_id', 'rating', 'unix_timestamp']
ratings = pd.read_csv('ml-100k/u.data', sep='\t',
names=r_cols,encoding='latin-1')
n_users = ratings.user_id.unique().shape[0]
n_items = ratings.movie_id.unique().shape[0]
data_matrix = np.zeros((n_users, n_items))
for line in ratings.itertuples():
data_matrix[line[1]-1, line[2]-1] = line[3]
听起来你需要 pivot
ratings.pivot(index='user_id', columns='movie_id', values='rating')