基本数据情况:

  1. 票房数据来自中国票房网(cbooo.cn)

  2. 评分数据来自豆瓣电影(movie.douban.com)、猫眼(maoyan.com)、时光网(mtime.com)、IMDB(imdb.com)

  3. 导演、演员信息来自豆瓣电影

  4. 共 522 部电影,4723 位影人

  5. 由于从几个不同网站抓取数据,有些名称会不一致,或者出现部分数据缺失的情况。因此这个数据并不是绝对完整的,但不影响整体结论

  6. 影片所属类型没有严格定义,且会有多个类型。实际选取方式我们在下面会有具体说明。

电影总排行:

这个排名大家都不陌生,没啥好多说的,好玩的在后面。

票房分布

我们将所有电影按评分和票房做成散点分布图,得到上述图片。此图是动态可交互的,这里我截几张有代表性的(点击图片后可放大):

依次是动作、喜剧、剧情、动画四类电影分布。粗略一看,动作片是比较受市场欢迎的,毕竟选择去观看大屏幕,很大程度也是为了享受特效和视听感受。喜剧和剧情也还不错,但高票房的动画片就很少了。

类型片

这张图是不同影片类型的数量和评分情况。剧情、喜剧、动作是三大主流类型

从评分上看,动画片最高,我很早就发现了这个现象,我觉得可能是因为动画片类型明确,会观看并评价的人本身对其接受度高,而不喜欢的人压根儿就不会去看。剧情片整体评分也不错,可见能把一个故事说好,观众就挺满意了。爱情片、惊悚片则是一向是烂片的高发地带

说明下:这里的类型是重复计算的,一部片会既是动作片,又是喜剧片。另外由于豆瓣上一些电影评分数量太少而不显示,所以这里的电影数量会和票房数量有所差异。

从票房上看,动作片不管是总量还是平均,都很强势。值得注意的是科幻片,虽然一般认为这是个小众类型,但与广义科幻沾边的影片平均票房却不低(这里面Marvel贡献了不少),今年的小破球更是创造了新的纪录。战争片则是被《红海行动》一片之力拉高了平均值。

月度票房

将类型片的票房按月划分,得到了这张图。春节档无疑是一年最抢钱的档期,而喜剧片又是此档期的绝对主力。暑期档则是另一个票房小高峰。动作片一年四季都不错

这里的月度划分是按首映日期,所以会有一些提前,比如国庆档的票房都记在了九月份。

以上面几组数据来看,如果哪位土豪读者想投资拍电影,选择动作片是比较保险的,记得要把故事说好,最好再加点科幻元素,在春节前上映

评分对比

这里做了 IMDB、时光网、猫眼分别和豆瓣评分的关系对比。

按理说,如果两个网站的评分基本一致的话,这些点应当分布在对角线上。IMDB、时光网和豆瓣还是差不多的(豆瓣其实是5星制,最低2分)。再细分一下,时光网和豆瓣的相关性要比 IMDB 更大(文化差异),好片比烂片的相关性更大(好片都说好,烂片则口味不同)。

有意思的是猫眼(最右侧图),它的评分普遍要比豆瓣高,相信很多人都有直观感受。当然这也有它的原因:猫眼买了票的人才会评分,那一般总归会选个自己爱看的吧

【彩蛋】图上右下角有个令人瞩目的孤点,这部电影是个例外,它猫眼评分2.9,豆瓣却有6.9,你知道是哪部吗?(可以留言猜一下,我待会儿在留言中公布答案)如果你了解此片背后的故事,定会一拍大腿恍然大悟。

演员

好了,到了公布最终结果的时候。

第一名:王成思

参演电影:《西虹市首富》25亿;《唐人街探案2》34亿;《李茶的姑妈》6亿

这……是谁啊,演的谁……

斯坦·李凭借各种客串,位列第3。而另一位能在Marvel、DC两道均能跑龙套的约翰·盖蒂尔,也跻身前十,同样也不知道他演的角色……

怎么样,有没有出乎你的意料?现在你可以拿这个去问别人了

所有图表在网页上都是动态可交互的,访问地址请在我们公众号(Crossin的编程教室)里回复关键字 票房

代码也已上传,并附带有说明文档,大致说明了实现思路、文件说明、技术细节。同样回复关键字 票房

如果你想要跟着实现或运行相关代码,我这里再简单说几点。

项目整体思路:

  1. 通过 中国票房网 获得2018年大陆上映电影和每部电影票房数据

  2. 根据已有的票房数据,通过豆瓣 api 和详细页面,获得每部电影的导演,演员和豆瓣评分等详细数据

  3. 分别通过 猫眼、时光网 和 imdb,获取这三个网站的电影评分数据

  4. 新建影人条目,利用豆瓣获得的影人数据,对2018年每个演员年参演电影进行统计

  5. 根据已有数据作图,分析2018年电影票房排名、不同网站评分差异、电影票房-评分关系等

开发环境及所需库:

  • python 3.6(3.5以上版本应该都没啥问题)

  • jupyter notebook - 这个之前介绍过多次,数据分析好帮手

  • requests - 网页抓取

  • bs4 - 网页文本分析

  • pymongo - 本项目用了 mongodb 数据库

  • numpy - 数据计算必备

  • pyecharts - 绘图工具包 ECharts 的封装

有几点值得注意的是:

  1. 因为豆瓣的搜索结果是模糊匹配,根据电影名会搜出多部电影,因此匹配豆瓣信息时增加了人工干预的步骤。这部分代码可以再优化。

  2. 项目使用 MongoDB 作为数据存储,这不是必须的,你可以把这部分代码改成文件保存。另外如果你只是想做数据分析,也可以拿我们抓取好导出的数据,免除抓取之苦。(附带在项目中,仅供学习,请勿商用,否则后果自负)

部分代码(仅演示,完整代码见项目仓库):

抓取并保存

client = pymongo.MongoClient()
db = client.chinamovies # 获取或新建名为 chinamovies 的 database
collections = db.movies # 获取或者新建了一个表
url_origin = 'http://www.cbooo.cn/Mdata/getMdata_movie?area={area}&type=0&year=2018&initial=%E5%85%A8%E9%83%A8&pIndex={page}'
url = url_origin.format(area=area, page=page)
req = requests.get(url, headers=headers)
data = req.json()
collections.insert_many(data['pData'])

获取豆瓣信息

url_api = 'https://api.douban.com/v2/movie/search?q={}'.format(moviename)
req = requests.get(url_api, headers=headers)
data_total = req.json()['subjects']
if not data_total:print('你搜索的不存在:', moviename)
else:print(data_total[0])

计算影人参演票房总和

for i in col_casts.find():total_box = 0for j in i['movie_id']:movie = collections_detail.find_one({'id': j})if movie['boxoffice']:total_box += int(movie['boxoffice'])col_casts.update_one({'_id': i['_id']}, {'$set': {'total_box': total_box}}, upsert=True)

输出票房/评分分布散点图

scatter = Scatter("电影评分-票房")
total_num = 0
for i in genre:total_num += len(genre[i]['rate'])scatter.add(i, genre[i]['boxoffice'], genre[i]['rate'], **other_setting, extra_name=genre[i]['title'],xaxis_name='票房(亿)', yaxis_name='评分', yaxis_name_gap=20,yaxis_min=2, symbol_size=5,label_formatter='{c}', is_label_emphasis=True, is_toolbox_show=False)
scatter.render('电影评分-票房.html')

查看交互图表和代码地址:

2018电影国内票房数据分析
在线交互演示(建议电脑上查看):
http://ppp.py2china.cn/data/2018moviebox.html
代码仓库地址:
https://gitee.com/crossin/snippet/tree/master/chinamovies2018

《哪吒》票房预测:
https://gitee.com/crossin/snippet/tree/master/nezha

2019 票房分析
https://github.com/zhouwei713/data_analysis/tree/master/movie_box_office

mou年电影国内票房最高的演员是谁相关推荐

  1. 我敢打赌,你猜不到去年电影国内票房最高的演员是谁

    去年末的时候,我招收了新的"实训生".本文是其中一位 @齐大圣 同学在实训两个月时完成的项目案例.(码上行动群里同学应该都看过这个名字,现在也是助教之一.)项目最初的想法是,从互联 ...

  2. 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜

    之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...

  3. 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!

    以前我写过一些爬取猫眼电影数据的图文: 如何利用 C# 爬取「猫眼电影专业版:票房」数据? 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息? 如何利用 C# 爬取「猫眼电影:最受期待榜」及 ...

  4. 2020年国内电影总票房突破100亿元

    猫眼专业版显示,截至10月2日,国内电影总票房达到101亿元. 截至发稿,<八佰>.<姜子牙>和<我和我的家乡>分列年度上映新片票房排名前三,票房分别为30.6亿. ...

  5. 中国电影|嘉宝盘点近几年国内票房突破30亿的影片

    昨天,吴京的<长津湖成功登顶票房首位,超越了<战狼2>,真的是让人激动地一刻,让大家看到了国产电影突飞猛进的提升,电影产业的快速发展.其实近几年,国内电影产业的发展都在快速进步,今天 ...

  6. 《X战警:黑凤凰》国内票房破2亿 口碑却落了《复联4》一大截

    <X战警>系列电影官方微博今日发文称,<X战警:黑凤凰>国内票房破2亿元,但从观众的反馈来看,这部影片的口碑并不理想. 相比之前大热的<复联4>,口碑落下一大截.豆 ...

  7. 1111 2021数维杯 D 电影市场票房

    2021年电影市场票房波动的模型分析 Q 电影票房预测建模的背景 随着人们文化消费需求的增加,影院和银幕的数量不断增加,我国的电影产业继续呈现出繁荣景象.2019年,全国电影票房642.66亿元.电影 ...

  8. 灯塔上线网络电影日分账票房数据,网络电影进入票房日更时代

    昨日,优酷首次向灯塔专业版公布网络电影日票房数据,使灯塔进一步深耕影视精细化数据的同时,也标志着网络电影正式进入票房日更时代. 目前在灯塔专业版上,用户不仅可以查看优酷网络电影日分账票房,还能够查询到 ...

  9. Python爬虫练习:爬取猫眼电影实时票房

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于CSDN ,作者嗨学编程 前言 随着疫情的转好,电影院终于在7月20日复工了. 电影 ...

最新文章

  1. java中动态代理实现机制
  2. python不定长参数详解
  3. c语言插入特定的字符串,C语言实现:将一个字符串插入到另一个字符串的指定位置...
  4. linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
  5. 安装python遇到错误_安装Python时遇到如下问题,解决方案
  6. 项目vue2.0仿外卖APP(五)
  7. 用matlab开发软件开发,Matlab软件应用与开发new
  8. 基础之 window-self-top-opener
  9. VR厂商,你们考虑过霍金的感受吗?
  10. 最长公共子序列长度以及打印(动态规划入门)
  11. [C# 网络编程系列]:TCP编程
  12. c语言messagebox多窗口,C语言messagebox用法
  13. 红队免杀培训第二章-使用系统调用http 协议下载恶意载荷
  14. JAVA 使用 pdfbox实现打印 PDF 文件 (横版,竖版)
  15. buu [QCTF2018]Xman-RSA
  16. 一份网站的商业计划书内容概要
  17. python中def main是什么意思_python main用法解析
  18. 【DDNS】Python实现阿里云域名DDNS
  19. em表示什么长度单位_html 常见的长度单位”px em pt” 简介说
  20. Android 8.0以上系统应用如何保活

热门文章

  1. Prompt超过finetune了?Emm...
  2. latex出现runaway argument?错误的解决办法
  3. 小巧的便签工具knot
  4. 计算机配置方案列表,计算机配置方案.docx
  5. 【Ubuntu20.04】好用的快捷键\截屏录屏
  6. 好玩的Deep Dream
  7. 12C 数据库之坑爹又坑队友的无故链接不上问题处理
  8. 计算机毕业设计Java小区生活服务平台的设计与实现(源码+系统+mysql数据库+Lw文档)
  9. 将第二大脑清单化的9种笔记清单类型
  10. 基于非合作博弈的风-光-氢微电网容量优化配置(Matlab代码实现)