当前位置:   article > 正文

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

用什么理论分析电影票房数据

一、我们需要什么结论?

我们首先要做的就是定义我们想要的结论。那么根据这份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分。所以按这样的简单筛选并不能说明问题,需要更进一步的分析。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/441739
推荐阅读
相关标签
  

闽ICP备14008679号