当前位置: 首页 > news >正文

TMDB电影数据分析(下)

TMDB电影数据分析(下)

      本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素,数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分,发行时间等有关系,通过具体数据进行分析影响票房的因素。

数据集概分析 以及 数据清洗

接上文TMDB电影数据分析(上)

数据统计

1、查看收入前十的电影信息

      初步猜测影响电影收入的因素是电影预算,电影类型,上映年份,电影时长,评分,参与评分次数,受欢迎程度等。下面我们找出电影收入最高的前十部电影的基本信息。
在这里插入图片描述

      第一行代码调用sort_values()方法针对revenue字段进行降序排列并取前10行记录赋值给top10变量。该变量的值是一份DataFrame表格,一共有11行,第一行是列标题,剩下10行是电影收入排名前十的电影信息。第二行代码输出top10表格中的buget、genres、original_title等字段,结果发现电影收入排名前十的电影预算相对高,genres字段中id为12、name为Adventure的电影和id为28、name为Action的电影占比较大,release_date字段中显示上映年份基本分布在2000年后,vote_count字段表明参与评分次数相对充足,从vote_average字段看出收入高的电影评分不低,而popularity字段显示高收入电影的受欢迎程度。

2、计算收入与其他字段相关系数

      第一行代码在原数据集中增加一个release_year字段,数据集中提供了电影上映日期,但release_data字段值的数据类型不是日期类型,使用DataFrame的to_datatime()函数将指定格式转为日期格式,使用year属性获取日期中的年份作为新增字段的值。为了验证猜测,第二行代码中调用DataFrame的corr()函数计算budget、release_year、runtime、popularity、vote_average、vote_count等字段与revenue(电影收入)字段的相关性,获取发现revenue字段与budget、popularity及vote_count字段相关系数分别为0.70、0.60及0.76,具有高相关性,revenue字段与runtime、release_year、vote_average字段相关系数分别为0.23、0.14、0.18,具有低相关性。
在这里插入图片描述

3、查看电影年份分布

      首先调用DataFrame中的value_counts()方法对release_year字段值进行频数统计,得出各个年度发行的电影数量,数据集中电影发行年份自1916年起,包含89个年份的电影信息。
在这里插入图片描述

      通过绘制直方图直观看出电影在各年度的分布情况,如下图所示。
在这里插入图片描述

      从图中可以看出,电影发行年份集中在2000-2016年之间。

4、查看电影时长分布

      统计不同时长电影的数量,通过数据可以看出数据集中记录的电影时长总共有136个以及不同时长电影的数量。
在这里插入图片描述

      通过直方图可以直观看出电影时长集中分布在80-130之间,其中时长在90-110的电影数量占比较大。
在这里插入图片描述

5、查看预算分布

在这里插入图片描述

      数据集中低预算电影占比较大,预算集中在0至0.5x108

6、查看评分分布

在这里插入图片描述

      电影的评分集中分布在5-7分

7、查看评论次数分布

在这里插入图片描述

      数据集中绝大多数电影评论次数低于2000,其中评论次数在500以内评论次数占比最大。

影响收入的因素分析

1、绘制电影收入与影响因子散点图

      下面的代码绘制budget、release_year、runtime、popularity、vote_average、vote_count等字段与revenue字段的散点图。Matplotlib.pyplot模块参数可用plt.rcParams[‘配置参数’]=[修改值]进行修改默认配置,rcParams即run configuration parameters运行配置参数。第一行代码修改配置参数中的字体(font)为黑体(SimHei),是为了在图中可以正常显示中文。第三行代码使用Matplotlib.pyplot模块提供的subplots()函数返回一个元组,包括一个图形对象和所有的axes对象作为元素的ndarray对象,ndarray是2行3列的矩阵,每一个axes对象通过索引进行访问,索引下标从0开始。为每一个axes对象调用scatter()方法绘制散点图,并调用set_title()方法为每个axes对象增加标题。完成子图绘制后,代码第7行调用suptitle()方法为fig对象增加一个标题。效果如下图所示;

在这里插入图片描述
在这里插入图片描述

      上图的第一行标题为budget、popularrity、vote_count的三个子图能更可以直观看出,budget、popularrity、vote_count字段与revenue字段呈线性分布,意味着随影响因子增长,收入整体均呈增长趋势。而第二行标题为vote_average、runtime、release_year的三个子图表明,vote_average、runtime、release_year字段与revenue字段没有明显的线性关系。

2、分组分析电影收入与影响因子的关系

      由于电影发行时间集中在2000年以后,为了更好研究影响电影票房的因素,我们针对2001年至2015年发布的电影数据做进一步分析。

      首先,提取出发行年份在2001年至2015年的所有电影,保存到movies中,筛选后数据还有2103条记录。
在这里插入图片描述

      电影中数据记录了2001至2015总共15年的电影数据,时间跨度可能会相对大一些,按照年份进行分组,以每5年作为一组,将电影数据分成三组,针对每一组数据分析影响电影票房的因素。
在这里插入图片描述

      接下来,使用cut()方法将电影票房按照四分位点划分为四个等级,分别为’Low’, ‘Medium’, ‘Moderately High’, ‘High’,也即“低”、“中下”、“中上”和“高”。
在这里插入图片描述

      划分等级后,按照revenueclass、 fiveyearclass字段对数据进行分组,取出各组数据的中位数,保存到变量d_summary中。
在这里插入图片描述

      按年份分组后,得到三组数据,分别为‘2001-2005年’,‘2006-2010年’,‘2011-2015年’,针对每一组数据进行分析,随着收入越高,对应的预算越高,受欢迎程度越高,评论次数越多,电影时长、评分情况表现不明显。下面通过绘制条形图可以更直观的显示影响收入的因素。

      下面代码调用matplotlib.pyplot模块中bar()函数绘制电影收入与预算、受欢迎度、评论次数、评分、时长、发行年份之间关系的条形图。
在这里插入图片描述

在这里插入图片描述

      上图中含有6幅图,图中横坐标表示收入等级,纵坐标表示影响因素,针对每一幅图,同一收入等级中有三根柱子,从左向右以此表示为第一个5年数据,即2001至2005年电影数据,第二个5年数据,即2006至2010年电影数据,第三个5年数据,即2011至2015年电影数据。第一行分别绘制收入与预算条形图、收入与受欢迎程度条形图、收入与评论次数条形图。从收入与受欢迎程度图像可以看出,三组5年数据,每一组数据均是当电影票房高时,对应受欢迎程度也高,当收入处于同一个等级时,随着时间的推移,电影受欢迎程度略微增高,可能电影受欢迎层度受时间影响,间接影响着电影票房。

      针对收入与预算条形图,对于每一组年份,预算对票房的影响比较明显,收入高的电影,对应预算也高,即随着预算增加,电影票房也增加。说明投资方在制片质量上具有保障性,外加对影片宣传力度大,使票房得以提高。另外,针对收入等级相同时,预算投入与时间没有直接关系,说明不会因为当时时代背景而影响电影预算投入。

      针对收入与评论次数条形图,电影票房受评论次数影响比较大,参与评论的次数多的电影,电影票房高。

      第二行分别绘制收入与评分条形图、收入与时长条形图、收入与年份条形图。从这三幅条形图可以看出,电影收入与电影评分、电影时长、电影发行年份的关联度不明显。说明评分高低、时长长短及上映年份与电影收入无关。

3、分析电影类型对电影收入的影响

      由于每一部电影类型可以兼有多种类型,数据集中genres字段值是以字典数据类型给出。定义一个counttype函数,以数据集作为参数,使用for循环遍历genres字段数据,函数返回值为以电影类型为键,电影类型数量为值构成键值对的字典。
在这里插入图片描述

      针对数据集数据统计各种类型电影数量,将统计结果绘制成条形图,可以更直观查看不同类型电影数量,发现Drama、Comedy是占比最多的。

在这里插入图片描述
在这里插入图片描述

      按照受欢迎程度进行排序,提取最受欢迎前100部电影。并统计最受欢迎的100部电影不同类型占比。由于每一部电影类型可以兼有多种类型,数据集中genres字段值是以字典数据类型给出。使用for循环遍历genres字段数据,并以电影类型为键,电影数目为值构成的键值对作为元素存储到moviestype字典中,得到最受欢迎前100部电影不同类型的数量。
在这里插入图片描述
在这里插入图片描述

      100部最受欢迎电影中,其中Adventure类型和Action类型占比较高。猜测Adventure类型和Action类型是最受欢迎的两类电影,电影类型会影响电影受欢迎程度。

      针对不同收入等级统计电影类型出现频数,并提取频数最多的前5种类型电影,绘制条形图,效果如下:
在这里插入图片描述

在这里插入图片描述

      Action、Adventure、Drama、Comedy、Thriller等类型电影在收入不同等级中占比都很高,考虑到Drama、Comedy在整体电影类型占比中基数比较大,可以猜测电影类型对电影票房具有一定影响,但影响不明显。电影票房可能与影片质量本身有密切关系。

      本博客采用TMDB电影数据集,记录了1919-2016年间电影4803组数据,从电影的评分、预算、受欢迎程度、评论次数、时长、类型以及票房等信息进行分析评价,主要有以下结论:

      (1) 电影评分主要集中在5-7分,电影评分与电影收入没有明显关联关系。说明评分高低不代表电影好坏,不一定能带来更好收益,可能有一大部分观众没有参与评分。

      (2) 电影受欢迎程度,电影预算及评论数量直接影响电影收入。说明电影拍摄前期在灯光、演员、道具、服饰、制作等方面投入较大,保证影片质量,另外收入高的影片,参与评论次数多,观众更受欢迎,说明可以电影宣传比较到位,宣传力度大。

      (3) 最受欢迎的电影类型是Adventure,Action,且收入最高的电影类型依然是Adventure,Action,说明电影类型对电影收入有一定影响,但影响不明显。推测可能与电影上映地区的文化有关。

      (4) 电影时长对电影收入影响不大,记录中电影时长集中分布在90-110分钟,推测原因是数据集中不同时长的数据量过少,体现不出时长和收入的关系,另外,收入高的电影时长比较适中,所以电影时长适中才能保证观众对电影满意,同时能够保证拍片质量,创造更多收益;时长过短,无法保证质量,过长影响观众的观感。

相关文章:

TMDB电影数据分析(下)

TMDB电影数据分析(下) 本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素,数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分…...

django后台手机号加密存储

需求: 1 :员工在填写用户的手机号时,直接填写,在django后台中输入 2:当员工在后台确认要存储到数据库时,后台将会把手机号进行加密存储,当数据库被黑之后,手机号字段为加密字符 3&am…...

三、Qt Creator 使用

关于Qt的安装及环境配置,在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点,在新建 工程文件时,所在路径不要有中文,否则编译及运行程序不能正常运行。 在使用Qt Creator(以下…...

css 边框渐变

需求: 普通的div 边框不好看,做一个渐变色 进程: 最简单的当然是做一个内部是白色的边框是渐变色的图,然后使用 background: url("back.jpg"),这样看起来就像是做了一个渐变的边框如果做不了图&#xff0…...

SofaMQ一些常用的API

SofaMQ的十五种常用的API 引言 SofaMQ作为阿里巴巴开源的消息中间件,提供了丰富的API以支持各种消息传递场景。在本文中,我们将介绍SofaMQ的十五种常用API,并通过实例演示其用法。 1. Producer相关API 1.1 SofaMQProducer SofaMQProduce…...

IIS 缓存, 更新后前端资源不能更新问题

解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…...

中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数

作者&#xff1a;李宝珠 编辑&#xff1a;三羊 中国科学院深圳先进技术研究院罗小舟团队提出了&#xff0c;基于酶动力学参数预测框架 (UniKP)&#xff0c;实现多种不同的酶动力学参数的预测。 众所周知&#xff0c;生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…...

组件中写选项的顺序(vue的问题)

为什么选项要有统一的书写顺序呢&#xff1f;很简单&#xff0c;就是要将选择和认知成本最小化。 副作用 (触发组件外的影响) el全局感知 (要求组件以外的知识) nameparent组件类型 (更改组件的类型) functional模板修改器 (改变模板的编译方式) delimiterscomments模板依赖 (…...

LUA 对象转excel

1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组&#xff0c;否则没有什么意义&#xff0c;即lua对象要是一个数组比较合理。这里使用开源的json.lua&#xff0c; 但是开源的&#xff0c;对于数字作下标的&#xff0c;或者是一个数组里&#xff0c;不同类型的key…...

深入理解 Flink(八)Flink Task 部署初始化和启动详解

JobMaster 部署 Task 核心入口&#xff1a; JobMaster.onStart();部署 Task 链条&#xff1a;JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …...

openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c

文章目录 openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c概述笔记END openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c 概述 开源工程包含的头文件类型是.inc, 要重命名为.h, 否则没有c头文件语法提示 从数组中载入大数p,q,g 建立ossl…...

【k8s】Kubernetes技术和相关命令简介

一、 Kubernetes简介 Kubernetes是Google开源的一个容器编排引擎&#xff0c;它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时&#xff0c;通常要部署该应用的多个实例以便对应用请求进行负载均衡。kubernetes&#xff0c;简称K8s&#xff0…...

清晰光谱空间:全自动可调波长系统的高光谱成像优势

高光谱成像技术 高光谱成像技术是一种捕获和分析宽波长信息的技术&#xff0c;能够对材料和特征进行详细的光谱分析和识别。高光谱成像技术的实现通过高光谱相机&#xff0c;其工作原理是使用多个光学传感器或光学滤波器分离不同波长的光&#xff0c;并捕获每个波段的图像&…...

23.实战演练--个人主页

<?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBackup"true"an…...

[剪藏] - 任泽平年终演讲精华:点燃希望——2024中国经济十大预测

任泽平年终演讲精华&#xff1a;点燃希望——2024中国经济十大预测 泽平宏观 2023-12-23 08:01 发表于上海 12月22日22:30&#xff0c;任泽平年终秀“点燃希望乐观者前行——2024中国经济十大预测”圆满收官。 泽平宏观、北京广播电视台、上海高净值研究院、北京时间等携手打…...

基于LabVIEW的压力传感器测试系统

摘要 现在各类压力传感器已广泛应用于各种工业自控环境&#xff0c;对压力传感器的研究 及应用&#xff0c;既可以体现一个国家的科技发展水平&#xff0c;又可以提升国家的综合国力&#xff0c;还 可以在丰富、方便和智能化人们的生活方面做出重要的贡献。而针对不同仪器组 成…...

Vue 如何使用WebSocket与服务器建立链接 持续保持通信

WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求&#xff0c;链接建立后&#xff0c;客户端和服务器端就可以通过TCP链接直接交互数据。WebSocket链接后可以通过send()方法来向服务器发送数据&#xff0c;并通过onnessage事件来接受服务器返回的数据。 创…...

自动驾驶模拟器

目录 Carla 自动驾驶模拟器 Udacity自动驾驶模拟器 Carla 自动驾驶模拟器 pip install carla 需要下载地图 Udacity自动驾驶模拟器...

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置&#xff08;CSV Data Set Config&#xff09;可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示&#xff1a; 其中&#xff1a; &#xff08;1&#xff09;文件编码 文件的编码格式&#xff0c;与所…...

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路&#xff0c;是参照在linux下的编译流程&#xff0c;配置环境&#xff0c;执行编译命令&#xff0c;根据编译器/链接器反馈的错误&#xff0c;修改相应的源码或者相关库文件的存放路径&#xff0c;编译出windows平台下静态库和二进制执行文件。…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...