在之前,我们已经用通过爬虫获取了豆瓣华语电影共33133部电影的数据,具体爬虫介绍请见之前的博文,爬虫实战(一)利用scrapy爬取豆瓣华语电影。本文对爬虫过程进行简要概述后,对这部分数据进行分析。

1. 前言

随着生活的水平提高,人们开始了对精神生活的追求,电影已经成为我们生活中必不可少的一项娱乐活动。近年来,中国电影产业发展迅速,华语电影数量和票房也频频突破新高。而一个行业的发展,不仅需要数量,还要质量。那华语电影近些年整体的质量如何呢?本文通过对豆瓣华语电影数据进行爬虫和分析,带大家了解华语电影这些年来的产量质量趋势、影片类型分布,以及哪些导演或演员是好片或烂片专业户。

2. 数据获取

在分析豆瓣网页结构后,使用python的Scrapy框架爬取了豆瓣华语电影,即中国大陆、香港、台湾地区总共33133部,并将数据存储在本地的MongoDB数据库中。对于每部电影,收集以下12个字段:

  • id: 豆瓣id
  • title: 电影名称
  • year: 上映年份
  • region: 制片地区
  • language: 语言
  • director: 导演
  • type: 类型
  • actor: 主演
  • date: 上映日期
  • runtime: 片长
  • rate: 评分
  • rating_num: 参与评分人数

具体示例如下:

3. 数据清洗

在进入分析之前,需要对获取的数据进行清洗和处理。首先,使用pymongo模块将数据库中的数据导入,接着使用pandas库进行处理。

3.1 缺失值处理

通过打印每一列的空值统计,可以看到部分列都存在空值。之前在数据爬取的过程中,发现一般如果电影是在院线上映的且年代不是特别久远的,所有的信息都很完整。如果出现导演、演员、上映日期等的一些列为空的,大部分是网络电影或者是没有上映的。所以这里将在演员、导演、语言、类型、上映时间这5列中任一列出现空值的数据都做删除处理。另外对于年份一列有缺失的,采用上映日期的年份进行填充。

3.2 数据格式处理

为了后续分析方便,将部分列的数据格式进行转换,如将评分和评分人数这两列由string类型分别转为float类型和int类型;将语言一列list中的"/“分割改为”,"分割等。

3.3 增加辅助列

通过观察数据发现,如果一部电影是多个地区合作制作的,那么地区这一列的list中就有多个地区的元素。以这种展现形式,不便于后续以地区为维度进行分析。因本文主要分析华语地区,即中国大陆、香港、台湾,于是增加三列辅助列,属于该地区则标记为1,否则为0。如果某部电影的制作地区同时出现中国大陆、香港、台湾,则这三列辅助列都标记为1,表示同时属于这三个地区。对电影类型一列,也做类似的处理。

3.4 数据筛选

在爬取的电影中,可以看到有些电影的影片类型是综艺节目、脱口秀、晚会等,另外有些电影有上映日期但未上映的。因此,对这部分数据进行剔除,只保留豆瓣电影筛选页面显示的22个分类以及已经上映的电影数据。

4. 数据分析

数据清洗处理完毕,接下来对数据进行分析。下文的画图工具,采用plotly库,它可以使用简单的代码实现较复杂的功能。

4.1 行业产量和质量分析

4.1.1 总体发展趋势

虽然今天的我们到电影院或者在网上看电影已经是十分平常的事情了,可是对于上个世纪可能还是属于一项相对“奢侈”的活动,那么我们就首先从电影行业的整体发展情况来分析一下近些年来华语电影的趋势。

注:此数据截止到2018年10月初

从图中可以看到,整个华语地区,在1947年之前每年电影产量只有零星几部;从上世纪60年代开始到21世纪00年代,处于平缓发展的阶段;从2010年开始,华语电影发展迅猛,2017年年产量达到1730部,约为2010年的5.3倍。

下面以每年电影的均分来看,在数量增加的同时,质量是否有提升呢?

从图中看出,近些年来华语电影评分总体上呈现下降的趋势,到2016年开始才略有回升。那到底是什么导致了这个评分趋势呢?接下来,我们画个箱体图来看下每年评分的分布情况。

可以看到之前电影的分数段都比较集中,而近些年评分分布越来越广,从2分到接近10分的电影都有。在箱体图中,q1(图中每个长条形的下方)代表的是第一四分位,即有25%的电影评分小于此值。同理,q3(图中每个长条形的上方)有75%的电影评分小于此值。通过观察可以发现,q1、q3的值同均值的趋势一致,近些年呈现下降的趋势。这也就代表了,近年来高分片数量减少而烂片的比例增加,导致均分的下降。而此状况的好转,是2016年均分开始有所回升的原因。

结论:近些年华语电影的数量剧增,但质量并未提高,而是呈现相反的趋势。除了影片本身制作的原因,也有部分是因为生活水平的提高,人们对精神需求质量的要求也越来越高。

4.1.2 地区对比

华语电影主要有大陆、香港、台湾这几个制作地区,那么接下来,我们来对比这些地区的情况。

从图中可以发现,香港电影是华语电影的先驱者,20世纪整个华语电影几乎是由香港主导的。但进入2000年后,香港电影的产量下降,与此同时,大陆电影发展迅速,于2005年开始反超香港地区,替代其成为华语电影新的主导者。而台湾地区,除了六七十年代有一波发展之外,几乎处于停滞不前的状态。

可以看到虽然台湾的产量较少,但从1983年以来,平均质量优于其他地区。而印象里,八九十年代的香港电影还不错,但从图中观察到,那时候香港电影的均值低于总体水平,反而是大陆地区的电影在那个年代整体质量比较高。

结论:可以看出大陆电影在这些年的发展比较迅猛,但是在电影市场如此繁荣的今天,大陆电影的质量却越来越低,这或许是和这些年发展的过快而没有注重质量有关系;香港地区进入21世纪后,产出影片数量减少,同时质量也呈现下降趋势,但近些年总体质量优于大陆地区;相比之下台湾电影虽然产量较少,但是整体的质量在三个地区中都比较高,也许与其追求文艺色彩,而不是商业化和娱乐化的特点有关。

4.2 影片类型分析

电影的题材有很多种,那么华语电影中不同题材情况是怎样的呢?我们首先分析一下不同类型的电影的数量情况。

从图中可以看到,剧情、喜剧、动作、爱情这几类的电影数量远超其他类型,其中剧情类最多,约为第二名喜剧类的1.85倍。而数量最少的类型是情色、灾难、西部片。那么哪种类型的电影关注度最多呢?

电影的评分人数越多,说明此电影看过的人数越多,可以从侧面反映电影的关注度。所以我们用平均评分人数的指标,来看不同类型电影的关注度。数量最少的西部片竟然是排名第一的,为什么关注度会这么高呢?华语有哪些电影是属于西部片呢?


原来是让子弹飞和无人区这两部电影拉高了西部片的平均评分人数。另外,让子弹飞是在本次爬取的全部电影中关注度Top2的,第一名为霸王别姬,一共有848429条评分。

接着,我们来看一下不同电影类型的质量。

西部、传记、歌舞这三类质量为Top3,且这三者间差距都在0.1分以内。而排名垫底的是情色、惊悚、悬疑,而这几类关注度并不是很高。评分人数与评分之间会不会有什么关系呢?

似乎没发现什么值得关注的结果,如果不以类别的平均值,而是以每部电影为维度呢?在这里我们将评分人数小于500的电影剔除,避免一些因为评分人少而出现的偏颇情况。

从图中可以看到,评分较低的,关注人数也较少。如评分小于5分,除少数几部外,其他的评分人数是在200k以下。而评分很高的电影,并不是都有很高的关注度,也有一些没什么人关注的。

结论:华语电影主要以剧情、喜剧、动作、爱情这几种影片类型为主,其中西部、奇幻、同性关注度最高,而西部、传记、歌舞这三类质量最高。评分与关注人数的关系,评分较低的关注人数也较少;而评分很高的电影中存在一些暂未被很多人发现的好电影。

4.3 导演、演员分析

这一部分,我们来看一下哪个导演、演员属于好片或者烂片的专业户。这里好片的定义为评分大于等于8.5分,烂片为评分小于6分的电影。另外,此部分分析只针对执导或主演5部以上电影的导演和演员。

图中为好片占比Top10的导演,排名Top2分为是台湾导演杨德昌和香港导演王家卫,他们是拿过戛纳电影节最佳导演奖的仅有的两名华语导演。可能大家对王家卫比较熟悉,这里就科普一下杨德昌。他是台湾新电影的重要代表人物之一,一共执导过8部电影,其中5部评分在8.5分以上,好片占比为62%,他的五部好片分别是《一一》、《独立时代》、《牯岭街少年杀人事件》、《恐怖分子》以及《麻将》。

另外,这10名导演中,除魏德圣、桑弧这两位导演各有一部烂片外,其他的导演均没有执导过6分以下的电影。

接着我们来看一下烂片占比排名10的导演,郑成峰、姜国民、管晓杰、黄柏基这四位导演的烂片比例达到了100%!

而在演员中,台湾演员文英的好片占比最高,为50%。值得注意的是在这10位演员中,台湾和内地演员各占50%,台湾演员除澎恰恰外,其他几位近10年内都有作品;而内地演员不是配音演员,就是活跃在上个世纪的已经息影或离世的演员。

烂片占比前10的演员榜中,除邓家佳外,其他演员的烂片占比都为100%。其中大部分为内地新生代且小透明的演员。

可能大家在刚刚的分析中都没看到自己比较熟悉的演员,这里将一些比较有名的演员挑出来。从图中可以看到,部分演员参演作品的数量惊人,但好片数量却只有几部;也有几位演员的演技是大家都比较认可的,但可能挑电影的眼光不太好,其参演的作品风评都比较一般。

结论:在好片占比前10的导演中,可以看到这些导演都实至名归,且被大家较为熟知;而在演员中,我们熟知的演员均不在好片占比前10的榜单上,有些演员人气很高但参演的好片寥寥无几,有些演员演技可以但挑片眼光不佳。

5. 后记

数据集中其实还有更深入或者其他可以分析的地方,但因篇幅有限,只能先挑一部分。大家看完后,如果还有什么想要了解的,可以在底下回复,小编会在下一篇进行分析哦。

最后,回顾一下本文的主要思路,先是确定主题,接着获取数据,之后对数据进行清理、筛选,最后对数据进行可视化和分析。而这也是做一个数据分析项目基本的流程,其中数据获取和数据处理是最为基础的。如果有现成的数据集,直接从csv文件、数据库等导入即可。但一般来说,我们并不是经常能找到合适的、且最新的现成数据,这时就需要通过爬虫获取。爬虫是一项挺耗时的工作,如何应对网站的反爬、提高爬虫效率很关键。除了爬虫外,数据清洗也是一项基础、耗时又繁杂的工作,它直接决定后续数据分析的效率和质量。小编在完成本文的过程中,爬虫和数据清洗占了大部分的时间。

6.福利

  • 获取9分以上且评价人数大于20万的一定不要错过的华语神片。
  • 本文数据集和代码见我的gutihub
    本文同步发布在我的个人博客

数据分析(一)豆瓣华语电影分析相关推荐

  1. 爬虫实战(一)利用scrapy爬取豆瓣华语电影

    爬虫第一个项目是爬取豆瓣华语电影,后面将对这部分数据进行分析. 本文也是发表于『运筹OR帷幄』微信公众号的<用数据带你了解电影行业-华语篇>的爬虫介绍篇. 1. 爬取思路 在观察了豆瓣每个 ...

  2. 数据分析与挖掘案例之使用python抓取豆瓣top250电影数据进行分析

    使用python抓取豆瓣top250电影数据进行分析 抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 ...

  3. 分析1.6万部电影,找出了华语电影烂片王

    文章讲的是分析1.6万部电影,找出了华语电影烂片王,某天,工作量不饱和(嘘),就在公司上网随便搜了部电影来看,本来还期待着看完能够为搬砖提供灵感,然鹅--事实证明,我想多了. 在把进度条拖了 11 次 ...

  4. 豆瓣电影分析报告:大陆和港台到底差(cha)在哪里?

    Python 2.7 IDE Pycharm 5.0.3 PyExcelerator 0.6.4a 可视化 Plotly 图片要是挂了 请看这里此文备份链接 前言 在上次爬完豆瓣的东西后,感觉锻(zh ...

  5. 爬虫+数据分析+可视化大作业:基于大数据的高质量电影分析报告

    主要目的是为了学习Scrapy与Sklearn而不是写论文,结论是瞎扯的,轻喷求求了 目录 摘要 数据爬虫程序设计和实现 Scrapy框架 Scrapy框架简介 Scrapy的组件 Scrapy的工作 ...

  6. 在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)

    这一段时间都在学习数据分析的相关知识,包括numpy.pandas.matplotlib.seaborn.ploty这些工具的使用和一些统计学的相关知识.有了这些基础,我就非常迫不及待的想操练操练.于 ...

  7. 爬取豆瓣top250电影并分析

    爬取豆瓣top250电影,提取评论关键词,然后将同一国家的关键词做成一个词云,轮廓是每个国家的地图轮廓 爬取数据 需要爬取电影名称.导演.年份.地区和前10个评论除了地区,其他的都没什么问题,我们来研 ...

  8. python 豆瓣评论分析方法_使用python抓取豆瓣top250电影数据进行分析

    抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 import BeautifulSoup impor ...

  9. 朴素贝叶斯算法实现 豆瓣Top250电影评价的情感分析与预测。​

    前言 本文使用朴素贝叶斯算法实现 豆瓣Top250电影评价的情感分析与预测. 最近在学习自然语言正负面情感的处理问题,但是绝大部分能搜索到的实践都是Kggle上IMDB影评的情感分析. 所以在这里我就 ...

最新文章

  1. Windows下的命令神器Cmder
  2. jQuery之文本框得失焦点
  3. BZOJ-1036-树的统计Count
  4. 构造可靠数据传输协议
  5. this表示当前对象简单实例
  6. [C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
  7. java字符函数_java字符串函数用法汇总
  8. 在工作中常用的sql语句
  9. 如何不起协议,R1ping通R3
  10. python基础之小数据池,is和==区别 编码问题
  11. 那些年,我们踩过的 Java 坑 | 凌云时刻
  12. Bryntum Web JavaScript Components Crack
  13. 小学计算机英语,小学英语流利读电脑版
  14. 苹果logo_苹果 ARM Mac 发布会独特标志 Logo 亮相
  15. Meltdown Reading Kernel Memory from User Space
  16. 数据分析师培训告诉你 三个最常见的数据分析面试方向
  17. Spark动态加载外部资源文件
  18. ZJOI2017 讲课Day1笔记
  19. Uni-App - 实战《悦读》之多应用、多平台统一登录关系
  20. 用流星制作多人TicTacToe游戏

热门文章

  1. 青云KubeSphere就一个字——“简”
  2. html手机陀螺仪,手机中的陀螺仪竟然也不值得信任
  3. Sprig的EL表达式和读取Properties文件教程
  4. 找漏洞赚外快?给ChatGPT挑毛病,最高奖励14万
  5. “顶流”长沙,如何发展MCN?
  6. 2018“人工智能”:是彻底复苏?还是起落轮回?| 抢票
  7. 如何在 DAX 中创建 “虚拟关系”
  8. PCL函数库摘要——3D点云特征描述与提取
  9. 面试官:请讲一讲IO流核心模块与基本原理是什么?
  10. linux下ad键盘驱动,led、键盘、ADC驱动程序