MovieLens 思路
来源:互联网 发布:windows可以用keynote 编辑:程序博客网 时间:2024/04/30 14:45
- 将数据文件读取到pandas DataFrame对象中,比如user.dat文件的格式为:UserID::Gender::Age::Occupation::Zip-code,通过pandas.read_table 来实现
import pandas as pdunames=['user_id','gender','age','occupation','zip']users=pd.read_table('E:/pydata-book-master/pydata-book-master/ch02/movielens/users.dat',sep='::',header=None,names=unames')![users[:5]](http://img.blog.csdn.net/20170802204246174?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzk0NjY2MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 将所有数据合并到一个表中,pandas会根据列名的重叠情况推断出哪些是合并键,通过pd.merge方法:
data=pd.merge(pd.merge(ratings,users),movies)#一次只能合并两个![查看表中的第一个内容:](http://img.blog.csdn.net/20170802204921310?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzk0NjY2MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 按性别计算每部电影的平均得分,通过pivot_table方法,产生另外一个DataFrame:
(平均评分,指定了index,所以后面对该表的sort_index均是对title进行sort)mean_ratings=data.pivot_table('rating',index='title',cols='gender',aggfun='mean')(http://img.blog.csdn.net/20170802210208667?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzk0NjY2MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 过滤掉data表格中评分数据不够250的电影:
ratings_by_title=data.group('title').size()#groupby方法只是把一样的东西放在一堆,但是不经过任何处理,所以没什么用,后面必须加个方法,size方法就是数清这堆东西有多少个,title作为indexactive_titles=ratings_by_title.index[ratings_by_title>=250]#选取评分超过250条的构成索引,Series对象特性,自动为值比较。(http://img.blog.csdn.net/20170802212639934?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzk0NjY2MTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 得到过滤后的索引后(即有价值数据),我们就可以进行简单的数据处理,比如刚刚的求平均得分,就可以只看过滤后的,后来的数据处理都是基于有价值数据:
mean_ratings=mean_ratings.ix[active_titles]
- 了解女性最喜欢的电影,对F降序排列:
top_female_ratings=mean_ratings.sort_values(by='F',ascending=False)
- 找出男性和女性评分分歧最大的电影:
mean_ratings['diff']=mean_ratings['M']-mean_ratings['F']sorted_by_diff=mean_ratings.sort_values(by='diff')sorted_by_diff[::-1]#男性观众更喜欢的电影
- 找出分歧最大的电影(不考虑性别因素):
rating_std_by_title=data.group('title')['rating'].std()rating_std_by_title=rating_std_by_title.ix[active_titles]rating_std_by_title.sort_values(ascending=False)[:10]#python3中已经废除了order方法,只有sort_index,sort_value方法,方法中的by属性只用于有多个可选值,假如只有一列value,用by方法选定会报错
- 找特定的数据:
top_female_rating[top_female_rating.index=='Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)']
阅读全文
1 0
- MovieLens 思路
- svd /svd ++ movielens
- MovieLens相关论文总结
- 集体智慧编程movielens
- movielens大数据存储技巧
- Movielens数据集详细介绍
- movielens数据集.dat文件导入msql
- MovieLens 《用Python进行数据分析》
- 机器学习(6) MovieLens数据集
- 思路!
- 思路
- 思路
- 思路
- 思路
- 思路
- 思路
- 思路
- 【分享】MovieLens最新十万级的用户电影评分数据
- React-Router入门Demo
- lua luajit 安装cjson
- github+hexo搭建免费博客
- [模板]
- 欢迎使用CSDN-markdown编辑器
- MovieLens 思路
- 评分卡模型开发-用户数据异常值处理
- WebGIS学习(六)WebGIS中地图瓦片在Canvas上的拼接显示原理
- windows安装mysql教程2017最新
- jquery学习二
- 350. Intersection of Two Arrays II
- 高通推出支持蓝牙MESH网络的SoC
- sklearn文档 — 1.6. 最近邻
- 如何查找论文是否被SCI,EI检索