pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

本文通过一份电影评分的分析主要讲解一下pandas数据分析的重要功能:分组统计的扩展用法。

引用数据为:grouplens网站的数据,感兴趣的可以自己下载

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

内容描述了电影推荐服务[MovieLens](http://movielens.org)的5星评级和自由文本标记活动。它包含了27278部电影的20000263个评级和465564个标签应用程序。这些数据由1995年1月9日至2015年3月31日期间的138493位用户创建。该数据集于2015年3月31日生成,并于2016年10月17日更新

评分最高的电影:

  • Shawshank Redemption, The (1994) 肖申克的救赎
  • Godfather, The (1972) 教父
  • Usual Suspects, The (1995) 普通嫌犯
  • Schindler's List (1993) 辛德勒的名单
  • Godfather: Part II, The (1974) 教父2
  • Seven Samurai (Shichinin no samurai) (1954) 七武士
  • Rear Window (1954) 后窗
  • Band of Brothers (2001) 兄弟乐队
  • Casablanca (1942) 卡萨布兰卡
  • Sunset Blvd. (a.k.a. Sunset Boulevard) (1950) 日落大道
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

素材分析:

下载后共包括7个附件:

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

描述了27278部电影的名称以及流派

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

描述了用户20000263个评分

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看


数据分析:

分析需求:

先了解数据内容,然后弄清楚分析的需求,然后在考虑如何去实现

  • 统计每一部电影的平均评分,找出评分最高的前10部电影
  • 统计哪部电影的评分人数最多
  • 统计哪种电影类型的评分人数最多,评分最高的前10部电影
  • 统计评分人数>1000个的每个电影类型的前10部评分最高的电影

统计电影的平均评分:

因为评分和电影名称分布在两张表中,但是因为有共同的键,我们可以把他们合并到一起:

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

ratings=pd.merge(data_4,data_3,on="movieId")
ratings
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

统计排名最靠前的10部电影:

  • 首先利用groupby透视出电影的平均得分
  • 然后降序排列
  • 切片筛选前10名的电影
dd_ratings=ratings.groupby("title")["rating"].mean()
dd_ratings=pd.DataFrame(dd_ratings)
dd_ratingsed=dd_ratings.sort_values(by="rating",ascending=False)[:10]
dd_ratingsed
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

统计哪部电影的评分人数最多的前10部电影

思路和刚才是一样的:

  • 首先透视出每一部电影的评分人数总和
  • 降序排列
  • 切片筛选出前10部电影
dd_ratings_2=ratings.groupby("title")["userId"].count()
dd_ratings_2=pd.DataFrame(dd_ratings_2)
dd_ratings_2ed=dd_ratings_2.sort_values(by="userId",ascending=False)[:10]
dd_ratings_2ed
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

统计哪种电影类型的评分人数最多,评分最高的前10部电影

思路是这样的:

  • 刚才已经透视出每部电影的平均得分,和评分人数,现在需要将两个数据合并起来
  • 对评分人数,评分分别降序排列
  • 切片筛选出前10的电影
  • 注意剔除掉只有几个人评分的电影
dd_ratings_hb=pd.merge(dd_ratings,dd_ratings_2)
dd_ratings_hb2=dd_ratings_hb[dd_ratings_hb["userId"]>50]
dd_ratings_hbed=dd_ratings_hb2.sort_values(by=["rating","userId"],ascending=[False,False])
dd_ratings_hbed[:10]
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

统计评分人数>1000个的每个电影类型的前10部评分最高的电影

这也是最难的一个统计:

  • 首先统计出所有电影类型和电影的评分人数
  • 和ratings匹配出电影评分
  • 筛选大于1000的评分电影
  • 自定义函数统计出每个电影类型的前10部电影

第一步统计评分人数:

dd_ratings_4=ratings.groupby(["genres","title"])["userId"].count()
dd_ratings_4=pd.DataFrame(dd_ratings_4)
dd_ratings_4.reset_index(inplace=True)
dd_ratings_4
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

第二步匹配电影的平均评分:

dd_ratings_4ed=pd.merge(dd_ratings_4,dd_ratings)
dd_ratings_4ed
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

第三步筛选出大于1000评分人数的电影:

dd_ratings_5=dd_ratings_4ed[dd_ratings_4ed["userId"]>1000]
dd_ratings_5

pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看

第四步自定义函数统计:

def top10(x):
x_1= x.sort_values(by=["userId","rating"],ascending=[False,False])
return x_1[:10]
dd_ratings_5ed=dd_ratings_5.groupby(["genres"]).apply(top10)
dd_ratings_5ed
pandas大数据分析案例:movielens电影评分告诉你哪部电影最好看


分享到:


相關文章: