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

准备工作

#安装sparklyr包install.packages("sparklyr")library(sparklyr)library(dplyr)
sc <- spark_connect(master = "local")#连接到本地spark

如果你没有安装spark,在安装好sparklyr包之后,右上角这块会出现一个spark的按键,点击之后它就会引导你下载spark,而且自动配置。好了之后我们就可以连接到spark。

连接成功之后,可以在浏览器中输入:http://127.0.0.1:4040,打开之后我们可以看到如下页面。

通过storage,我们可以看到我们已经保存到spark中的数据。如图已经保存了u_data,和u_user。这两个数据是后面导进去的,刚开始的时候里面是空的。

现在开始,我们来一步一步分析这份数据。

探索用户数据

u.user文件保存的是用户的ID,年龄,性别,职业和邮编。在这份数据中,我们分析一下用户的年龄分布和职业。

  1. 年龄分析

u_user<-read.table("/home/wang/Desktop/ml-100k/u.user",sep = "|")
u_user<-copy_to(sc,u_user)#将数据复制到spark

names(u_user)[1:5]<-c("id","age","gender","occupation","zipCode")library(ggplot2)
u_user<-u_user %>% collect
ggplot(u_user,mapping = aes(age))+geom_histogram(fill='steelblue')+scale_x_continuous(breaks = seq(from=0,to=80,by=5))

我们可以发现,年龄在20到35的人数特别多,45岁的人也挺多的。

2. 职业分析
用所有用户进行职业分析

occ <- count(u_user,occupation) %>% arrange(desc(n))%>%collect()#统计职业ggplot(occ,aes(x=reorder(occupation,n),y=n))+geom_bar(stat = "identity",fill='steelblue')+theme(axis.text.x=element_text(angle = 70,hjust = 0.5,vjust = 0.5,size = 14))

看来还是学生党居多,周末没事带上女盆友看个电影逛逛街,这也很符合前面的年龄分析。可怜的医生是最少的,在这里向白衣天使们致敬!!!

探索电影数据

u.item文件,它包含电影ID,电影名称,发行日期,电影发行日期,IMDb链接,以及电影类型。在这份数据中我们分析一下那些电影类型更受用户喜爱,以及用户喜欢看那个年代发行的电影。

电影类型

包含了19个类型,分别是 unknown , Action , Adventure ,Animation ,Children’s , Comedy ,Crime ,Documentary ,Drama ,Fantasy ,Film-Noir , Horror , Musical , Mystery , Romance , Sci-Fi ,Thriller , War , Western。

u_item<-read.table("/home/wang/Desktop/ml-100k/u.item",sep = '|',colClasses = c("integer","character","factor","factor","character",rep("integer",19)),quote = "")
u_item_col_names<-c('movie_id','title','release_date','video_release_date','imdb_url','unknown','Action','Adventure','Animation','Childrens','Comedy','Crime ','Documentary','Drama','Fantasy','Film-Noir',' Horror','Musical','Mystery',' Romance','Sci-Fi','Thriller','War','Western')#列名

colnames(u_item)<-u_item_col_names
movie_genre<-apply(u_item[6:24],2,FUN =sum)#计算各个类型的电影评分总数

movie_genre<-as.vector(movie_genre)
genre<-data.frame(genres=c('unknown','Action','Adventure','Animation','Childrens','Comedy','Crime ','Documentary','Drama','Fantasy','Film-Noir',' Horror','Musical','Mystery',' Romance','Sci-Fi','Thriller','War','Western'),times=movie_genre)
ggplot(genre,aes(x=genres,y=times))+geom_bar(stat = "identity",fill='steelblue')+theme(axis.text.x=element_text(angle = 20,hjust = 0.5,vjust = 0.5,size = 8))

看来大家还是喜欢看戏剧类和喜剧类,罗温·艾金森好像在当时就挺火的。

电影发行时间

u_item<-read.table("/home/wang/Desktop/ml-100k/u.item",sep = '|',colClasses = c("integer","character","factor","factor","character",rep("NULL",19)),quote = "")
m_col_names<-c('movie_id','title','release_date','video_release_date','imdb_url')
colnames(u_item)<-m_col_names
u_item_title<-u_item$titlerData<-u_item$release_date
head(rData)
year<-as.character(rData)%>%as.Date(format = '%d-%b-%Y')#提取时间

head(year)#如果year为 NA 运行一下这句试试 Sys.setlocale("LC_TIME","C")year<-substr(year,1,4)#提取年year<-table(year)#统计yeardf<-as.data.frame(year)
ggplot(df,aes(x=df$year,y=df$Freq))+geom_bar(stat = "identity",fill='steelblue')+theme(axis.text.x=element_text(angle = 70,hjust = 0.5,vjust = 0.5,size = 8))

数据中的电影发行时间从1922年到1998年,其中观看量最大的是1993年到1998年,其中1996年的电影观看量最大,其次是1997年。

探索评分数据

u.data文件包含有电影评分,现在还分析大家的评分情况。

u_data<-read.table("/home/wang/Desktop/ml-100k/u.data",sep = "\t")
u_data<-copy_to(sc,u_data) # 将数据复制保存在spark

col_n_udata<-c("userId","itemId","rating","timestamp")
names(u_data)<-col_n_udata
rating<-table(select(u_data,rating)%>%collect())%>%as.data.frame()
ggplot(rating,aes(x=Var1,y=Freq))+geom_bar(stat = "identity",fill='steelblue')

看来大家的评分还是比较中肯的,一般都在4分左右。

关闭spark

spark_disconnect(sc)

OK,今天就分享到这里,有什么问题,欢迎大家在留言区讨论,下一篇文章会是基于spark的机器学习算法ALS的电影推荐,谢谢大家支持。如需获取数据,点击阅读原文即可,提取码:4l9y。

转载请注明:

作者:王亨

公众号:跟着菜鸟一起学R语言

原文链接:http://blog.csdn.net/wzgl__wh

初识sparklyr—电影数据分析相关推荐

  1. python电影数据分析的代码_python-small-examples

    Kaggle电影数据分析实战 本项目基于Kaggle电影影评数据集,通过这个系列,你将学到如何进行数据探索性分析(EDA),学会使用数据分析利器pandas,会用绘图包pyecharts,以及EDA时 ...

  2. 大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...

    壹 猫眼Top100电影数据分析概述 从这一节开始,我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目.在这些实际的项目案例中,我们将会看到一个完整的数据分析流程:数据清理--数 ...

  3. Rotten Tomatoes 电影数据分析

    "烂番茄"电影数据分析 "烂番茄"电影数据分析 背景 数据采集及处理 数据可视化 得出结论 背景 一千个读者眼中有一千个哈姆雷特, 看电影也是一种艺术鉴赏活动, ...

  4. Tableau制作全球电影数据分析/全球超市利润混合地图

    数据集,课程,作业文件打包放在github上 https://github.com/JCATHoney/tableau 作业5: 1.创建产地电影数量与评分(以此命名)的符号地图,处理未知位置信息,以 ...

  5. 豆瓣电影数据分析--Tableau

    数据说明:原始数据为1888年-2016年上映电影数据,由于年份跨度较大且部分年份数据缺失,故抽取1990年-2015年电影数据分析. 第一部分:整体上映电影数分析 仪表盘: 感觉这个排版有点挤,显示 ...

  6. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分,分别为后端爬虫抓取.数据处理分析可视化.GUI界面展示.启动运行,分别对应getData ...

  7. python猫眼电影分析_用Python 爬取猫眼电影数据分析《无名之辈》

    前言 作者: 罗昭成 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e7 ...

  8. 电影数据分析练习——ppt报告

    电影数据分析练习

  9. 【大数据基础】基于 TMDB 数据集的电影数据分析

    https://dblab.xmu.edu.cn/blog/2400/ 实验内容 环境搭建 pip3 install bottle 数据预处理 本次项目使用的数据集来自知名数据网站 Kaggle 的 ...

最新文章

  1. 2022-2028年中国团购行业投资分析及前景预测报告
  2. 报告 | 2019年全球数字化转型现状研究报告
  3. 图解排序算法(四)之归并排序
  4. matlab 三维模型怎么导入ansys,Ansys怎么导入模型?Ansys导入模型的方法
  5. kafka直连方式消费多个topic
  6. 计算机数学基础知识点归纳,《计算机数学基础》(一)――离散数学期末复习参考...
  7. Windows python tensorflow 安装
  8. input 单击 图标_input添加小图标
  9. 当AD19原理图导出位PCB图时报错UnkownPin和Failed to add class member可能的解决办法
  10. java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换
  11. win7显示桌面计算机图标,win7显示桌面图标不见了如何恢复【图文】
  12. 单片机 重要英文缩写解释
  13. Dubbo笔记 ⑭ :Dubbo集群组件 之 Directory
  14. 如何利用cmd打开资源管理器
  15. Prometheus(四)——Alertmanager
  16. 安恒2020-四月春季战-reverse-sm
  17. Spark Streaming背压机制
  18. 情人节程序员用HTML网页表白【情人节爱你的代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  19. 技术经理成长复盘-处理线上问题
  20. Ubuntu个人笔记

热门文章

  1. 为什么总线要用一根来表示一bit
  2. 浅析_tmain()与main()的区别
  3. 四说大数据时代“神话”:从大数据到深数据\n
  4. C++从string中删除所有的某个特定字符
  5. SQLiteOpenHelper类
  6. Stimulsoft Reports.Net基础教程(九):创建图表报表①
  7. 关于node.js的web框架的应用及并发性能测试
  8. [转载] 晓说——第16期:古代科举那些事——由来
  9. [Cocoa]深入浅出Cocoa之多线程NSThread
  10. 返回代表指定日期的指定日期部分的整数。返回当前周