文档章节

3.pandas-电影数据分析

eddy_linux
 eddy_linux
发布于 2017/08/30 13:14
字数 829
阅读 103
收藏 0
点赞 0
评论 0
#encoding:utf8

import pandas as pd


'''
数据来源
https://grouplens.org/datasets/movielens/
READE是对数据文件的说明
当量100W
3个文件
users.dat 评分用户
    ID 性别 年龄 职业 邮编
    1::F::1::10::48067
    2::M::56::16::70072
    3::M::25::15::55117
    4::M::45::7::02460
    5::M::25::20::55455
    6::F::50::9::55117
    7::M::35::1::06810
    8::M::25::12::11413
    9::M::25::17::61614
    10::F::35::1::95370
movies.dat 电影数据
    1::Toy Story (1995)::Animation|Children's|Comedy
    2::Jumanji (1995)::Adventure|Children's|Fantasy
    3::Grumpier Old Men (1995)::Comedy|Romance
    4::Waiting to Exhale (1995)::Comedy|Drama
    5::Father of the Bride Part II (1995)::Comedy
    6::Heat (1995)::Action|Crime|Thriller
ratings.dat 电影评分
   用户id 电影id 评分 时间戳
    1::1193::5::978300760
    1::661::3::978302109
    1::914::3::978301968
    1::3408::4::978300275
    1::2355::5::978824291
    1::1197::3::978302268
    1::1287::5::978302039
    1::2804::5::978300719
    '''

#加载数据
#定义users.dat的列名
unames = ['user_id','gender','age','occupation','zip']
#定义ratings.dat的列名
rating_names = ['user_id','movie_id','rating','timestamp']
#定义movies.dat的列名
movie_names = ['movie_id','title','geres']

#注意分隔符
users = pd.read_table('E:\\myproject\\data_analy\\ml-1m\\ml-1m\\users.dat',sep='::',header=None,names=unames)
ratings = pd.read_table('E:\\myproject\\data_analy\\ml-1m\\ml-1m\\ratings.dat',sep='::',header=None,names=rating_names)
movies = pd.read_table('E:\\myproject\\data_analy\\ml-1m\\ml-1m\\movies.dat',sep='::',header=None,names=movie_names)
print(len(users))
print(len(ratings))
print(len(movies))
#里面的代号在readme中有说明
print(users.head(5))
print(ratings.head(5))
print(movies.head(5))

#合并
data = pd.merge(pd.merge(users,ratings),movies)
print(len(data))
print(data.head(5))
#查看userid=1的用户
print(data[data.user_id == 1])

#统计男女对电影的评分差异最大的
#得到男女评分的所有电影
ratings_by_gender = data.pivot_table(values='rating',index='title',columns='gender',aggfunc='mean')
print(ratings_by_gender.head(5))

#加列用于男女评分相减
ratings_by_gender['diff'] = ratings_by_gender.F - ratings_by_gender.M
print(ratings_by_gender.head(5))
#排序 降序和升序的不同体现的是男性和女性喜欢的电影
print(ratings_by_gender.sort_values(by='diff',ascending=True).head(10))
#定义评分人数最多(热门)
ratings_by_title = data.groupby('title').size()
print(ratings_by_title.head(10))
print(ratings_by_title.sort_values(ascending=False).head(10))
#热门电影,也就是评分最高的电影
mean_ratings = data.pivot_table(values='rating',index='title',aggfunc='mean')
print(mean_ratings.sort_values(ascending=False).head(10))
#但是这里会有一个情况如果评分人很少但是分很高也不能算热门电影
#取一个评分人数的排序也就是看的比较多的人
top_10_hot = ratings_by_title.sort_values(ascending=False).head(10)
#最热门的的10大电影的评分
print(mean_ratings[top_10_hot.index])
#评分最高的10大电影的评价次数 观影次数
top_10_score = mean_ratings.sort_values(ascending=False).head(10)
print(ratings_by_title[top_10_score.index])

#找出热度足够高的电影,评价此处大于1000的
hot_movies = ratings_by_title[ratings_by_title > 1000]
#找出热门电影的评分数
hot_movies_rating = mean_ratings[hot_movies.index]
#对找出的热门电影评分进行降序排序
top_10_good_movies = hot_movies_rating.sort_values(ascending=False).head(10)
print(top_10_good_movies)



#优化取出男女评分差异最大的
#这里是得到男女评分差异的数据,但是没有排除掉观影人数过少的情况
#首先合并三个数据
data = pd.merge(pd.merge(users,ratings),movies)
#得到评分的人数
total_score = data.groupby('title').size()
#做一个性别为列索引的透视
hot_ratings_by_gender = data.pivot_table(values='rating',index='title',columns='gender',aggfunc='mean')
#加上一列评分人数
hot_ratings_by_gender['user_no'] = data.groupby('title').size()
#加上一列性别的差异评分
hot_ratings_by_gender['diff'] = ratings_by_gender.F - ratings_by_gender.M
#取出评分人数大于1000
hot_diff = hot_ratings_by_gender[hot_ratings_by_gender['score'] > 1000]
#在大于评分人数1000的范围排序diff列这样就可以得到热门中男女评分差异最大的电影
top_10_hot_diff = hot_diff.sort_values(by='diff',ascending=False).head(10)
print(top_10_hot_diff)

 

© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
Python中pandas模块快速入门

我这里简单介绍一下Python中,pandas模块定义的两种常用的数据结构,Series和DaraFrame。Series和Python中的Dict类似,但是是结构化的,而DataFrame和数据库中的表类似。 1.pandas基本数据结...

Sevenot_Hu ⋅ 06/20 ⋅ 0

7.python数据分析与展示------Pandas库入门

1.Pandas库的介绍 Pandas是Python第三方库,提供高性能易用数据类型和分析工具 import pandas as pd Pandas基于Numpy实现,常与Numpy和Matplotlib一同使用 import pandas as pd d =pd.Series...

bxg1065283526 ⋅ 04/29 ⋅ 0

【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

这是《Python数据挖掘课程》系列文章,也是我这学期上课的部分内容及书籍的一个案例。本文主要讲述KNN最近邻分类算法、简单实现分析平衡秤数据集,希望这篇文章对大家有所帮助,同时提供些思...

Eastmount ⋅ 2017/12/08 ⋅ 0

初识sparklyr—电影数据分析

这篇文章是初次使用sparklyr扩展包来进行一些数据分析,对Spark牵扯不是很多。使用的数据是movieLens 100k,这份数据包含943个用户对1680部电影的评分数据,如需获取数据请在文末点击阅读原文...

wzgl__wh ⋅ 04/25 ⋅ 0

使用Mahout搭建推荐系统之入门篇2-玩转你的数据1

用意: 搞推荐系统或者数据挖掘的, 对数据要绝对的敏感和熟悉, 并且热爱你的数据. 分析数据既要用统计分析那一套,又要熟悉业务发掘有趣的特征(feature). 后者有意思的多,但是因为我业务做的不...

清风漫步 ⋅ 2013/11/02 ⋅ 0

网络数据分析和可视化

以豆瓣电影上提供的电影数据为例,完整地展示网络数据从获取、处理到分析、可视化这一过程,纯当练手,也为感兴趣的小伙伴提供相关的技术介绍。项目代码托管在Github上,可视化网站请访问这里...

张宏伦 ⋅ 2016/11/09 ⋅ 3

requests+beautiful 用Python抓取豆瓣电影资料

在公司加班等双11,练手写了个抓取豆瓣电影评分的脚本,分享一下 环境 Python3.6 requests, 前几个月才知道这个包的,上手比urllib快多了 BeautifulSoup,很好用的网页分析工具包,见过的爬虫...

无鱼二饼 ⋅ 2017/11/11 ⋅ 0

8.7万条豆瓣电影数据分析

这篇文章主要分两部分来聊,第一部分讲数据的抓取,第二部分对电影数据进行一些简单的分析。好,我们这就进入正题... 第一章:获取豆瓣电影信息 1.构造链接 我们在豆瓣电影分类标签下,根据电...

超人 ⋅ 2017/01/07 ⋅ 0

分析9000部电影|一个简单的电影推荐系统

阅读本文大概需要5分钟 本篇作者:小郑同学 不知道大家平时喜不喜欢看电影来消遣时光,我是比较喜欢看电影的。对我而言,当我看完一部电影,觉得很好看的时候,我就会寻找类似这部电影的其他...

菜鸟学python ⋅ 2017/11/11 ⋅ 0

【译文】使用文本挖掘技术分析Twitter用户对电影的评价

【译文】使用文本挖掘技术分析Twitter用户对电影的评价 作者 佚名 译者 钱亦欣 引言 使用一些建模分析手段来评价电影的成功已经屡见不鲜,这类预测模型常常使用注入电影制作成本,类型,主演...

上大飞猪钱小莲 ⋅ 2017/05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 11分钟前 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 33分钟前 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 34分钟前 ⋅ 0

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 45分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 50分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 55分钟前 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 56分钟前 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 57分钟前 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部