MovieLens数据集包含多个用户对多部电影的评级数据,也包括电影元数据信息和用户属性信息。
这个数据集经常用来做推荐系统,机器学习算法的测试数据集。尤其在推荐系统领域,很多著名论文都是基于这个数据集的。(PS:它是某次具有历史意义的推荐系统竞赛所用的数据集)。
1m的数据解压后,可以看到四个主要的csv文件,分别是links.csv,movies.csv,ratings.csv,tags.csv。links介绍了该数据集中的movieId和imdb、tmdb中电影的对应关系。tags是用户的打标签数据。本文的介绍主要基于ratings.csv和movies.csv
我们用pandans观察数据的描述及前五行:
ratings=pd.read_csv('../data/ml-1m/ratings.csv',index_col=None)ratings.describe()ratings.head(5)输出为:
movies数据文件里包含了一部电影的id和标题,以及该电影的类别。数据格式如下:movieId,title,genresmovieId:每部电影的idtitle:电影的标题genres:电影的类别(详细分类见readme.txt)
我们用pandans观察数据的前五行:
movies=pd.read_csv('../data/ml-1m/movies.csv',index_col=None)movies.head(5)输出为:
合并数据集我们可以根据movieId来合并两个数据集
data=pd.merge(ratings,movies,on='movieId')汇总每部电影的评分数量合并数据集之后,我们可以看一下每部电影的评分数量,并按照降序进行排序:
rating_count_by_movie=data.groupby(['movieId','title'],as_index=False)['rating'].count()rating_count_by_movie.columns=['movieId','title','rating_count']rating_count_by_movie.sort_values(by=['rating_count'],ascending=False,inplace=True)rating_count_by_movie[:10]输出为:
得到打分的平均值及标准差
rating_stddev=data.groupby(['movieId','title']).agg({'rating':['mean','std']})rating_stddev.head(10)