一、我们需要什么结论?

我们首先要做的就是定义我们想要的结论。那么根据这份IMDB网站上提取的100年间,65个国家,4937部电影数据,我们想要分析什么呢?

根据我的框架我想知道的结论有以下几点:电影票房和哪些因素的相关性最大?

产出/投入比高的电影主要受哪些因素影响?

电影口碑的相关因素?

从投资者角度进行电影投资预测。

二、如何定义数据?

有了这个框架以后,我们就需要根据这个框架来找相应的数据,但是有些数据是相关的,有些作用不大,我们就要提前对数据进行定义。

网上爬到的数据源有27个变量(variables),包括:电影名称,发行地区,语言,影片类型,上映时间,演员、导演及他们的粉丝数,预算,票房,IMDB评分,评论数,影片分级,影片长宽比,影片长度,发行海报人头数等数据。

如何利用这些变量,需要对他们进行一个简单整理,以便后续利用。

我把以上数据进行了整理,结构如下:

三、如何清洗数据?

有了清晰的数据结构之后,我们就要对数据进行筛选和清洗。

1. 首先查看数据类型

#导入数据分析包

import pandas as pd

import numpy as np

file='/Users/chenzhaograce/Data_Science_A-Z/2017电影票房数据.xlsx'

xls=pd.ExcelFile(file,dtype='object')

info=xls.parse('movie_metadata', dtype='object')

# 前5行,前3列

info.iloc[:5,0:3]

info.dtypes

Film object

Region object

Language object

Color object

Year object

Genre object

Plot object

Director object

Actor 1 object

Actor 2 object

Actor 3 object

Director FB fans object

Actor 1 FB fans object

Actor 2 FB fans object

Actor 3 FB fans object

Film FB fans object

Comments object

Comments by people object

Length object

Box Office object

Budget object

Number of people in posters object

Class object

Width/Height object

IMDB user poll object

IMDB mark object

IMDB link object

dtype: object

2. 删除缺失值

由于我们需要得到的结论和电影票房、电影预算、电影口碑三个相关,所以其中任何一列有缺失值数据就无效,需要删除。

print('删除缺失值前大小',info.shape)

删除缺失值前大小 (4937, 27)

info=info.dropna(subset=['Budget','Box Office','IMDB mark'],how='any')

print('删除缺失后大小',info.shape)

删除缺失后大小 (3804, 27)

我们可以看到有1100多条数据被删除了,只有3804条有效信息。

3. 数据类型转换

接下来我们要对数据进行转换,以便之后的数值运算。有些是定量数据,有些是定性数据。我们要做的是吧定量数据转化为float数据类型。这里我们主要把预算、票房、评分转换为float。

info['Box Office']=info['Box Office'].astype('float')

info['Budget']=info['Budget'].astype('float')

info['IMDB mark']=info['IMDB mark'].astype('float')

print('转换后的数据类型:\n', info.dtypes)

转换后的数据类型:

Film object

Region object

Language object

Color object

Year object

Genre object

Plot object

Director object

Actor 1 object

Actor 2 object

Actor 3 object

Director FB fans int64

Actor 1 FB fans object

Actor 2 FB fans object

Actor 3 FB fans object

Film FB fans object

Comments object

Comments by people object

Length object

Box Office float64

Budget float64

Number of people in posters object

Class object

Width/Height object

IMDB user poll object

IMDB mark float64

IMDB link object

dtype: object

4. 数据排序

基本的清洗结束后,我们先对数据进行排序,比如对票房、预算和评分进行倒序排列

# 按票房排序

info=info.sort_values(by='Box Office', ascending=False, na_position='first')

info.iloc[:5,0:7]

我们可以看到历史最高票房是阿凡达7.6亿美元,前五分别是:《阿凡达》、《泰坦尼克》、《侏罗纪世界》、《复仇者》、《黑暗骑士》。前五均是美国发行片,除了《泰坦尼克》都是2005年以后发行的影片。

我发现查看信息的时候太杂,我要进行信息精简,只看片名、地区、语种、年份、类型、票房、预算和评分。于是我进行以下精简。

new_info=info[['Film','Region','Language','Year','Genre','Box Office','Budget','IMDB mark']]

new_info=new_info.reset_index(drop=True)

new_info.iloc[:10,:6]

重新进行排序以后,范围扩大到前十名,发现很有意思的事情是:前十有2部星球大战、2部复仇者。前十里面8部都是动作片(广义),这是很有意思的现象。

接下来我们按照评分排序看看有什么发现。

# 按评分排序

new_info=new_info.sort_values(by='IMDB mark', ascending=False, na_position='first')

new_info=new_info.reset_index(drop=True)

new_info.head()

这个排名也很有意思:除了一部巴西的《继母》以外,其他都是美国发行的。和票房非常不同的是,口碑排名10部中有7部影片都是90年代的片子。

简单来看,顶尖影片的票房和口碑的排名美国在前列。

# 异常值处理

new_info.describe()

大致看了一下,没有异常值,进行下一步数据模型构建。

5. 构建模型双变量筛选:如IMBD评分大于8.5的影片中票房排序。

我们需要增加投入产出比的变量以计算相关因素的影响。

1)复杂筛选

用评分8.5以上,且票房排名按从大到小进行排序。

query=new_info.loc[:,'IMDB mark']>8.5

new_info.loc[query,:].sort_values(by='Box Office', ascending=False, na_position='first')

按这个筛选,我们就会发现不太对了。8.5以上评分的影片中最差的票房只有10万,最好的票房是5.3亿,差距太大。根据这个简单筛选,可以看出评分和票房的关系并不是很大,具体相关性有多高,需要进一步分析。

2)产出投入比

增加一个变量:产出投入比,来进行衡量。

new_info['output-input ratio']=new_info.loc[:,'Box Office']/new_info.loc[:,'Budget']

new_info.head()

query_ratio=new_info.loc[:,'output-input ratio']>50

new_info.loc[query_ratio,:].sort_values(by='IMDB mark', ascending=False, na_position='first')

这个排名显示了:在产出投入比大于50倍的情况下,IMDB评分排序。可以看到差距也很大,最低的和最高的分别是3.6分和8.3分。所以按这样的简单筛选并不能说明问题,需要更进一步的分析。

python电视剧口碑分析_用Python分析IMDB历届电影票房数据(上)相关推荐

  1. 用Python爬取并分析Box Office Mojo网站2019年每日票房数据

    最近在处理一些和有关电影的工作,需要用到一些北美电影票房数据,而这部分数据最权威的网站当属Box Office Mojo(以下简称BOM),于是就上去查看了一下.估计经常关注这个网站的盆友们都知道,这 ...

  2. python爬虫实战三:近十年中国电影票房数据爬取与分析

    近十年中国电影票房数据爬取与分析 前言 爬取 分析 十年top10 年度top5 每年电影数 每年总票房 二八原则 代码与数据 前言 这篇文章主要讲述的是近十年(2010-2019)中国电影票房数据的 ...

  3. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下: http://www.demodashi.com/demo/14588.html ##详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从 ...

  4. 十年电影票房数据爬取与分析 | 免费数据教程

    3月8日妇女节,我很期待的超级英雄电影<惊奇队长>上映了,票房表现很快过亿,但大众口碑却让人失望. 一个有趣且常见的现象是,隔壁获奖无数,口碑爆炸的<绿皮书>,票房却远远不如& ...

  5. python实现的电影票房数据可视化

    代码地址如下: http://www.demodashi.com/demo/14275.html ##详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从 ...

  6. 手把手教你用Python爬中国电影票房数据

    我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从Python语法教起,夹杂着大量Python开发的知识点,花了很多时间却始终云里雾里,不知道哪些知识才是真正有用的. ...

  7. 项目三:近10年来中国电影票房数据爬取分析

    近10年来中国电影票房数据爬取分析 前言 数据采集与存储 数据清洗和简单分析 引入库,导入数据 近10年top 年度top5 每年电影数 每年总票房 结论 二八原则 end 点击跳转到总目录 前言 这 ...

  8. python视频口碑佳_从万众期待到口碑扑街!用Python来分析一下大家对唐探3的评论...

    原标题:从万众期待到口碑扑街!用Python来分析一下大家对唐探3的评论 来源 |菜鸟学Python 作者 |菜鸟哥 唐人街探案系列题材,凭借着演员出色的表演,以及精彩的探案故事,近些年来成为了一部很 ...

  9. 用python进行营销分析_用python进行covid 19分析

    用python进行营销分析 Python is a highly powerful general purpose programming language which can be easily l ...

最新文章

  1. ICMP重定向(ICMP Redirect)
  2. 谷歌CEO为「Jeff Dean开除研究员」事件道歉,却引发持续争议
  3. 【Matlab 控制】求函数极限
  4. 大型网站架构演化历程
  5. python策略模式的应用_Head First 设计模式——策略模式(Strategy Pattern)——Python实现 | 学步园...
  6. NYOJ 456 邮票分你一半
  7. 看似毫无规律的各种现象
  8. 将博客文章转变为电子书
  9. Vue源码: 关于vm.$watch()内部原理
  10. 基于plotly数据可视化_[Plotly + Datashader]可视化大型地理空间数据集
  11. python爬取正确但不出文件_使用BeautifulSoup进行Python抓取时不显示所有行
  12. 代码和mysql服务器编码不一致_PL/SQL Developer教程:解决oracle服务器端和客户端字符编码不一致问题...
  13. SQLServer基础之数据页类型:GAM,SGAM,PFS
  14. PAT1030.——完美数列
  15. MATLAB 2018b 安装与简介
  16. tfidf+embedding
  17. 量化交易入门阶段——欧奈尔的CANSLIM模型(C 季度每股收益增长)
  18. QtAndroid详解(6):集成信鸽推送
  19. 华为防火墙L2TP/L2TP over IPSec
  20. UI :新手自学完全指南(1) Karen X. Cheng

热门文章

  1. python爬取饿了么外卖商家数据_python爬饿了么外卖数据(1)
  2. “饿了么”外卖系统开源了!
  3. 关于js获取id的函数封装
  4. Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程
  5. 手机录音amr怎么转mp3?教你一招
  6. vue 防止表单重复提交
  7. Java实现文件的加密与解密
  8. 基于ROS的Most Stars开源代码汇总(自动驾驶汽车+RGBDSLAMv2+ROS2+人识别与跟踪等)
  9. boost 库 applyvisitor使用
  10. 国语-台大陈蕴侬-应用深度学习-2021