首页 > 解决方案 > 我将如何使用他们的名字和平均收视率准备前 15 部电影的表格?

问题描述

在阅读本文之前,我对编码非常陌生,所以我要问的很多事情都令人畏缩。

我正在使用http://www.d2l.ai/chapter_recommender-systems/movielens.html并尝试使用该数据集来提高我的编码技能。我正在使用 Python 的 Spyder 进行编码。

我想知道的是,如果我是 CEO,想知道用户给出的名称和评分排名前 15 的电影是什么。这对于中级编码人员来说足够简单,但请注意,我是初学者可以达到的最低水平。到目前为止,我使用的代码是复制粘贴他们在该链接上所做的操作,以便将文件上传到 Python。

我的心态:我相信我的下一步将是使用 Pandas 创建一个 DataFrame 并以某种方式使用值计数。我在网上搜索东西,它向我扔了一堆信息,比如 Jaccard 相似性和距离。我不知道这种类型的问题是否需要这样的设置。

任何帮助都会受到喜爱,如果您做出回应,我可能会出于好奇提出更多问题。

标签: python

解决方案


假设您已下载ml-100k.zip并将其存储在某处。

# Read user rating data as dataframe
data = pd.read_csv(os.path.join(data_dir, 'u.data'), '\t', names=['user_id', 'item_id', 'rating', 'timestamp'])

# Since you want the average rating of each movie,
# you can group by `item_id` which represent each movie.
# After groupby, do a mean operation on each group.
# Also you want the ratings higher at first,
# you can sort on `rating` column discending
average_rating = data.groupby('item_id', as_index=False)['rating'].mean().sort_values('rating', ascending=False)

# Read move data as dataframe
item = pd.read_csv(os.path.join(data_dir, 'u.item'), '|', names=['movie id', 'movie title', 'release date', 'video release date', 'IMDb URL', 'unknown', 'Action', 'Adventure', 'Animation', 'Children\'s', 'Comedy', 'Crime', 'Documentary', 'Drama', 'Fantasy', 'Film-Noir', 'Horror', 'Musical', 'Mystery', 'Romance', 'Sci-Fi', 'Thriller', 'War', 'Western'])

# Load movie title from u.item to average_rating
average_rating['movie_title'] = average_rating['item_id'].map(item.set_index('movie id')['movie title'])

由于某些电影仅由少数人评分,因此您可能需要先对其进行过滤。


推荐阅读