# Bigdata-movie
本项目以电影数据为主题,以数据采集、处理、分析及数据可视化为项目流程,可实现百万级电影数据离线处理与计算。
项目详解:https://blog.csdn.net/qq_36816848/article/details/112861158.
开发环境:IDEA+Pycharm+Python3+hadoop2.8+hive2.3.0+mysql5.7+sqoop+spark
1.数据采集(pachong.py)、预处理:
采集豆瓣电影top250电影信息,采集电影名称、电影简介、电影评分、其他信息、电影连接等字段,抓取电影票房总收入排名情况(取前20),删除冗余和空值字,利用Python的PyMysql库连接本地Mysql数据库并导入movies表,可以将数据保存到本地,从而进行数据可视化展示,也可将数据导入到大数据的Hive数仓工具中,用于大数据分析。
采集数据展示:
排序 影片名称 类型 总票房(万) 场均人次 上映日期
1 战狼2 动作 567928 38 2017/7/27
2 哪吒之魔童降世 动画 501324 24 2019/7/26
3 流浪地球 科幻 468433 29 2019/2/5
4 复仇者联盟4:终局之战 动作 425024 23 2019/4/24
5 红海行动 动作 365079 33 2018/2/16
6 唐人街探案2 喜剧 339769 39 2018/2/16
7 美人鱼 喜剧 339211 44 2016/2/8
8 我和我的祖国 剧情 317152 36 2019/9/30
9 我不是药神 剧情 309996 27 2018/7/5
10 中国机长 剧情 291229 27 2019/9/30
2.数据统计及可视化:
数据可视化能使数据更加直观,更有利于分析,可以说可视化技术是数据分析与挖掘最重要的内容。Matplotlib作为基于Python语言的开源项目,旨在为Python提供一个数据绘图包,实现专业丰富的绘图功能。
(1)电影票房排名
利用Python中Matplotlib绘图库及Pandas中的pd.readcsv()方法读取Excel电影数据文件,读取每列数据进行,设置参数将结果绘制成折线图。
(2)电影评分排名douanscore.py
利用Python的Request、Beautifulsoup库进行爬虫,模拟请求获取网页数据,结合正则表达式匹配提取数据,并将豆瓣电影top250电影数据存储到Mysql数据库中,通过数据库语句使用order by实现电影top评分统计。
movie表结构:
属性 字段命名 类型 约束
id 序号 int primary key
name 电影名称 VARCHAR(20) not null
Link 电影连接 VARCHAR(100) not null
score 评分 VARCHAR(5) not null
descr 电影概述 VARCHAR(50)
directer 导演及其他 VARCHAR(100)
最终电影数据结果如下:
利用数据库语句统计movies进行电影评分top20,并将结果通过Python的Matplotlib库进行数据可视化,绘图结果如下:
(3)Echarts最近上映电影
Echarts 主要用于数据可视化展示,是一个开源的JavaScript库,兼容现有绝大部分浏览器。在Python中,Echarts被包装成数据可视化工具库Pyecharts。它提供直观、丰富、可个性化定制的数据可视化图表,包括常规的折线图、柱状图、散点图、饼图等。
(4)影片《囧妈》短评信息
大年初一电影《囧妈》网络首映映,截止目前其豆瓣电影评分6.0分,通过电影《囧妈》的豆瓣热门短评进行案例分析,以八爪鱼软件为数据采集工具进行数据爬虫,采集字段有用户名、评级、点赞数和评论内容等信息,利用正则表达式匹配字段标签,根据豆瓣电影提供的评级星数系统显示力荐、推荐、还行、较差、很差等五个评级,满分为五星,数据格式如下:
(5)词图云cituyun.py
利用Python的jieba分词工具以及wordcloud库实现词云展示,截取电影《囧妈》评论一列,按照规定的停用词切割每行语句,实现分词功能。通过词图云展示可以直观地看出用户对电影的态度情况,数据展示结果如下:
(6)情感分析emotion.py
运用Python机器学习中的情感分析库Snownlp和绘图库pyplot挖掘囧妈短评数据,做出情感分析并展示。利用Snownlp中s.sentiments方法计算情感分数,分数在0.5以上判断为是好评,可以看到电影的评论差距明显。情感分析效果图如下:
(7)python词频统计wordcount.py
3.大数据分析:
大数据处理最重要的环节就是数据分析,数据分析通常分为两种:批处理和流处理。批处理是对一段时间内海量的离线数据进行统一处理,对应的处理框架Mapreduce、Spark等;流处理则是针对动态实时的数据处理,即在接收数据的同时就对其进行处理,对应的处理框架有 Storm、Spark Streaming、Flink等。本文以离线计算为主,介绍电影数据分析。
(1)Mapreduce离线计算(mapreduce_hive文件)
Mapreduce编程词频统计主要利用wordcount思想,通过按规定格式分割词句,实现单词统计词频。其统计数据为历史电影的上映信息,map阶段主要负责单词分割统计,map阶段把每个字符串映射成键、值对,按行将单词映射成(单词,1)形式,Shuffle过程会对map的结果进行分区排序,然后按照同一分区的输出合并在一起写入到磁盘中,最终得到一个分区有序的文件,最后reduce阶段会汇总统计出每个词对应个数,数据最终会存储在HDFS上。本文以电影词作为统计对象,实现单词统计词频功能。词频统计流程图如下:
map阶段会把每个字符串映射成键、值对,按行将单词映射成(单词,1)形式输出,其中shuffle过程会对map的结果进行分区排序,然后按照同一分区的输出合并在一起写入到磁盘中,最终得到一个分区有序的文件。通过Python编程实现Map阶段代码如下:
Map阶段代码:
import sys
for line in sys.stdin:
ss = line.strip().split(' ')
for s in ss:
if s.strip() != "":
print "%s\t%s" % (s, 1)
(2)reduce阶段
reduce阶段会汇总map阶段结果每个词对应个数,数据最终会存储在HDFS上。本文通过统计《哈利波特》英文电影文本,实现词频统计功能。实现Reduce阶段代码如下:
Reduce阶段代码:
import sys
current_word = None
count_pool = []
sum = 0
for line in sys.stdin:
word, val = line.strip().split('\t')
if current_word == None:
current_word = word
if current_word != word:
for count in count_pool:
sum += count
print "%s\t%s" % (current_word, sum)
current_word = word
count_pool = []
sum = 0
count_pool.append(int(val))
for count in count_pool:
sum += count
print "%s\t%s" % (current_word, str(sum))
利用Hadoop Streaming可以使用任何可运行程序或语言作为Map和Reduce的创建和执行MapReduce作业,通过编写shell脚本执行wordcount统计结果如下:
(2)Hive数据仓库
Hive是一个基于Hadoop的数据仓库工具,主要用于解决海量结构化日志的数据统计,可以将结构化的数据文件映射成一张表,通过类SQL语句的方式对表内数据进行查询、统计分析。利用Sqoop数据传输工具可以将Mysql数据库信息导入到Hive数仓。
运用Hive可以实现海量数据分析,并且支持自定义函数,省去MapReduce编程。本文针对历史豆瓣电影数据进行统计,数据经过清洗,删除空值、多余项,得到大约100000多条电影数据,部分数据格式如下:
(1)建表
Hive建表分为内部表和外部表两种。创建内部表,表内数据将会移动到数据仓库指向的路径,删除表时,数据会随之删除;而外部表在删除时,不会删除数据表原有信息,相对更加安全。
本文电影表包括电影名称、评分、评论人数、类型、上映年份,以及总分等字段,数据默认逗号分隔,其中总分=电影评分*评论人数,数据创建命令如下:
create table IF NOT EXISTS movie1(name string,
score double,
people int,
type string,
address string,
time int,
sum float)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
(2)导入数据
Hadoop支持各类型文件上传到HDFS,可以通过本地命
功能包括python爬虫
需积分: 0 193 浏览量
更新于2024-01-17
收藏 7.13MB ZIP 举报
Python是一种广泛应用于各种领域的编程语言,特别是在Web开发、数据分析、人工智能和网络爬虫等方面有着显著的优势。"功能包括python爬虫"的标题表明这个项目主要关注的是Python在爬虫技术上的应用。网络爬虫,也称为网页抓取,是通过自动化程序从互联网上收集和处理数据的一种方式。在Python中,编写爬虫可以利用许多强大的库,如requests用于发送HTTP请求,BeautifulSoup用于解析HTML和XML文档,以及Scrapy框架,它提供了一个完整的解决方案来构建和管理爬虫项目。
我们需要了解Python爬虫的基础知识。Python爬虫的基本工作流程通常包括以下几个步骤:
1. 发送请求:使用requests库向目标网站发送GET或POST请求,获取网页内容。
2. 解析HTML:解析返回的HTML内容,BeautifulSoup等库能帮助我们提取所需的数据,如链接、文本等。
3. 数据存储:将提取到的数据保存到文件(如CSV、JSON)或数据库中,以便后续分析和使用。
4. 处理反爬机制:许多网站有反爬策略,如验证码、IP限制等,我们需要使用如User-Agent切换、代理IP池等方法应对。
在Python项目中,可能还会涉及到多线程或多进程以提高爬取速度,使用如threading或multiprocessing模块。另外,Scrapy框架提供了更高级的功能,如中间件处理请求和响应,item管道处理爬取的数据,以及强大的调度系统,使得大型爬虫项目的管理更加便捷。
"557sdsada232323sd"这个文件名可能是项目中的某个文件或资源,但因为没有具体的内容,我们无法深入讨论。通常在Python爬虫项目中,这样的文件可能包含爬虫源代码、配置文件、爬取结果数据或者日志信息。为了深入理解这个项目,我们需要查看文件内容,了解其结构和实现细节。
在实际操作中,我们还需要考虑合法性和道德问题,尊重网站的robots.txt文件,避免对服务器造成过大压力,确保爬虫行为符合法律法规。同时,学习使用代理IP、设置延时等策略来降低被封禁的风险。
Python爬虫是数据采集的重要工具,结合各种Python库和框架,可以高效地从互联网上获取大量信息。通过分析和处理这些数据,我们可以进行市场研究、舆情监控、搜索引擎优化等多种用途。如果你想要进一步提升你的Python爬虫技能,建议深入学习相关库的使用,了解网络协议,掌握如何处理各种反爬策略,并熟悉数据清洗和分析的基本方法。
zero2100
- 粉丝: 173
- 资源: 2460
最新资源
- “Navicat” 17 用户指南
- MATLAB Simulink下的变压器故障仿真研究:相间故障、匝间短路、外部故障及励磁涌流的判别与保护策略探究,MATLAB simulink变压器故障仿真 变压器内部相间故障,匝间短路,外部故障
- COMSOL远场偏振通用计算方法:涵盖仿真图、能带分析及Matlab程序代码实战展示,COMSOL 远场偏振通用计算方法,包含远场偏振图,能带,matlab 程序 展示包含仿真文件截图,所见即所得
- 配电网光伏储能双层优化配置模型:选址定容与调度联合优化,基于粒子群算法及多目标优化策略,含高比例可再生能源的IEEE33节点案例研究 ,配电网光伏储能双层优化配置模型(选址定容) 配电网光伏储能双层优
- 基于SpringBoot+Vue.JS前后端分离的网上订餐系统 源码+数据库+论文(毕业设计)
- 高温热湿流动耦合模型下的COMSOL传热与层流物理场仿真研究:温度分布、湿度与含水量曲线分析案例介绍,高温热湿流动耦合模型 案例介绍:comsol含湿多孔介质中的传热模块与层流物理场耦合仿真,含水材料
- matlab数字图像处理系统大作业
- ml-03-呼吸灯.py
- 滚动轴承与转子8自由度系统动力学模型:求解收敛性分析及其在不同参数变化下的动力学响应差异参考例证 ,滚动轴承–转子8自由度系统动力学模型,求解收敛,可作为相关模型参考的例子,可分析不同参数变化下动力学
- 基于粒子滤波和误差状态量的INS/GNSS组合导航的MATLAB实现-主文件
- MATLAB轴承动力学模拟:滚动轴承故障建模与ODE45数值计算(含正常、外圈故障、内圈故障及滚动体故障分析),MATLAB轴承动力学代码(正常、外圈故障、内圈故障、滚动体故障),根据滚动轴承故障机理
- 【SLAM】基于matlab拓展卡尔曼滤波SLAM路径规划【含Matlab源码 11038期】.zip
- 【SLAM】基于matlab卡尔曼滤波SLAM路径规划【含Matlab源码 11035期】.zip
- 【潮流计算】基于matlab GUI牛顿拉夫逊法解潮流【含Matlab源码 11034期】.zip
- 【电池】基于matlab太阳能电池漂移扩散【含Matlab源码 11051期】.zip
- 【多智能体控制】基于matlab MSN植绒编队控制、跟踪目标、避开障碍物【含Matlab源码 11038期】.zip