【案例分析】基于IMDb数据集的印度电影信息剖析

文章目录

*背景分析:

  • 近年来,欧美电影的热潮逐渐褪去,华语影坛的诸多作品也越发呈现出百花齐放的盛态,但与此同时,《少年派的奇幻漂流》等一众印度电影也逐渐步入世界的视野。众多关注度下的欧美与国产电影分析可以说在数据分析界脍炙人口,针对即将崛起的印度电影市场也应当进行相应的补充,以开拓不同的视野,并用不一样的方式补充前人的数据分析思路。

*数据来源:

  • 出于各种需求,国内外出现了众多电影评分平台,例如IMDb、豆瓣等等。其中IMDb作为起步最早、国内外数据最全面的平台,经过多年更迭的评价分析体系,IMDb积累了庞大且精确的各类电影基础信息、用户评价和电影推荐算法,受到广大影迷和影评人的普遍认可。因此本文选用了全球最大的数据分析平台Kaggle中用户提供的IMDb数据集,来进行深入分析。

1.导入数据与包,剖析题目

1.1导入库与相关属性

1.1.1引用主干部分所需库
# 基础库调用
import numpy as np 
from numpy.random import seed
%matplotlib inline
import pandas as pd 
import seaborn as sns
sns.set(style="darkgrid")
  • 基础包应用广泛,提前表达利于下方多个程序的正常运行。
1.1.2拓展工具和需求的表达式导入
# Pyecharts绘图拓展包
from pyecharts.charts import *
from pyecharts.components import Table
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import random
import datetime
from pyecharts.globals import CurrentConfig, OnlineHostType
CurrentConfig.ONLINE_HOST = OnlineHostType.NOTEBOOK_HOST
from pyecharts.charts import Bar
bar = Bar()

# 图片加载中文
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
import matplotlib as mpl
mpl.rcParams["font.family"] = "SimHei"  # 添加中文字体名称
mpl.rcParams["axes.unicode_minus"]=False # 由于更改了字体导致显示不出负号,此设置用来正常显示负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签

# 删除警告
import warnings
warnings.filterwarnings('ignore')
  • Pyecharts具有一定的交互性,且绘图整体显示自然、操作便捷,利于图片可视化等方面表达。
  • 图片加载和警告删除的步骤,利于接下来的可视化准确性和美观性。

1.2给定数据集导入

1.2.1导入IMDb的movies_data数据
# 数据的导入
train_data = pd.read_csv(r'movies_data.csv')
# 探究数据格式、大小
print('实验数据大小:',train_data.shape)
实验数据大小: (5659, 10)
  • 数据内共5659组,每组10个属性。
1.2.2备份数据集
# train的数据备份
data_Age = train_data.copy()
  • 备份的具体需求之后会写出
1.2.3输出数据集的前五行,查看数据的构成
train_data.head(5)
NameYearDurationGenreRatingVotesDirectorActor 1Actor 2Actor 3
0#Gadhvi (He thought he was Gandhi)2019109Drama7.08Gaurav BakshiRasika DugalVivek GhamandeArvind Jangid
1#Yaaram2019110Comedy, Romance4.435Ovais KhanPrateikIshita RajSiddhant Kapoor
2...Aur Pyaar Ho Gaya1997147Comedy, Drama, Musical4.7827Rahul RawailBobby DeolAishwarya Rai BachchanShammi Kapoor
3...Yahaan2005142Drama, Romance, War7.41086Shoojit SircarJimmy SheirgillMinissha LambaYashpal Sharma
4?: A Question Mark201282Horror, Mystery, Thriller5.6326Allyson PatelYash DaveMuntazir AhmadKiran Bhatia
  • 检查后发现显示正常,数据集有10列对象。

1.3数据集的属性分析

1.3.1数据集的属性分析
列标题中文解释含义解析
Name电影名称电影的基本门面可以了解电影基本内容和看点。
Year电影出品年份代表电影的时代背景随着技术和时代的不断发展, 大众审美变化越来越快,结合之前的分析,年份较早的电影容易获得高评分。
Duration电影时长电影持续的总时间一定程度上影响观影体验,时长太长或太短似乎都不太受大家喜爱,评分也会相应降低。
Genre电影类型电影内容和展现手法的标签电影贴上不同标签,以期满足不同人群的观影偏好, 进而获得高评分。
RatingIMDb对应评分影评界的标杆为保证整体参选电影的评选质量,设计了严格的筛查和评定标准,为大众广泛接受和认可。
Votes参评人数对所有评价的数据汇总反映了大众的总体期待程度及电影热度。
Director电影导演电影生产的组织者和领导者知名导演的影响力有时甚至超过明星大牌,在进行评分时有一定的分数加成。
Actor 1第一主演领衔主演一部优秀的影片离不开演员的演绎,“老戏骨”和 “小鲜肉”对于电影最终评分的作用明显不同。
Actor 2第二主演主要参演角色但不具备领衔主演的广泛影响力。
Actor 3第三主演主要参演角色但不具备领衔主演的广泛影响力。
  • 解析仅代表现有分析的一些说明,对于本报告本身具备一定意义,下面进行本人的深度分析。
1.3.2属性深度分析
列标题深度分析
Name表述内容往往浅尝辄止,没有更深度的内容说明,不具备简介一样的自然语言处理可分析性。
Year考虑到网站的时效性和时代的发展,往往年代较久远的电影数目相对会偏少,数据分析可能不具备普遍价值。
Duration电影本身对时长不设限,后期处理数据时可能会出现个别市场极短和极长的零星数据,影响可视化观感。
Genre电影类型可能会极其丰富,导致随其他变量共同分析时存在障碍,计划多选取较高频数和较多数据采集分析。
Rating具备较强价值,需要联合其他数据进行共同分析,其他多因素对其的影响因素分析在报告中较为关键。
Votes由于缺乏票房的数据,线上投票数目一定程度上决定了电影的整体热度,对后期人物分析也具有一定价值。
Director导演人数较多,且多数作品较少。但根据Karl Persson的IMDb分析,不需要设置频数门槛也能判断导演的作品价值。
Actor 1具备一定影响评分和热度的意义。根据黄恋舒对明星和评价的影响分析,往往领衔第一顺位主演具备很高的分析价值。
Actor 2作为主演之一具备一定的分析意义,但是连同第一主演的共同分析价值更高。
Actor 3作为主演之一具备一定的分析意义,但是连同第一主演的共同分析价值更高。
  • 针对上述进行的分析,进行分析思路的简单数理,具体过程不再展示,下面为思维导图结果。
1.3.3分析基本思路展示(交互性插件,点击 ‘o’ 可进行分支的展开和合并)
# 输入思维导图数据与分层
data = [
    {"name": "印度电影的IMDb数据分析",
     "children": [
             {"name": "基本对象属性可视化",
              "children": [
                  {"name": "随年份变化的电影出品数"},
                  {"name": "电影的时长分布"},
                  {"name": "电影的类型分布"},
                  {"name": "电影的评分分布"},
                  {"name": "电影的参评人数分布"},
                  {"name": "电影的年份树状图可视化"},
                  {"name": "电影的参评人数树状图可视化"},
                  {"name": "电影的类型词云图可视化"},
                  {"name": "不同类型电影的时长分布"},
                  {"name": "导演与演员数目的对比"},
              ]},
             {"name": "市场反馈与趋势",
              "children": [
                  {"name": "年份和电影数目的自相关分析"},
                  {"name": "不同类型电影随年份变化的规律"},
                  {"name": "电影指导最多的二十个导演"},
                  {"name": "电影出演最多的二十个演员"},
                  {"name": "评分高的电影类型"},
                  {"name": "热度高的电影类型"},
                  {"name": "评分最高和热度最高的十个导演"},
                  {"name": "评分最高和热度最高的十个演员"},
              ]},
             {"name": "影响评分、热度的因素",
              "children": [
                      {"name": "年份、时长、参评人数对评分的影响"},
                      {"name": "年份、时长、评分对参评人数的影响"},
                      {"name": "不同类型电影的评分、热度分布"},
              ]},
             {"name": "近五年的印度电影市场分析",
              "children": [
                      {"name": "近五年印度电影热门类型"},
                      {"name": "近五年印度电影热门导演"},
                      {"name": "近五年印度电影热门演员"},
              ]},
     ],
     }
]

# 导入树
tree = (
    Tree()
    .add("",data=data,collapse_interval=3)
)

tree.render_notebook()

在这里插入图片描述

  • 计划利用上述步骤实现现有数据的市场详细剖析,后根据上述概念和近期印度市场的分析,给予一定程度上的预测建议。

2.基本对象属性可视化

  • 十个对象本身具有一定的分析价值,即本节内容的重点,通过数据可视化的方式输出图表,方便进行观察思考。
  • 后续将通过其他相互之前的影响关系等,进一步剖析其他深层次的内核。

2.1五个对象的基本信息

# 以下六段代码展现六个基本属性的具体信息
# ↓↓下列代码格式基本遵守以下内容↓↓

# plt.subplot()子图的构造位置
# sns.distplot()核密度和直方图
# plt.title()标题
# plt.xlabel()x轴标题
# plt.ylabel()y轴标题
# plt.show()显示图

plt.figure(figsize=(20, 10)) # 图片显示大小

# Year
plt.subplot(1,2,1)
sns.distplot(train_data['Year'], color="#31BEFA")
plt.title('随年份变化的电影出品数')
plt.xlabel('年份')
plt.ylabel('密度')

# Duration
plt.subplot(1,2,2)
sns.distplot(train_data['Duration'], color="#31BEFA")
plt.title('电影的时长分布')
plt.xlabel('时长')
plt.ylabel('密度')
plt.show()

plt.figure(figsize=(20, 20)) 

# Genre
import collections
plt.subplot(2,1,1)
df = train_data.join(train_data['Genre'].str.split(', ',expand=True))# Genre分段
genre = pd.concat([df[0],df[1],df[2]])# 合并后分析
genre.value_counts().plot(kind='bar', color="#31BEFA")# genre的分类统计
plt.title('不同类型的电影数目')
plt.xlabel('类型')
plt.ylabel('密度')

# Rating
plt.subplot(2,2,3)
sns.distplot(train_data['Rating'], color="#31BEFA")
plt.title('电影的评分分布')
plt.xlabel('评分')
plt.ylabel('密度')

# Votes
plt.subplot(2,2,4)
# 为显示清晰,把显示参评人数大于等于2000的部分
votes_data = train_data.drop(train_data[(train_data['Votes'] > 2000)].index)
sns.distplot(votes_data['Votes'], color="#31BEFA")
plt.title('电影的参评人数分布')
plt.xlabel('参评人数')
plt.ylabel('密度')

plt.show()

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

  • 整体而言,电影的出品数目随着时代推进,逐步增大。
  • 绝大多数电影的时长控制在75-200分钟,其中较为集中在110-150分钟。
  • 剧情片Drama、动作片Action、爱情片Romance、喜剧片Comedy、犯罪片Crime在印度电影市场中出品数量较多,其中剧情片的标签受到极度青睐,由于整体数据较多,需要进一步可视化处理,以达到更清晰的展现。
  • 印度电影在IMDb中的评分主要集中在5-7分,且整体分布较清晰和分散,在2-10的每个区间都有明显的打分比例。
  • 考虑到参评人数的差距极大,且参评人数越多的影片占比一定越小,因此选取参评人数范围在0-2000。但缩小范围后,依旧不能很明显的显示更清晰的分布形式,只可看出大多数的参评人员分布于0-1000左右的区间。

2.2其他细化可视化、分布

2.2.1印度电影年份分布的树状图可视化
import squarify

# 新建df2储存Year,后设计分层
df2 = pd.DataFrame(train_data['Year'])
c1 = df2[(df2>2015)].size
c2 = df2[((df2<=2015) & (df2>2010))].size
c3 = df2[((df2<=2010) & (df2>2005))].size
c4 = df2[((df2<=2005) & (df2>2000))].size
c5 = df2[((df2<=2000) & (df2>1990))].size
c6 = df2[((df2<=1990) & (df2>1980))].size
c7 = df2[((df2<=1980) & (df2>1960))].size
c8 = df2[(df2<=1960)].size

# 填写下标和数据
labels_2 = '2015-','2011-2015','2006-2010','2001-2005','1991-2000','1981-1990','1961-1980','before 1960'
sizes_2 = [c1,c2,c3,c4,c5,c6,c7,c8]
# 设置参数、输出图
colors = [plt.cm.Spectral(i/float(len(labels_2))) for i in range(len(labels_2))]
plt.figure(figsize=(12,8), dpi= 80)
squarify.plot(sizes=sizes_2, label=labels_2, color=colors, alpha=.8)
plt.title('电影年份树状图')
plt.axis('off')

df_Year = pd.DataFrame(data = sizes_2,index = labels_2)
plt.show()

在这里插入图片描述

  • 已知数据集中所有印度作品的出品年份区间在1931年-2021年。
  • 图中已知2000年后的电影出品数目占总数的很大份额。
  • 1960年前的比例占比较少,2015年后所占比例较其他区间有较大份额。
2.2.2印度电影参评人数分布的树状图可视化
import squarify

# 新建df1储存Votes,后设计分层
df1 = pd.DataFrame(train_data['Votes'])
b1 = df1[(df1["Votes"]>10000)].size
b2 = df1[((df1["Votes"]<=10000) & (df1["Votes"]>1000))].size
b3 = df1[((df1["Votes"]<=1000) & (df1["Votes"]>100))].size
b4 = df1[((df1["Votes"]<=100) & (df1["Votes"]>50))].size
b5 = df1[((df1["Votes"]<=50) & (df1["Votes"]>10))].size
b6 = df1[(df1["Votes"]<=10)].size

# 填写下标和数据
labels_1 = '>10000','1000-10000','100-1000','50-100','10-50','<=10'
sizes_1 = [b1,b2,b3,b4,b5,b6]
# 设置参数、输出图
colors = [plt.cm.Spectral(i/float(len(labels_1))) for i in range(len(labels_1))]
plt.figure(figsize=(12,8), dpi= 80)
squarify.plot(sizes=sizes_1, label=labels_1,color=colors, alpha=.8)
plt.title('电影参评人数树状图')
plt.axis('off')

df_Votes = pd.DataFrame(data = sizes_1,index = labels_1)
plt.show()

在这里插入图片描述

  • 已知数据集中所有印度作品的出品年份区间约在0-500000。
  • 图中已知参评人数在0-100区间占总数的很大份额。
  • 参评人数大于10000的比例占比较少,参评人数小于1000所占比例较其他区间有较大份额。
2.2.3电影类型的词云图可视化
# 新建df储存Genre的分类数据,后合并列出统计数据
df = train_data.join(train_data['Genre'].str.split(', ',expand=True))
genre = pd.concat([df[0],df[1],df[2]])
print(genre.value_counts())

# 设计参数、输出词云图
words = [ ('Drama',3796),('Action'         ,1686),('Romance'        ,1380),('Comedy'         ,1344),
('Crime'           ,875),('Thriller'        ,679),('Family'          ,416),('Musical'         ,412),
('Mystery'         ,304),('Adventure'       ,277),('Horror'          ,202),('Fantasy'         ,146),
('Biography'       ,115),('History'          ,99),('Music'            ,53),('Documentary'      ,48),
('Sport'            ,40),('Animation'        ,40),('War'              ,33),('Sci-Fi'           ,32),
('News'              ,1),('Western'           ,1)]
wc = (WordCloud(init_opts=opts.InitOpts(width='600px', height='400px')).add("", words))
wc.render_notebook()
Drama          3796
Action         1686
Romance        1380
Comedy         1344
Crime           875
Thriller        679
Family          416
Musical         412
Mystery         304
Adventure       277
Horror          202
Fantasy         146
Biography       115
History          99
Music            53
Documentary      48
Sport            40
Animation        40
War              33
Sci-Fi           32
Western           1
News              1
dtype: int64

在这里插入图片描述

  • 词云图整体越大表示该词出现频次越多,表示电影类型更受导演喜爱。
  • 其中,剧情片Drama所占比重较其他品类明显更大。
  • 其次,为爱情片Romance、动作片Action、喜剧片Comedy所占比重较大。

2.3其他可视化属性

2.3.1不同类型电影的时长分布
# 设计、引入初始参数
plt.figure(figsize=(20, 10))
movies_gr = train_data
genresList=set()
# 分类Genre后合并
for s in movies_gr['Genre'].str.split(','):
    genresList=set().union(s,genresList)
genresList=list(genresList)

# 新建genresDf2
genresDf2=pd.DataFrame()
for genre in genresList:
    genresDf2[genre]=movies_gr['Genre'].str.contains(genre).apply(lambda x :1 if x else 0)
genresDf2['Duration']=movies_gr['Duration']
genresDf2=genresDf2.sort_index()
# 对每个类型的电影按年份求和
genresDf2=genresDf2.groupby('Duration').sum()
# 汇总各电影类型的总量
total2=genresDf2.sum().sort_values()
total2=total2[-10:]

# 设计下标输出折线图
genresDf2=genresDf2[['Drama','Action','Romance','Comedy','Crime','Thriller',
                   'Family','Musical','Mystery','Adventure']]
genresDf2.plot(figsize=(12,5))
plt.title('不同类型电影的时长分布')
plt.xlabel('时长')
plt.ylabel('数目')
plt.grid(True)
plt.show()
<Figure size 1440x720 with 0 Axes>

在这里插入图片描述

  • 由于故事类型不同,导致产生篇幅和内容完整性的需求。不同电影可能对电影时长的要求不同,最终造成的预算也会出现大变化。
  • 考虑到需要保证可视化数据显示质量,筛选出现频次多的十个类型电影,代表性突出电影时长分布。
  • 由图易得整体电影时长分布在90-180分钟区间内。
  • 且在90,120,150分钟,所有类型电影的频数有明显提升,可能是性价比等因素,导致诸多导演喜欢设计影片在这三个时间段左右。
2.3.2导演与演员数目的对比
# set集合取除重复项,计算不重复项的总数
set1 = set(train_data['Director'])
count1 = len(set1)*3
set2 = set(train_data['Actor 1'])
set3 = set(train_data['Actor 2'])
set4 = set(train_data['Actor 3'])
count2 = len(set2)+len(set3)+len(set4)

# 带入数据进行绘图
p2 = plt.bar(['Director * 3','Actor'], [count1,count2], label="rainfall", color="#31CEFA") 
plt.title('导演与演员数目的对比')
plt.ylabel('数目')
plt.show()

在这里插入图片描述

  • 针对导演与演员数目的对比,分析可以反应整体印度电影市场的人才供给情况。
  • 由于演员有三列,而导演仅有一列的设计,最终把导演数目进行比较。
  • 由于三倍导演的数目大于演员,可以看出演员的集中度较为明显。

第二节总结

  • 就印度电影本身信息而言:
  • 绝大多数电影的时长控制在75-200分钟,其中较为集中在110-150分钟。可见就印度整体观影者来说,可以接受像电影一类的较长时间享受。在90,120,150分钟,所有类型电影的频数有明显提升,可能是性价比等因素,导致诸多导演喜欢设计影片在这三个时间段左右。
  • 2000年后的电影出品数目占总数的很大份额。1960年前的比例占比较少,2015年后所占比例较其他区间有较大份额。印度发展早期(1960年印度经济有较大发展)没有较多资源发展电影业,而近些年的印度电影市场急剧拓张。娱乐项目的发展一定意义上意味着人民生活的日益富足。
  • 图中已知参评人数在0-100区间占总数的很大份额。根据Karl Persson的文献表明,参评人数大于10000为较高知名度的电影。但实际印度电影的占比较少,参评人数小于1000所占比例较其他区间有较大份额。则印度还有相当一部分影片无法达到正规规格,或者院线资源有限,无法提供充足的上架资源。
  • 剧情片Drama、动作片Action、爱情片Romance、喜剧片Comedy、犯罪片Crime在印度电影市场中出品数量较多,其中剧情片的标签受到极度青睐,可以看出印度影迷一定的观影画像特征。
  • 印度电影在IMDb中的评分主要集中在5-7分,且整体分布较清晰和分散,在2-10的每个区间都有明显的打分比例。
  • 三倍导演的数目大于演员,可以看出演员的集中度较为明显。印度电影市场的演员某种意义上,相对导演较为稀缺。

3.市场反馈与趋势

  • 市场对电影类型、导演、演员的敏感程度具有较高价值,可以利于这部分数据进行其他深入分析。
  • 市场具有一定的规律性,可以探究过往市场发展趋势,探究市场整体的变化形式。
  • 后将进行近年的市场数据分析,相结合更具备可靠性。

3.1年份和电影数目的(偏)自相关分析

# 导入分析库
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

# 生成测试数据,模拟某商店营业额
data1 = train_data['Year'].value_counts().sort_index(ascending=True)

# 绘制时序图
data1.plot()
plt.title("年份和电影数目的自相关分析")
plt.xlabel('年份')
plt.ylabel('数目')
plt.legend()
# 绘制自相关图
plot_acf(data1)
# 绘制偏自相关图
plot_pacf(data1)
plt.show()

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

  • 自相关系数拖尾,偏自相关系数2阶截尾,且n从2或3开始控制在置信区间之内,即为AR(2)模型,下一个观测值约等于前n个观测值的某种线性加权和。
  • 印度电影市场的影片数逐年增长,且在2000年后爆炸式增长,2021年因数据不全会有下滑。

3.2不同类型电影随年份变化的规律

# 设计、引入初始参数
plt.figure(figsize=(20, 10))
movies_gr = train_data
genresList=set()
# 分类Genre后合并
for s in movies_gr['Genre'].str.split(','):
    genresList=set().union(s,genresList)
genresList=list(genresList)

#genresDF
genresDf=pd.DataFrame()
for genre in genresList:
    genresDf[genre]=movies_gr['Genre'].str.contains(genre).apply(lambda x :1 if x else 0)
genresDf['Year']=movies_gr['Year']
genresDf=genresDf.sort_index()
# 对每个类型的电影按年份求和
genresDf=genresDf.groupby('Year').sum()
# 汇总各电影类型的总量
total=genresDf.sum().sort_values()
total=total[-10:]

# 设计下标输出折线图
genresDf=genresDf[['Drama','Action','Romance','Comedy','Crime','Thriller',
                   'Family','Musical','Mystery','Adventure']]
genresDf.plot(figsize=(8,5))
plt.title('不同类型电影随年份变化的规律')
plt.xlabel('年份')
plt.ylabel('数目')
plt.grid(True)
plt.show()
<Figure size 1440x720 with 0 Axes>

在这里插入图片描述

  • 考虑到需要保证可视化数据显示质量,筛选出现频次多的十个类型电影,代表性突出电影时长分布。
  • 易得剧情片Drama在印度电影市场的出品率自统计以来一直处在高位。
  • 爱情片Romance在1970年前也具有较高的标签使用率。
  • 动作片Action则在1980年-2000年被较多导演选择进行拍摄。
  • 2000年后除了剧情片Drama外,其他数个电影类型的使用率相差无几。

3.3行业基石分析

*3.3.1电影指导经验丰富的导演
# 导入数据,取前20项
direct_Data = train_data['Director'].value_counts()
direct1 = direct_Data[:20]
# 参数设置、绘图
direct1.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('电影指导最多的二十个导演')
plt.xlabel('导演名字')
plt.ylabel('数目')
plt.show()

在这里插入图片描述

  • David Dhawan、Mahesh Bhatt等人均具有四十次左右的导演经验,其余十八位也均有15次以上的导演电影次数。
  • 在印度电影市场,即使电影指导次数前二十的导演,导演电影次数也有很大的差距,行业资源可想而知的差距巨大。
*3.3.2电影参演经验丰富的演员
# 导入数据,取前20项
Actor_Data = pd.concat([train_data['Actor 1'],train_data['Actor 2'],train_data['Actor 3']])# 合并
Actor = Actor_Data.value_counts()
actor1 = Actor[:20]
# 参数设置、绘图
actor1.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('电影出演最多的二十个演员')
plt.xlabel('演员名字')
plt.ylabel('数目')
plt.show()

在这里插入图片描述

  • Mithun Chakrabprty、Amitabh Bachchan、Dharmendra等三人均具有140次以上的参演经验,第一位的Mithun Chakrabprty更是达到了160次,比第二十位的Shabana Azmi多出一倍。
  • 除去上述三位,其余十七位也均有80次以上的参演电影次数。
  • 不难看出在印度电影市场,不同演员具有极大的资源差异,当然也不排除配角挂名主角引流和电影拍摄周期极短等情况。

3.4市场赞誉与热捧的电影类型

3.4.1评价最高的电影类型
# 构建一个新的dataframe,只需要类别和评分这两个特征
Genre_data = pd.DataFrame(columns = ['Genre','Rating'])
# data.iterrows:使用迭代器的方式读取数据,返回数字索引(int)和每一行的数据(series)
for i, row_data in train_data.iterrows():
    # 使用split将genres分割
    Genres = row_data['Genre'].split(', ')
    n_Genres = len(Genres)
    # 构建一个空字典,用以保存genre和rating的值
    dict_obj = {}
    dict_obj['Rating'] = [row_data['Rating']] * n_Genres
    dict_obj['Genre'] = Genres
    # 将字典转为dataframe类型
    Genre_df = pd.DataFrame(dict_obj)
    # DataFrame的append将genre_df的数据添加进genre_data
    Genre_data = Genre_data.append(Genre_df)
# 按题材统计评分
Genre_Rating = Genre_data.groupby('Genre')['Rating'].mean()
Genre_Rating = Genre_Rating.sort_values(ascending = True)
plt.figure(figsize=(15.0, 10.0))
Genre_Rating.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('评分高的电影类型')
plt.xlabel('电影类型')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

根据IMDb的评分标准:
加权平均分(WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
R = 该电影的平均分
v = 该电影的总投票数
m = 列入前250所需要的最少票数(目前是1300票)
C = 数据库中所有电影的总平均分(目前是6.7)

  • 评分在7以上为优质片:纪录片Documentary、新闻记者类电影News(但是参评电影数目较少)
  • 评分在5以下为劣质片:恐怖片Horror
  • 上述优质片的市场赞誉率较高,劣质片的反响较为恶劣。
3.4.2热度最高的电影类型
# 构建一个新的dataframe,只需要类别和参评人数(热度)这两个特征
Genre_data = pd.DataFrame(columns = ['Genre','Votes'])
# data.iterrows:使用迭代器的方式读取数据,返回数字索引(int)和每一行的数据(series)
for i, row_data in train_data.iterrows():
    # 使用split将genres分割
    Genres = row_data['Genre'].split(', ')
    n_Genres = len(Genres)
    # 构建一个空字典,用以保存genre和votes的值
    dict_obj = {}
    dict_obj['Votes'] = [row_data['Votes']] * n_Genres
    dict_obj['Genre'] = Genres
    # 将字典转为dataframe类型
    Genre_df = pd.DataFrame(dict_obj)
    # DataFrame的append将genre_df的数据添加进genre_data
    Genre_data = Genre_data.append(Genre_df)
# 按题材统计评分
Genre_data['Votes'] = Genre_data['Votes'].astype(float)
Genre_Votes = Genre_data.groupby('Genre')['Votes'].mean()
Genre_Votes = Genre_Votes.sort_values(ascending = True)
plt.figure(figsize=(15.0, 10.0))
plt.title('热度高的电影类型')
plt.xlabel('电影类型')
plt.ylabel('参评人数')
Genre_Votes.plot.bar(figsize=(12,5), color="#31BEFA")
plt.show()

在这里插入图片描述

  • 已知印度市场反响可以一定程度上,由电影的参评人数反映(上文已说明论文引据)
  • 热度较高的影片类型为:传记片Biography、体育片Sport
  • 热度较低的影片类型为:新闻记者类电影News、西部片Western、动画片Animation、纪录片Documentary
  • 因此上述热度也代表着一定意义上,印度市场对某类电影的青睐程度。

3.5电影人针对性分析

3.5.1评分最高和热度最高的十个导演
# 定义函数选取大于20部分
def topn(df,n=20):
    if df.shape[0]<n:   # 如该分组少于20,返回None 
        return None
    else:
        # 对每个组按投票数降序排序,取出前n行的票房,找出'Rating'列,进行求和
        return df.groupby('Director')['Rating'].mean().sort_values(ascending=False)[:20]
# 调用函数:按照导演分组,然后对每组数据应用函数topn函数,最终结果去除nan(即除去电影部数少于20的数据)
train_data2 = train_data
train_data2.groupby('Director').apply(topn).dropna()

# 设计参数、绘制子图合集
plt.subplot(121)
d2 = df.groupby('Director')['Rating'].mean().sort_values(ascending=False)[:10]
d2.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('评分最高的十个导演')
plt.xlabel('导演名字')
plt.ylabel('评分')
plt.subplot(122)
d3 = df.groupby('Director')['Votes'].mean().sort_values(ascending=False)[:10]
d3.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('热度最高的十个导演')
plt.xlabel('导演名字')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

  • 评分最高的十位导演均达到9分以上。
  • 热度最高十位的导演有极大差距,可能是具有某几项爆款作品所致,例:Ang Lee具有仅600000的参评人数,占据绝对领先地位。
  • 考虑到拍摄电影数目、电影参评人数较少,价值有限。
3.5.2评分最高和热度最高的十个演员
# 构建一个新的dataframe,只需要演员和评分这两个特征
train_data['Actor'] = train_data.apply(lambda x:x['Actor 1']+","+x['Actor 2']+","+x['Actor 3'],axis=1)
Actor_data = pd.DataFrame(columns = ['Actor','Rating'])

# data.iterrows:使用迭代器的方式读取数据,返回数字索引(int)和每一行的数据(series)
for i, row_data in train_data.iterrows():
    # 使用split将Actor分割
    Actors = row_data['Actor'].split(',')
    n_Actors = len(Actors)
    # 构建一个空字典,用以保存actor和rating的值
    dict_obj = {}
    dict_obj['Rating'] = [row_data['Rating']] * n_Actors
    dict_obj['Actor'] = Actors
    # 将字典转为dataframe类型
    Actor_df = pd.DataFrame(dict_obj)
    # DataFrame的append将Actor_data的数据添加进Actor_data
    Actor_data = Actor_data.append(Actor_df)
    
# 按演员统计评分
Actor_Rating = Actor_data.groupby('Actor')['Rating'].mean()
Actor_Rating = Actor_Rating.sort_values(ascending = True)

# 设计参数、绘制子图
plt.subplot(121)
plt.title('评分最高的十个演员')
plt.xlabel('演员名字')
plt.ylabel('评分')
Actor_Rating.tail(10).plot.bar(color="#31BEFA")

# 定义函数选取大于20部分
def topn(df,n=20):
    if df.shape[0]<n:   #如该分组少于20,返回None 
        return None
    else:
        #对每个组按投票数降序排序,取出前n行的票房,找出'Votes'列,进行求和
        return df.groupby('Actor')['Votes'].mean().sort_values(ascending=False)[:20]
#调用函数:按照演员分组,然后对每组数据应用函数topn函数,最终结果去除nan(即除去电影部数少于20的数据)
train_data1 = train_data
train_data1.groupby('Actor').apply(topn).dropna()

# 设计参数、绘制子图
plt.subplot(122)
d1 = train_data.groupby('Actor 1')['Votes'].mean().sort_values(ascending=False)[:10]
d1.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('热度最高的十个演员')
plt.xlabel('演员名字')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

  • 评分最高的十位演员均达到9分以上。
  • 根据明星影响力对电影影响相关论文中,指出领衔主演具有非常高的热度影响力。
  • 热度最高十位的第一顺位演员有极大差距,可能是具有某几项爆款作品所致,例:Suraj Sharma具有仅600000的参评人数,占据绝对领先地位。
  • 考虑到拍摄电影数目、电影参评人数较少,价值有限。

第三节总结

  • 印度电影市场的影片数逐年增长,且在2000年后爆炸式增长,2021年因数据不全会有下滑。因符合AR(2)模型,其他条件不变时可推出未来还将会有上升趋势。
  • 剧情片在印度电影市场历史是一直具有很高的曝光率。爱情片、动作片业均有高光时刻,但无法达到剧情片的高度,因此在印度剧情片的拍摄热度远超其他类型,某种程度上也是技术、市场、热度综合的结果。
  • 就导演和演员出现的频次来看。第一顺位的David Dhawan有四十次左右的导演经验,而第二十顺位的导演不到二十次。第一位的Mithun Chakrabprty更是达到了160次,比第二十位的Shabana Azmi多出一倍。由导演、参演电影次数的差距,可以看出行业资源的垄断和某种程度上从业时长不会太长,可能造成行业内风气差、压力大等后果。
  • 根据IMDb的评分标准和有关论文的阐述,评分在7以上为优质片,评分在5以下为劣质片。纪录片、新闻记者类电影具有较高的市场赞誉率,而恐怖片则有较差市场风评。
  • 传记片、体育片等具有较高热度,片均具有1w+的参评人数,反映的热度较高。而新闻记者类电影、西部片、动画片、纪录片仅数百参评人数,此类低热度电影需要投资者引起警惕。
  • 导演来说,Saif Ali Sayeed等人具有最高的影片赞誉,Ang Lee具有极高的热度。演员来说,Ahaan Jha等人具有最高的影片赞誉,Suraj Sharmm具有极高的热度。

4.影响评分、热度的因素

  • 评分和热度在各种数据分析中占据重要地位。
  • 本节意在探究印度市场的电影信息因素对整体评分和热度的影响比重,探究在哪部分进步更符合市场。

4.1数据处理

4.1.1观察数据是否填充完整
train_data = train_data.fillna(-1)# 填充空值为-1
print(train_data.isnull().sum())# 观察是否缺失
Name        0
Year        0
Duration    0
Genre       0
Rating      0
Votes       0
Director    0
Actor 1     0
Actor 2     0
Actor 3     0
Actor       0
dtype: int64
4.1.2数据清洗
train_data = train_data.drop(train_data[(train_data['Duration'] > 250)].index)
train_data = train_data.drop(train_data[(train_data['Votes'] > 10000)].index)
  • Duration大于250时分布过于分散,不利于可视化分析。
  • Votes大于10000时分布过于分散,不利于可视化分析。

4.2数据特征热图探索

ax = sns.heatmap(train_data[['Name','Year','Duration','Rating','Votes','Director',
      'Actor 1','Actor 2','Actor 3','Genre']].corr(),annot=True, fmt = '.3f', cmap = 'coolwarm');
ax.set_title("相关性热图");

在这里插入图片描述

  • 评分Rating的相关性分析中,年份Year于其具有一定的负相关。
  • 参评人数(热度)Votes的相关性分析中,年份Year、时长Duration于其具有一定的正相关。
  • 其余表现不明显。

4.3年份、时长、参评人数对评分的影响

# 设计参数、绘制子图合集
fig=plt.figure(figsize=(10,15))

plt.subplot(311)
plt.plot(train_data['Year'],train_data['Rating'],'o', color="#31CECE")
plt.title('年份与评分关系的散点图')
plt.xlabel('年份')
plt.ylabel('评分')
plt.subplot(312)
plt.plot(train_data['Duration'],train_data['Rating'],'o', color="#31CECE")
plt.title('时长与评分关系的散点图')
plt.xlabel('时长')
plt.ylabel('评分')
plt.subplot(313)
plt.plot(train_data['Votes'],train_data['Rating'],'o', color="#31CECE")
plt.title('参评人数与评分关系的散点图')
plt.xlabel('参评人数')
plt.ylabel('评分')
Text(0, 0.5, '评分')

在这里插入图片描述

  • 随着年份的增长,评分有一定的下降趋势,越接近2021年评分整体分布区间也越大,越久远的电影,高评分聚集更明显。
  • 时长与评分不具备明显关系。
  • 随着参评人数(热度)的增长,评分有一定的上升趋势,越接近0评分整体分布区间也越大,参评人数(热度)越多的电影,高评分聚集更明显。

4.4年份、时长、评分对热度的影响

# 设计参数、绘制子图合集
fig=plt.figure(figsize=(10,15))

plt.subplot(311)
plt.plot(train_data['Year'],train_data['Votes'],'o', color="#31CECE")
plt.title('年份与热度关系的散点图')
plt.xlabel('年份')
plt.ylabel('参评人数')
plt.subplot(312)
plt.plot(train_data['Duration'],train_data['Votes'],'o', color="#31CECE")
plt.title('时长与热度关系的散点图')
plt.xlabel('时长')
plt.ylabel('参评人数')
plt.subplot(313)
plt.plot(train_data['Rating'],train_data['Votes'],'o', color="#31CECE")
plt.title('评分与热度关系的散点图')
plt.xlabel('评分')
plt.ylabel('参评人数')
Text(0, 0.5, '参评人数')

在这里插入图片描述

  • 随着年份的增长,参评人数(热度)有一定的上升趋势。
  • 时长与评分不具备明显关系。
  • 在4-8的评分区间,参评人数(热度)有增长的趋势。
  • 但是,电影在某区间数目占比大,也会导致上述结果。

4.5不同类型电影的评分、热度分布

# 设计参数
plt.figure(figsize=(12, 8))
# 新建df,区分Genre各类后合并
df = train_data['Genre'].str.split(', ',expand=True)
df.columns = ['Genre1','Genre2','Genre3']
train_data = train_data.join(df)

# 31CECE 青色
# FF6347 橘色
# FFD700 黄色

# 绘制子图合集
plt.subplot(221)
plt.plot(train_data['Votes'][train_data['Genre1'] == 'Drama'],train_data['Rating'][train_data['Genre1'] == 'Drama'],'o', color="#31CECE")
plt.plot(train_data['Votes'][train_data['Genre2'] == 'Drama'],train_data['Rating'][train_data['Genre2'] == 'Drama'],'o', color="#FF6347")
plt.plot(train_data['Votes'][train_data['Genre3'] == 'Drama'],train_data['Rating'][train_data['Genre3'] == 'Drama'],'o', color="#FFD700")
plt.title('剧情片的评分、热度分布')

plt.subplot(222)
plt.plot(train_data['Votes'][train_data['Genre1'] == 'Action'],train_data['Rating'][train_data['Genre1'] == 'Action'],'o', color="#31CECE")
plt.plot(train_data['Votes'][train_data['Genre2'] == 'Action'],train_data['Rating'][train_data['Genre2'] == 'Action'],'o', color="#FF6347")
plt.plot(train_data['Votes'][train_data['Genre3'] == 'Action'],train_data['Rating'][train_data['Genre3'] == 'Action'],'o', color="#FFD700")
plt.title('动作片的评分、热度分布')

plt.subplot(223)
plt.plot(train_data['Votes'][train_data['Genre1'] == 'Romance'],train_data['Rating'][train_data['Genre1'] == 'Romance'],'o', color="#31CECE")
plt.plot(train_data['Votes'][train_data['Genre2'] == 'Romance'],train_data['Rating'][train_data['Genre2'] == 'Romance'],'o', color="#FF6347")
plt.plot(train_data['Votes'][train_data['Genre3'] == 'Romance'],train_data['Rating'][train_data['Genre3'] == 'Romance'],'o', color="#FFD700")
plt.title('爱情片的评分、热度分布')

plt.subplot(224)
plt.plot(train_data['Votes'][train_data['Genre1'] == 'Comedy'],train_data['Rating'][train_data['Genre1'] == 'Comedy'],'o', color="#31CECE")
plt.plot(train_data['Votes'][train_data['Genre2'] == 'Comedy'],train_data['Rating'][train_data['Genre2'] == 'Comedy'],'o', color="#FF6347")
plt.plot(train_data['Votes'][train_data['Genre3'] == 'Comedy'],train_data['Rating'][train_data['Genre3'] == 'Comedy'],'o', color="#FFD700")
plt.title('喜剧片的评分、热度分布')

plt.show()

在这里插入图片描述

  • 考虑到需要保证可视化数据显示质量,筛选出现频次多的四个类型电影,代表性突出分布。
  • 无论哪种电影类型,均有随着参评人数(热度)增加,整体评分上升的趋势。
  • 上图种不同颜色代表作为不同级别(第几顺位标签)标签时的分布。
  • 剧情片作为一二三顺位标签情况都较为普遍。
  • 动作片、喜剧片作为第一顺位标签远大于第二三顺位。
  • 爱情片作为第二三顺位标签远大于第一顺位。
  • 整体而言剧情片高评分趋势较明显,热度难从上发现规律。

第四节总结

  • 评分Rating的相关性分析中,年份Year于其具有一定的负相关。参评人数(热度)Votes的相关性分析中,年份Year、时长Duration于其具有一定的正相关。
  • 随着年份的增长,评分有一定的下降趋势,越接近2021年评分整体分布区间也越大,越久远的电影,高评分聚集更明显,可见过去的电影整体质量较高,近代的电影门槛降低会导致诸多粗制滥造出现。参评人数(热度)越多的电影,高评分聚集更明显,热度和评分具备一定正比关系,高评分往往会带来正面的粉丝效益收获更多热度。
  • 随着年份的增长,参评人数(热度)有一定的上升趋势。在4-8的评分区间,参评人数(热度)有增长的趋势。但是,由于电影在某区间数目占比大的影响,不具备太大参考价值。
  • 无论哪种电影类型,均有随着参评人数(热度)增加,整体评分上升的趋势,契合上文观点。剧情片作为一二三顺位标签情况都较为普遍,证明上文印度影迷较喜爱剧情片的观点。动作片、喜剧片作为第一顺位标签远大于第二三顺位,爱情片作为第二三顺位标签远大于第一顺位,前者主要作为影片关键要素存在,而爱情片则往往为电影隐性暗线存在发展。
  • 对比于现在发表的类似文章,印度电影的崛起速度堪比本世纪初中国的电影热潮,与之不同的是剧情片等类型的电影更加广泛,但是整体电影质量和欧美、东亚水平差距较大,演员和导演的分布也更加分散,不具备领头羊一样的行业标杆性。

5.近五年的印度电影市场分析

  • 上述相关分析更多是针对市场规律和基本概况进行分析。
  • 相较于其他分析而言,第五节的情况更接近目前的情况,对市场具有只管的分析参考价值。

5.1备份文件的使用与索引重新编排

data_Age = data_Age.drop(data_Age[(data_Age['Year'] < 2017)].index)# 删除非近五年的数据
data_Age.reset_index(drop=True)# 重新排列索引
NameYearDurationGenreRatingVotesDirectorActor 1Actor 2Actor 3
0#Gadhvi (He thought he was Gandhi)2019109Drama7.08Gaurav BakshiRasika DugalVivek GhamandeArvind Jangid
1#Yaaram2019110Comedy, Romance4.435Ovais KhanPrateikIshita RajSiddhant Kapoor
2102 Not Out2018102Comedy, Drama7.46619Umesh ShuklaAmitabh BachchanRishi KapoorVijay Raaz
312 O'Clock2021105Horror, Thriller4.463Ram Gopal VarmaMithun ChakrabortyMakrand DeshpandeDalip Tahil
4127 B2017116Comedy, Horror6.626Seshu KmrMast AliAziz NaserHeena Shaik
.................................
838Yours Truly201884Drama5.9102Sanjoy NagSoni RazdanAahana KumraPankaj Tripathi
839Yug the law of karma202175Action, Crime, Drama7.710Dilip KumarVinod KumarDilip KumarSaurav Bagga
840Zero2018164Comedy, Drama, Romance5.424784Aanand L. RaiShah Rukh KhanAnushka SharmaKatrina Kaif
841Zindagi Tumse2019120Family6.013Tariq BhatSadhana SinghGuddi MarutiRajesh Puri
842Zoo2018100Drama5.778Shlok SharmaShashank AroraPrince DanielShatakshi Gupta

843 rows × 10 columns

5.2近五年印度电影热门类型

# 构建一个新的dataframe,只需要类别和参评人数(热度)这两个特征
Genre_age = pd.DataFrame(columns = ['Genre','Votes'])
# data.iterrows:使用迭代器的方式读取数据,返回数字索引(int)和每一行的数据(series)
for i, row_data in data_Age.iterrows():
    # 使用split将genres分割
    Genres = row_data['Genre'].split(', ')
    n_Genres = len(Genres)
    # 构建一个空字典,用以保存genre和votes的值
    dict_obj = {}
    dict_obj['Votes'] = [row_data['Votes']] * n_Genres
    dict_obj['Genre'] = Genres
    # 将字典转为dataframe类型
    Genre_df = pd.DataFrame(dict_obj)
    # DataFrame的append将genre_df的数据添加进genre_data
    Genre_data = Genre_data.append(Genre_df)
# 按题材统计评分
Genre_Rating = Genre_data.groupby('Genre')['Votes'].mean()
Genre_Rating = Genre_Rating.sort_values(ascending = True)
plt.figure(figsize=(15, 10))
Genre_Rating.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('近五年热门五大类型')
plt.xlabel('电影类型')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

  • 已知印度市场反响可以一定程度上,由电影的参评人数反映(上文已说明论文引据)
  • 参评人数较高和较低的影片类型,也均是整体热度的排名。
  • 印度市场对某类电影的整体青睐程度,在近五年时间内变化不大。
  • 由于近五年电影总书占比总体不超过1/4,所以具备一定的可靠性。

5.3近五年印度电影热门导演

# 定义函数选取大于20部分
def topn(df,n=20):
    if df.shape[0]<n:   #如该分组少于20,返回None 
        return None
    else:
        #对每个组按投票数降序排序,取出前n行的票房,找出'Votes'列,进行求和
        return df.groupby('Director')['Votes'].mean().sort_values(ascending=False)[:20]
#调用函数:按照导演分组,然后对每组数据应用函数topn函数,最终结果去除nan(即除去电影部数少于20的数据)
train_data1 = train_data
train_data1.groupby('Director').apply(topn).dropna()

# 设计参数、绘图
plt.figure(figsize=(15, 10))
d1 = train_data.groupby('Director')['Votes'].mean().sort_values(ascending=False)[:10]
d1.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('近五年热门导演')
plt.xlabel('导演名字')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

  • 已知印度市场反响可以一定程度上,由电影的参评人数反映(上文已说明论文引据)
  • 电影参评人数较多的导演,也均是整体热度最高的排名。
  • Shashank Khaitan等人在目前五年具有较高的指导热度,某种程度上受到市场青睐。

5.4近五年印度电影热门演员

# 构建一个新的dataframe,只需要演员和评分这两个特征
data_Age['Actor'] = data_Age.apply(lambda x:x['Actor 1']+","+x['Actor 2']+","+x['Actor 3'],axis=1)#合并
Actor_data = pd.DataFrame(columns = ['Actor','Rating'])

# 定义函数选取大于20部分
def topn(df,n=20):
    if df.shape[0]<n:   #如该分组少于20,返回None 
        return None
    else:
        #对每个组按投票数降序排序,取出前n行的票房,找出'Votes'列,进行求和
        return df.groupby('Actor')['Votes'].mean().sort_values(ascending=False)[:20]
#调用函数:按照导演分组,然后对每组数据应用函数topn函数,最终结果去除nan(即除去电影部数少于20的数据)
train_data1 = train_data
train_data1.groupby('Actor').apply(topn).dropna()

# 设计参数、绘图
plt.figure(figsize=(15, 10))
d1 = train_data.groupby('Actor 1')['Votes'].mean().sort_values(ascending=False)[:10]
d1.plot.bar(figsize=(12,5), color="#31BEFA")
plt.title('近五年热门演员')
plt.xlabel('演员名字')
plt.ylabel('参评人数')
plt.show()

在这里插入图片描述

  • 已知印度市场反响可以一定程度上,由电影的参评人数反映(上文已说明论文引据)
  • 电影参评人数较多的演员,也均是整体热度最高的排名。
  • Dilip Mestry等人在目前五年具有较高的演艺热度,某种程度上受到市场青睐。

第五节总结

  • 印度市场对某类电影的整体青睐程度,在近五年时间内变化不大,整体影迷审美在大体上不会发生改变,运动片等类型依旧具有很强的话题性,为群众所青睐,而剧情片等具备足够的资源储备量,受导演青睐。
  • 近年Shashank Khaitan等人在目前五年具有较高的指导热度,Shashank Khaitan等人在目前五年具有较高的指导热度,某种程度上受到市场青睐。可见印度市场竞争较为激烈,近五年较为热门的导演和演员与上述总榜有极大出入。当然上述熟人业受到影迷等的广泛关注,近年具备非常强的竞争力。

6.总结

  • 最终结论表明:对于印度电影创作团队而言,在电影拍摄中应注重如何选择合适的电影类型,在目前形势下看来印度的近期电影市场还将会以剧情、爱情为更多的拍摄体裁,而运动、纪录片、音乐等体裁电影可能因门槛较高,导致即便片均热度较高而不会有很多导演选择尝试。其次名导光环、参演明星等的角度来说,近些年的热门导演演员较为集中,Shashank Khaitan等导演具备对目前市场的敏锐洞察和指导能力,而Dilip Mestry等演员在近五年也频繁展现出极高热度,会在流量市场崭露头角。参评人数极度不均的情况下,绝大多数电影仅有一千以下的关注度,而更有Suraj Sharma等爆款演员通过极个别优质电影收获极高热度,突出口碑等因素的重要性。
  • 现今,印度大众审美水平不断提升、观影口味愈发苛刻已经是既定趋势,这就要求电影工作者与时俱进,以更严格的标准去创作和审视一部作品。评分等各项数据表明,各类上世纪的作品相对更高质量,也许相比于旧时代的精打细磨,现今的印度电影更多以数目开开疆扩土,整体质量水平比不上从前,也有某种可能是现今印度影迷更偏向于旧时代画风。从时长的角度可以看出,现今印度电影也呈现出模式化创作的情况,往往会固定一个时间区间,控制着成本去创作,而没有去注重整体质量,恰恰说明如今想要拍摄一部高分的电影,还是需要保证质量的同时适当的增加片长,不用被快餐化的风气所影响。

7.参考文献

  • [1] Persson K . Predicting movie ratings : A comparative study on random forests and support vector machines. 2015.
  • [2]简悦, 汪心瀛, 杨明昕. 基于Python的豆瓣网站数据爬取与分析[J]. 电脑知识与技术:学术版, 2020, 16(32):3.
  • [3]程纯. 基于特征工程方法的电影评分影响因素重要性分析[J]. 现代电影技术, 2020(12):7.
  • [4](Matplotlib 可视化)https://blog.csdn.net/luoluopan/article/details/93689418?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E7%9A%84matplotlib%E6%9C%80%E5%85%A8&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-93689418.pc_search_mgc_flag&spm=1018.2226.3001.4187
  • [5](pyecharts教程)https://www.heywhale.com/mw/project/5eb7958f366f4d002d783d4a
  • [6](TMDB电影分析)https://blog.csdn.net/moyue1002/article/details/80332186
  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值