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

这一段时间都在学习数据分析的相关知识,包括numpy、pandas、matplotlib、seaborn、ploty这些工具的使用和一些统计学的相关知识。有了这些基础,我就非常迫不及待的想操练操练。于是,我就打算使用豆瓣电影Top250进行数据分析。纪念一下2月29日,下一个29日得等到四年后了。

豆瓣Top250电影python数据分析

  1. 使用python爬虫获取豆瓣电影数据
  2. 清洗和处理数据
  3. 使用方差、皮尔斯相关系数分析,plot进行数据可视化分析

python爬虫爬取豆瓣电影数据

首先,我们百度搜索豆瓣电影250,排名第一的就是我们想要的,点击进去。下面分别是首页和详细页
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第1张图片
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第2张图片

由于我们需要爬去所有有价值的数据,所以,我们要进入每一个详情页进行数据提取,下面是我打算获取的数据:

导演、编剧、主演、类型、制作地区、语言、上映时间、片长、评分、评价人数、观看人数、想看人数、短评条数

具体如何找数据的位置,如何爬取数据详细的步骤大家可以看我之前爬起虎扑贴吧的博客

这里我的思路是:

  1. 获取每一部电影的详情页地址,并将其存储到csv文件中
  2. 读取csv文件中的地址,并一一进行数据爬取。
  3. 将爬取的数据存储到csv文件中,方便之后进行数据分析。

这里有几点需要注意的地方:

  • 在你进行多次数据爬取后,豆瓣会进行ip限制,所以这时候你需要登录你的豆瓣账号,这里也就是使用cookie模拟登录。
  • 大家可以采用多线程或多进程进行数据爬取,速度会快很多。我这里没有使用这些
  • 在数据全部爬取完毕之后,我才将这些数据统一写入到文件中。但是一旦出现程序错误,比如没有找到某一个元素,程序就会报错,就前功尽弃了。所以 我们要加入异常处理。

数据清洗和相关处理

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

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

从上面两种图可以看到,出版时间和片长时间格式有点问题。所以,出版时间我只提取了年份,片长时间只保留数字。
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第5张图片

当然,在我做完数据分析的时候,其实出版时间可以保留月份,用来分析哪些月份出版的电影最多等等,大家实战的时候可以试一下。

开始进行分析

  • 对出版国家的数量进行统计分析
    在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第6张图片
    在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第7张图片
    这里需要注意一下,很多电影都是好几个国家联合出版的。

从结果中我们发现,出版电影最多的前四名分别是

  1. 美国 138部,占比37.3%
  2. 日本 34部,占比9.19%
  3. 英国 33部,占比8.92%
  4. 中国香港 27部,占比7.3%

美国占比遥遥领先这个我们都不意外,毕竟像这些 《肖申克的救赎》、《阿甘正转》、《泰坦尼克号》都是我们非常喜欢也非常熟悉的经典电影。
日本排名第二得益于日本动漫的优势。在这个top250中,有许多日本动漫电影。我不是一个动漫迷,但是我周围有一些朋友是,平常偶尔也会看一下,也能够看得出来,日本动漫做的确实很好。

  • 对电影类型进行分析
    在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第8张图片

在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第9张图片
结果中,我们发现,电影类型最多的前四位是剧情爱情喜剧犯罪。电影类型最少的前四位是:情色灾难恐怖运动
与前面的出版国家情况类似,每一部电影都有许多类型。

博主也趁着疫情在家这一段时间,刷了几部这里面的电影。给我最大的感触就是我能够与情节产生共鸣。无论是《海上钢琴师》男主1900 碰见心动女生时的不知所措、开心、懊悔,还是《肖申克的救赎》安迪逃出监狱时的激动、咆哮;我们就像是电影里的角色,情感上就感觉特别的真实。

这个结果我们也不会有太大意外。

  • 对电影上映时间进行分析

在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第10张图片
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第11张图片
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第12张图片

从图1来看,出版电影最多的年份是2004年,其次是2010、2013、2015.

从图2的近31年出版电影数量分析结果来看,呈现一个山峰形状。也就是每隔一年,都会涌现出比较多的好电影。从2000之后,电影的数量相较于之前有了比较大的提升,也得益于电影行业在近二十年的快速发展,从业人数越来越多,每年上映的电影基数越来越多,好电影也会相应的越来越多。

从图3的饼状图分析结果来看,2000-2010年出版的电影所占的比例最大,其次是2010-2020年、1990-2000年。这里每隔十年进行分析,由于2020年刚开始,又受疫情影响,还没有很多电影上映,可能会造成近十年电影数量小于前一个十年。

  • 对电影时长进行分析
    在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第13张图片

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

从饼状图我们可以看到,电影时长集中在90分钟-140分钟的电影占6成,其次是集中在140分钟-180分钟的电影,占16.4%。这也符合我们平常的认知,大部分电影时长都是在一个半小时到两个小时左右。

从散点图我们可以看到,超过200分钟的电影共有4部,其中时长最长的是238分钟;最少时长的电影只有45分钟。从整体趋势来看,近些年的电影时长越来越集中在100分钟-150分钟这个区间内,这可能也是电影行业的共识吧,时间太短事情讲不清楚,时间太长有显得剧情太拖拉。(哈哈,自己猜测的)

另外,我对出版时间和电影时长进行皮尔斯相关系数分析,结果显示出版时间与电影时长呈负相关线性关系(也就是随着出版时间的增加,电影时长慢慢变短),但是影响程度比较弱。

  • 其他数据相关分析

电影评分相关数据分析表:

类型 数据
均值 8.879200
方差 0.267307
最小值 8.300000
25% 8.700000
50% 8.800000
75% 9.100000
最大值 9.700000

绝对多数电影评分集中在8.7-9.1中间,占比50%,最高评分为9.7,最低评分为8.3.
9.1评分以上的电影数量占比20%,8.7评分以下的电影占比25%.

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

在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第16张图片
在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第17张图片
上面3个图是用来分析评分与上映时间、电影时长的关系。从图中我们可以看到,1980年以下的电影,大多数评分都超过9.0,这也说明经典就是经典,只会随着时间流逝,更显得弥足珍贵。

由于上述图无法判断出好评与电影时长和评分的关系,接下来我们使用斯皮尔曼相关系数进行分析,评分与电影时长的pvalue为0.1667、评分与出版时间的pvalue为-0.1874,表明,评分与电影时长呈正相关,相关性不强,评分与出版时间呈负相关,相关性不强。这也证明了我们前面分析的,老电影通常评分都比较高。

在分析了豆瓣Top250电影的数据后,我发现了这些不为人知的规律(附源代码和详情讲解)_第18张图片
将观看人数与想看人数以及评论人数进行对比分析,从上图可以看到,这三个数据的趋势基本一直。也就是这三者存在正相关线性关系,而且程度非常强。

接下来统计评论率(评论人数/观看人数)

类型 数据
均值 0.130242
方差 0.045363
最小值 0.043521
25% 0.096739
50% 0.129904
75% 0.159457
最大值 0.291848

从结果上来看,评论率最小的不到百分之5,也就是有100个人看过这个电影,只有五个人写了评论。平均值也就13%。评论率超过15.9%的只占25%。所以说,大家平常在豆瓣点击看过,评完分后,记得去写评论,为你喜欢的电影写下你额感受,让更多的人看到,这样也会感染更多的人。

这里我只是进行了比较简单的分析,大家可以在次基础上进行更进一步的分析。数据和代码我都上传到了github上,大家有需要的可以自行下载。
代码以及数据地址

大家可以参考下面的例子学习相关知识点:

  • pandas相关操作
  • python统计分析-假设检验
  • Cookie登录虎扑爬取帖子
  • python数据分析实战-在线零售业务的交易-电商平台零售数据分析(附源代码)
  • python统计分析常用基础知识总结(python数据分析师必备)

我目前正在学习python数据分析,如果大家有什么问题,可以直接留言。也欢迎对数据分析感兴趣或者想以后成为python数据分析师的同学留言交流。

此项目源代码的Github地址

你可能感兴趣的:(python数据分析)