数据分析案例--MovieLens 1M数据集

本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。

      GroupLens Research(http://www.grouplens.org/node/73)采集了一组从20世纪90年末到21世纪初由MovieLens用户提供的电影评分数据。这些数据中包括电影评分、电影元数据(风格类型和年代)以及关于用户的人口统计学数据(年龄、邮编、性别和职业等)。基于机器学习算法的推荐系统一般都会对此类数据感兴趣。

      1、  MovieLens 1M数据集含有来自6000名用户对4000部电影的100万条评分数据。它分为三个表:评分、用户信息和电影信息。将该数据从zip文件中解压出来之后,可以通过pandas.read_table将各个表分别读到一个pandas DataFrame对象中:

数据分析案例--MovieLens 1M数据集_第1张图片
数据分析案例--MovieLens 1M数据集_第2张图片

2、假设我们想要根据性别和年龄计算某部电影的平均得分,如果将所有数据都合并到一个表中的话问题就简单多了。我们先用pandas的merge函数将ratings跟users合并到一起,然后再将movies也合并进去。pandas会根据列名的重叠情况推断出哪些列是合并(或连接)键:

数据分析案例--MovieLens 1M数据集_第3张图片
数据分析案例--MovieLens 1M数据集_第4张图片
数据分析案例--MovieLens 1M数据集_第5张图片

3、按性别计算每部电影的平均得分,用透视表pivot_table方法。该操作产生了另一个DataFrame,其内容为电影平均得分(即参数values和aggfunc共同作用的结果),行标为电影名称(即参数index),列标为性别(即columns)

数据分析案例--MovieLens 1M数据集_第6张图片
数据分析案例--MovieLens 1M数据集_第7张图片

4、过滤掉评分数据不够250条的电影,先对title进行分组,然后利用size()得到一个含有各电影分组大小的Series对象

数据分析案例--MovieLens 1M数据集_第8张图片

该索引中含有评分数据大于250条的电影名称,然后就可以根据从前面的mean_ratings中选取所需要的行了

数据分析案例--MovieLens 1M数据集_第9张图片
数据分析案例--MovieLens 1M数据集_第10张图片

5、了解女性观众最喜欢的电影。按F列降序排列

数据分析案例--MovieLens 1M数据集_第11张图片

6、找出男性和女性观众分歧最大的电影

方法:给mean_ratings加上一个用于存放平均得分之差的列,并对其进行排序,得出女性观众更喜欢看的电影

按"diff"排序即可得到分歧最大且女性观众更喜欢的电影:

数据分析案例--MovieLens 1M数据集_第12张图片

7、对排序结果反序并取出前15行,得到男性观众更喜欢的电影

数据分析案例--MovieLens 1M数据集_第13张图片

8、想要知道分歧最大的电影那个(不考虑性别因素),则可以计算得分数据的方差或标准差

根据电影名称分组的得分数计算标准差,并用active_titles过滤掉评论少于250的电影:

数据分析案例--MovieLens 1M数据集_第14张图片

快速学习:

第一节 NumPy基础(一)

第二节 NumPy基础(二)

第三节 Pandas入门基础

第四节 数据加载、存储

第五节 数据清洗

第六节 数据合并、重塑

第七节 数据聚合与分组运算

第八节 数据可视化

第九节 pandas高级应用

第十节 时间序列

第十一节 Python建模库

数据分析案例--1880-2010年间全美婴儿姓名的处理

数据分析案例--MovieLens 1M数据集

数据分析案例--USA.gov数据

数据分析案例--2012联邦选举委员会数据库

数据分析案例--USDA食品数据库

你可能感兴趣的:(数据分析案例--MovieLens 1M数据集)