pandas实例——MovieLens电影数据实战分析
2017-11-15 04:55
423 查看
在上一篇文章中我介绍了pandas的基本用法,今天我就用pandas实战操作,大家可以一起感受一下数据分析是如何从一堆数字中找到有价值的信息的。下面我也附上了代码,我强烈推荐大家将数据下载下来,亲自去实践敲一遍,我相信收获会更多。
废话不多说! HERE WE GO!!!
可以在链接中自行下载。其中有三个dat数据包,分别为:users.dat、ratings.dat、movies.dat。另外还可下载README文件查看数据具体介绍,我在下面就只进行简短的介绍,想偷懒的同学不用看它的,看我的就够啦!^_^
users.dat:UserID、Gender、Age、Occupation、Zip-code
movies.dat:MovieID、Title、Genres
ratings.dat:UserID、MovieID、Rating、Timestamp
注:dat文件是数据存储的一种格式,即Data缩写。在pandas中用read_table即可打开。
打印出数据表中UserID为1的用户所有的相关数据信息。
采用数据透视,建立以Title为行索引,Gerder为列索引,mean为聚合方法来显示Rating中的数据。
这样就获得了一张我们自创的data_gender数据表,下面我们再对该数据表进行操作:
我们向data_gender数据表中新插入了一列difference,用来存放男女用户评分的差值。
接下来我们对difference列降序排列(或者升序),即可看到不同性别用户对相同电影评分差异最大的电影了。
依然是利用数据透视,对数据进行重新划分后排序,只是此次不再指定列标签,pandas会自动用Rating作为列标签。
随后对数据再进行排序,即可得到平均分较高的电影了,也就是好电影咯!!
利用数据分组操作对Title进行分组,并用size()聚合函数即可统计出每个Title出现的次数,即评分次数。
再利用排序方法对值进行降序排列,即可获得热门电影的数据表啦!
这个问题在上面第五项分析中最为明显:为什么那些平均分高的电影,我从来没看过?甚至有些听都没听过呢?这个问题
是不符合常理的,毕竟国内外好电影大家按说都应该耳熟能详的,所以这其中一定存在错误。
这个问题就在于:有些电影只有极少数的人(1-2人)看过,并且觉得很好看,给了很高的评分,这个时候我们去分析数据
的时候,得到的就是这种极小众认为好看的电影。因此,我们应该对评分次数做出最小值限定,使数据更加合理:
以上内容就是我为大家带来的运用pandas数据分析的全部内容啦!有问题想与我交流的直接留言即可咯! 拜了个拜~!
废话不多说! HERE WE GO!!!
一、数据集介绍
我采用的数据是来自MovieLen的电影数据集(https://grouplens.org/datasets/movielens)中的MovieLens 1M Dataset。需要的同学可以在链接中自行下载。其中有三个dat数据包,分别为:users.dat、ratings.dat、movies.dat。另外还可下载README文件查看数据具体介绍,我在下面就只进行简短的介绍,想偷懒的同学不用看它的,看我的就够啦!^_^
users.dat:UserID、Gender、Age、Occupation、Zip-code
movies.dat:MovieID、Title、Genres
ratings.dat:UserID、MovieID、Rating、Timestamp
注:dat文件是数据存储的一种格式,即Data缩写。在pandas中用read_table即可打开。
二、具体分析过程
1、导入数据
ratings = pd.read_table('ratings.dat', header=None, names=['UserID', 'MovieID', 'Rating', 'Timestamp'], sep='::') users = pd.read_table('users.dat', header=None, names=['UserID','Gender','Age','Occupation','Zip-code'], sep='::') movies = pd.read_table('movies.dat', header=None, names=['MovieID', 'Title', 'Genres'], sep='::')
2、数据合并
在数据分析中,将不同的表合并起来汇聚成一张总表,会更加便于我们后面的处理与分析。data = pd.merge(pd.merge(users, ratings), movies)
3、数据访问
print data[data.UserID == 1]
打印出数据表中UserID为1的用户所有的相关数据信息。
4、不同性别对电影的平均评分
data_gender = data.pivot_table(values='Rating', index='Title', columns='Gender', aggfunc='mean')
采用数据透视,建立以Title为行索引,Gerder为列索引,mean为聚合方法来显示Rating中的数据。
这样就获得了一张我们自创的data_gender数据表,下面我们再对该数据表进行操作:
data_gender['difference'] = data_gender.F - data_gender.M data_gender_sorted = data_gender.sort_values(by='difference', ascending=False)
我们向data_gender数据表中新插入了一列difference,用来存放男女用户评分的差值。
接下来我们对difference列降序排列(或者升序),即可看到不同性别用户对相同电影评分差异最大的电影了。
5、平均分较高的电影
data_mean_rating = data.pivot_table(values='Rating', index='Title', aggfunc='mean') data_mean_rating_sorted = data_mean_rating.sort_values(by='Rating', ascending=False)
依然是利用数据透视,对数据进行重新划分后排序,只是此次不再指定列标签,pandas会自动用Rating作为列标签。
随后对数据再进行排序,即可得到平均分较高的电影了,也就是好电影咯!!
6、评分次数最多热门的电影
data_rating_num = data.groupby('Title').size() data_rating_num_sorted = data_rating_num.sort_values(ascending=False)
利用数据分组操作对Title进行分组,并用size()聚合函数即可统计出每个Title出现的次数,即评分次数。
再利用排序方法对值进行降序排列,即可获得热门电影的数据表啦!
7、问题出现在哪里????
推荐大家按照我上面的步骤,去体验一下数据分析带给我们的快乐!!如果你做了,你就会发现一个很奇怪的问题!这个问题在上面第五项分析中最为明显:为什么那些平均分高的电影,我从来没看过?甚至有些听都没听过呢?这个问题
是不符合常理的,毕竟国内外好电影大家按说都应该耳熟能详的,所以这其中一定存在错误。
这个问题就在于:有些电影只有极少数的人(1-2人)看过,并且觉得很好看,给了很高的评分,这个时候我们去分析数据
的时候,得到的就是这种极小众认为好看的电影。因此,我们应该对评分次数做出最小值限定,使数据更加合理:
加入评分次数限制的分析不同性别对电影的平均评分:
data_gender_hot = data_gender.loc[data_rating_num[data_rating_num > 1000].index] data_gender_hot.sort_values(by='diff', ascending=False)
加入评分次数限制的分析平均分高的电影:
data_mean_rating_number = data_mean_rating.loc[data_rating_num[data_rating_num > 1000].index] data_mean_rating_number_sorted = data_mean_rating_number.sort_values(by='Rating', ascending=False)
三、总结
在数据处理过程中,合并、透视、分组、排序这四大类操作是最经常用的,所以希望大家能够熟练掌握这四种方法的用法。以上内容就是我为大家带来的运用pandas数据分析的全部内容啦!有问题想与我交流的直接留言即可咯! 拜了个拜~!
代码一定要亲自敲一遍!代码一定要亲自敲一遍!代码一定要亲自敲一遍!
相关文章推荐
- python/pandas数据分析(十五)-聚合与分组运算实例
- 大数据spark“蘑菇云”行动超大型项目实战第68课:spark RDD案例和spark sql案例对比实战 看电影的例子分析 某门热门电影的年龄、性别分析
- 通过实例快速掌握sklearn中的kmeans聚类----python数据分析,聚类,pandas
- Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧
- 数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法
- Pandas实战——美国大选数据分析
- 用pandas分析百万电影数据
- Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析
- python数据分析实战教程 python大数据分析实例教程 python量化分析实例教程 零基础python数据分析教程
- 用pandas分析百万电影数据
- ###好好好### 【Python实战】Pandas:让你像写SQL一样做数据分析 ######
- 《Spark机器学习》笔记——基于MovieLens数据集使用Spark进行电影数据分析
- 《Spark商业案例与性能调优实战100课》第1课:商业案例之通过RDD实现分析大数据电影点评系统中电影的用户行为信息
- Python数据分析与挖掘实战(Pandas,Matplotlib常用方法)
- 【Python实战】Pandas:让你像写SQL一样做数据分析(二)
- Spark商业案例与性能调优实战100课》第11课:商业案例之通过纯粹通过DataFrame分析大数据电影点评系仿QQ和微信、淘宝等用户群分析与实战
- pandas实战——对星巴克数据的分析
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
- [置顶] 用pandas进行数据分析实战
- 数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法