0


2022-11-28-大数据可视化“可视化国产/进口电影票房榜单”分析,特征维度大于50

可视化国产/进口电影票房榜单



前言

党的十八大以来,国产电影产业与事业快速发展,创作水平不断提高,题材类型丰富多元,受众口碑不断提升,在市场竞争中表现愈发突出,已成为广大人民群众首选的文化消费形式。国产电影的高质量发展,有着多重的表现。
  首先是主旋律电影的复苏。既往,主旋律似乎和院线电影难以相容,取得商业成功的主旋律电影少之又少,而一些商业电影的价值取向也似乎与主旋律貌合神离。近年来,随着国内电影工业水平不断提升,电影作品对主旋律的表达方式也更为细腻深入,观众对主旋律影片的认可度逐渐提高。诸如2016年的《湄公河行动》、2018年的《红海行动》、2019年的《我和我的祖国》、2020年的《八佰》《我和我的家乡》、2021年的《长津湖》《中国医生》等影片,充分吸纳了类型片的叙事手段,凭借其精良的制作与深厚的情怀,在票房、口碑上实现了双丰收,《长津湖》更是打破了影史票房纪录,创造了中国电影的奇迹。
  其次是商业电影的繁盛。过去的十年是中国电影扩展市场,开疆拓土的十年。2012年以来,电影市场保持着高速增长的态势,2012年全国银幕数有13118块,到2021年达到了82248块,基本覆盖了全国的城市与城镇;2019年全国总票房达到了642亿元,其后由于疫情影响票房总量有一定程度下降,但也超越北美成为世界第一。从2012年《人再囧途之泰囧》拿下12亿票房成为首部超十亿票房国产电影并获得当年票房冠军之后,国产电影开始频频打破票房纪录,在好莱坞电影的冲击下茁壮成长,让引进片称霸票房榜的时代成为了过去式。2015年,《捉妖记》取得24亿票房;2016年,《美人鱼》取得33亿票房;2017年,《战狼2》取得56亿票房;再到《长津湖》的57亿票房,国产电影票房冠军几经易手,人们对国产电影的信心也与日俱增。在此期间,也出现了《心花路放》《夏洛特烦恼》《流浪地球》《你好,李焕英》《唐人街探案》系列等商业表现优秀的电影作品,国产电影的市场一路向好。
为了进一步将国产电影和进口电影的票房进行一个更好地对比,此次选题用大数据可视化的方式直观的将数据展示出来,可视化主要使用 pyecharts >= 1.9。


数据分析

数据集概况

数据集分为四个文件,分别是电影票房表现概览、票房榜、电影票房三十日时段趋势数据和电影票房三十日时段详情。

数据维度:

电影票房表现概览维度31,数据量100:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
票房榜维度8,数据量150在这里插入图片描述
电影票房三十日时段趋势数据维度16,数据量4620
在这里插入图片描述
电影票房三十日时段详情数据维度15,数据量3392
在这里插入图片描述


数据可视化过程

引包

import numpy as np
import pandas as pd
from collections import Counter
from pyecharts import options as opts
from pyecharts.charts import*from pyecharts.commons.utils import JsCode
from pyecharts.globalsimport ThemeType
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
import datetime

票房榜数据概览

data = pd.read_excel(r"/home/mw/input/movie7110/票房榜.xlsx")
data.head(1)

在这里插入图片描述票房榜数据字段处理

data["年份"]= data["上映日期"].apply(lambda x:str(x.split("-")[0]))
data["票房"]= data["票房"].apply(lambda x:round(x/100000000,2))
data = data.rename(columns={"票房":"票房/亿"})
data.head(1)

在这里插入图片描述电影票房表现数据概览

data_haed = pd.read_excel(r"/home/mw/input/movie7110/电影票房表现概览.xlsx")
data_haed.head(1)

在这里插入图片描述电影票房数据字段处理

data_haed_all = data.merge(data_haed, how="left", on=['EnMovieID'])
data_haed_all["首映票房"]= data_haed_all["首映票房"].apply(lambda x:round(x/100000000,2))
data_haed_all["首周票房"]= data_haed_all["首周票房"].apply(lambda x:round(x/100000000,2))
data_haed_all["首周末票房"]= data_haed_all["首周末票房"].apply(lambda x:round(x/100000000,2))
data_haed_all = data_haed_all.rename(columns={"电影_x":"电影","首映票房":"首映票房/亿","首周票房":"首周票房/亿","首周末票房":"首周末票房/亿"})
data_haed_all.info()
data_haed_all = data_haed_all.drop(labels=["EnMovieID","DBOMovieID","EFMTMovieID","电影_y","GenreMainID"],axis=1)
colums =list(data_haed_all)print(colums)
data_all = data_haed_all[data_haed_all["榜单类别"]=="全部"]
data_china = data_haed_all[data_haed_all["榜单类别"]=="国产"]
data_foreign = data_haed_all[data_haed_all["榜单类别"]=="进口"]

data_cat =[data_all, data_china, data_foreign]
cat =["全部","国产","进口"]

在这里插入图片描述在这里插入图片描述榜单类别 - 国产/进口 - TOP50

tab = Tab()

headers = colums

rows_china = data_china[colums].apply(lambda x:list(x), axis=1).values.tolist()

rows_foreign = data_foreign[colums].apply(lambda x:list(x), axis=1).values.tolist()

attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示

table_china = Table()
attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示
table_china.add(headers, rows_china, attributes)
table_china.set_global_opts(
    title_opts=ComponentTitleOpts(title=f"榜单类别 - 国产 - TOP50", subtitle=""))

table_foreign = Table()
attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示
table_foreign.add(headers, rows_foreign, attributes)
table_foreign.set_global_opts(
    title_opts=ComponentTitleOpts(title=f"榜单类别 - 进口 - TOP50", subtitle=""))

table = Table()
table.add([],[], attributes)
table.set_global_opts(
    title_opts=ComponentTitleOpts(title="键盘左右键移动视图查看", subtitle=""))

tab.add(table_china,"国产")
tab.add(table_foreign,"进口")
tab.add(table,"点击预览")

tab.render_notebook()

电影票房榜单 - TOP50

line_max =max(max(data_all['场均人次'].tolist()),max(data_all['平均票价'].tolist()))

bar_max =max(data_all['票房/亿'].tolist())

bar_all =(
    Bar(init_opts=opts.InitOpts(width="1000px", height="600px",theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_all['电影'].tolist())# x轴.add_yaxis(
        series_name="票房/亿",# 柱形图系列名称
        y_axis=data_all['票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False, position='top', formatter="{c}/亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#ee3f4d'
                }, {
                    offset: 1,
                    color: '#eea2a4'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':8,'shadowColor':'rgba(0, 0, 0, 0.4)','shadowOffsetX':10,'shadowOffsetY':10,'borderColor':'rgb(220,220,220)','borderWidth':1}}).extend_axis(# 设置次坐标轴
        yaxis=opts.AxisOpts(
            name="",# 次坐标轴名称
            type_="value",# 次坐标手类型
            min_=-2* line_max,# 最小值
            max_=2* line_max,# 最大值
            is_show=False,# 是否显示
            axisline_opts=opts.AxisLineOpts(is_show=False,# y轴线不显示
                                            linestyle_opts=opts.LineStyleOpts(color='#2486b9')),# 设置线颜色, 字体颜色也变
            axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线不显示
            axislabel_opts=opts.LabelOpts(formatter="{value}"),# 次坐标轴数据显示格式)).set_global_opts(title_opts=opts.TitleOpts(title="电影票房 - top50",# 标题
                                                   title_textstyle_opts=opts.TextStyleOpts(font_size=20),# 主标题字体大小
                                                   subtitle="国产/进口",# 次坐标轴
                                                   pos_left='center',
                                                   pos_top='0.8%'),# 标题位置
                         legend_opts=opts.LegendOpts(is_show=True,
                                                     pos_top=50,
                                                     orient="horizontal",),# 不显示图例
                         tooltip_opts=opts.TooltipOpts(
                             trigger="axis",
                             axis_pointer_type="shadow"),# 提示框
                         xaxis_opts=opts.AxisOpts(name='',
                                                  type_='category',
                                                  axislabel_opts=opts.LabelOpts(rotate=360),),
                         yaxis_opts=opts.AxisOpts(type_="value",# y轴类型
                                                  max_=bar_max,
                                                  name='票房/亿',# y轴名称
                                                  name_location='middle',# y轴名称位置
                                                  name_gap=70,# y轴名称距离轴线距离
                                                  axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
                                                  axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
                                                  splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
                                                  axislabel_opts=opts.LabelOpts(formatter="{value}"),),# 轴标签显示方式
                         datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False)))

line_all =(
    Line().add_xaxis(xaxis_data=data_all['电影'].tolist())# x轴.add_yaxis(
        series_name="场均人次",# 名称
        yaxis_index=1,# 次坐标
        is_smooth=True,# 线条样式  , 是否设置成圆滑曲线
        y_axis=data_all['场均人次'].tolist(),
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                        offset: 0,
                                        color: '#2486b9'
                                    }, {
                                        offset: 1,
                                        color: '#FF00FF'
                                    }], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
        linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#2486b9'}},
        label_opts=opts.LabelOpts(is_show=False),# 显示数据标签).add_yaxis(
        series_name="平均票价",# 名称
        yaxis_index=1,# 次坐标
        is_smooth=True,# 线条样式  , 是否设置成圆滑曲线
        y_axis=data_all['平均票价'].tolist(),
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                        offset: 0,
                                        color: '#1a6840'
                                    }, {
                                        offset: 1,
                                        color: '#66c18c'
                                    }], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
        linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#66c18c'}},
        label_opts=opts.LabelOpts(is_show=False),# 显示数据标签))
bar_all.overlap(line_all)# 图表组合

bar_all.render_notebook()

在这里插入图片描述在这里插入图片描述 电影票房榜单 - 国产/进口 - TOP50


tab_rank = Tab()for i inrange(1,3):
    line_max =max(max(data_cat[i]['场均人次'].tolist()),max(data_cat[i]['平均票价'].tolist()))

    bar_max =max(data_cat[i]['票房/亿'].tolist())

    bar1 =(
        Bar(init_opts=opts.InitOpts(width="1000px", height="600px",theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_cat[i]['电影'].tolist())# x轴.add_yaxis(
            series_name="票房/亿",# 柱形图系列名称
            y_axis=data_cat[i]['票房/亿'].tolist(),# 数据
            label_opts=opts.LabelOpts(is_show=False, position='top', formatter="{c}/亿"),# 显示数据标签
            itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                        offset: 0,
                        color: '#ee3f4d'
                    }, {
                        offset: 1,
                        color: '#eea2a4'
                    }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],"shadowColor":'rgb(0, 160, 221)',}}).extend_axis(# 设置次坐标轴
            yaxis=opts.AxisOpts(
                name="",# 次坐标轴名称
                type_="value",# 次坐标手类型
                min_=-2* line_max,# 最小值
                max_=2* line_max,# 最大值
                is_show=False,# 是否显示
                axisline_opts=opts.AxisLineOpts(is_show=False,# y轴线不显示
                                                linestyle_opts=opts.LineStyleOpts(color='#2486b9')),# 设置线颜色, 字体颜色也变
                axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线不显示
                axislabel_opts=opts.LabelOpts(formatter="{value}"),# 次坐标轴数据显示格式)).set_global_opts(title_opts=opts.TitleOpts(title=f"{cat[i]}电影票房 - top50",# 标题
                                                    title_textstyle_opts=opts.TextStyleOpts(font_size=20),# 主标题字体大小
                                                    subtitle="",# 次坐标轴
                                                    pos_left='center',
                                                    pos_top='0.8%'),# 标题位置
                            legend_opts=opts.LegendOpts(is_show=True,
                                                        pos_top=35,
                                                        orient="horizontal",),# 不显示图例
                            tooltip_opts=opts.TooltipOpts(
                                trigger="axis",
                                axis_pointer_type="shadow"),# 提示框
                            xaxis_opts=opts.AxisOpts(name='',
                                                    type_='category',
                                                    axislabel_opts=opts.LabelOpts(rotate=360),),
                            yaxis_opts=opts.AxisOpts(type_="value",# y轴类型
                                                    max_=bar_max,
                                                    name='票房/亿',# y轴名称
                                                    name_location='middle',# y轴名称位置
                                                    name_gap=70,# y轴名称距离轴线距离
                                                    axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
                                                    axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
                                                    splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
                                                    axislabel_opts=opts.LabelOpts(formatter="{value}"),),# 轴标签显示方式
                            datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False)))

    line1 =(
        Line().add_xaxis(xaxis_data=data_cat[i]['电影'].tolist())# x轴.add_yaxis(
            series_name="场均人次",# 名称
            yaxis_index=1,# 次坐标
            is_smooth=True,# 线条样式  , 是否设置成圆滑曲线
            y_axis=data_cat[i]['场均人次'].tolist(),
            itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                            offset: 0,
                                            color: '#2486b9'
                                        }, {
                                            offset: 1,
                                            color: '#FF00FF'
                                        }], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
            linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#2486b9'}},
            label_opts=opts.LabelOpts(is_show=False),# 显示数据标签).add_yaxis(
            series_name="平均票价",# 名称
            yaxis_index=1,# 次坐标
            is_smooth=True,# 线条样式  , 是否设置成圆滑曲线
            y_axis=data_cat[i]['平均票价'].tolist(),
            itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                            offset: 0,
                                            color: '#1a6840'
                                        }, {
                                            offset: 1,
                                            color: '#66c18c'
                                        }], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
            linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#66c18c'}},
            label_opts=opts.LabelOpts(is_show=False),# 显示数据标签))
    bar1.overlap(line1)# 图表组合
    tab_rank.add(bar1, cat[i])
tab_rank.add(table,"点击预览")
tab_rank.render_notebook()

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

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

计算上榜电影标签汇总

tags_china =[]
tag_china = data_china['作品类型'].tolist()for t in tag_china:try:for i in t.split('/'):
            tags_china.append(i)except:continue
 
tags_china_pair =[]for key, value in Counter(tags_china).items():
    tags_china_pair.append([key, value])print(tags_china_pair)
tags_foreign =[]
tag_foreign = data_foreign['作品类型'].tolist()for t in tag_foreign:try:for i in t.split('/'):
            tags_foreign.append(i)except:continue
 
tags_foreign_pair =[]for key, value in Counter(tags_foreign).items():
    tags_foreign_pair.append([key, value])

国产-进口上榜 - TOP50 - 详情分布

pie =(
    Pie(init_opts=opts.InitOpts(width="1000px", height="900px", theme='light')).add('国产年份',[list(z)for z inzip(data_china_year.index.tolist(),
                                       data_china_year.values.tolist())],
             radius=['55','100'],
             center=['33%','30%']).add('进口',[list(z)for z inzip(data_foreigna_year.index.tolist(),
                                       data_foreigna_year.values.tolist())],
             radius=['55','100'],
             center=['75%','30%']).add('国产电影标签', tags_china_pair,
             radius=['55','100'],
             center=['33%','80%']).add('进口电影标签', tags_foreign_pair,
             radius=['55','100'],
             center=['75%','80%']).set_series_opts(
            label_opts=opts.LabelOpts(formatter="{b}: {c}", font_size=14),
            tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"),
            itemstyle_opts={"normal":{'shadowBlur':2,"borderColor":'#87CEFA',"borderWidth":3,'shadowColor':'#87CEFA','opacity':1}}).set_global_opts(
            legend_opts=opts.LegendOpts(is_show=False, pos_top='5%'),
            title_opts=[dict(
                    text=f'国产-进口上榜 - TOP50 - 详情分布',
                    left='center',
                    top='1%',
                    textStyle=dict(
                        color='#000',
                        fontSize=24)),dict(
                    text=f'国产分布',
                    left='28%',
                    top='10%',
                    textStyle=dict(
                        color='#999999',
                        fontSize=18)),dict(
                    text=f'进口分布',
                    left='70%',
                    top='10%',
                    textStyle=dict(
                        color='#999999',
                        fontSize=18)),dict(
                    text=f'国产电影标签',
                    left='28%',
                    top='55%',
                    textStyle=dict(
                        color='#999999',
                        fontSize=18)),dict(
                    text=f'进口电影标签',
                    left='70%',
                    top='55%',
                    textStyle=dict(
                        color='#999999',
                        fontSize=18)),],))
pie.render_notebook()

在这里插入图片描述在这里插入图片描述
国产电影上映首周票房表现 -Top50

bar_china =(
    Bar(init_opts=opts.InitOpts(width="1200px", height="600px", theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_china['电影'].tolist())# x轴.add_yaxis(
        series_name="首映票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_china['首映票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#126bae'
                }, {
                    offset: 1,
                    color: '#619ac3'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
        series_name="首周票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_china['首周票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#ea7293'
                }, {
                    offset: 1,
                    color: '#ec8aa4'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
        series_name="首周末票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_china['首周末票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#9eccab'
                }, {
                    offset: 1,
                    color: '#a4cab6'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).reversal_axis()# .set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="国产电影上映首周票房表现 -Top50",# 标题
                                               title_textstyle_opts=opts.TextStyleOpts(font_size=20),#主标题字体大小
                                               subtitle="",# 次坐标轴
                                               pos_left='center'),# 标题位置
                    legend_opts=opts.LegendOpts(
                                             is_show=True,
                                             pos_top=30,
                                             orient="horizontal"),# 不显示图例
                    tooltip_opts=opts.TooltipOpts(
                                             trigger="axis",
                                             axis_pointer_type="shadow"),# 提示框
                    yaxis_opts=opts.AxisOpts(name='',
                                            type_='category',#    axislabel_opts=opts.LabelOpts(rotate=30),),
                     xaxis_opts=opts.AxisOpts(type_="value",# y轴类型#   max_=5000000,
                                              name='',# y轴名称
                                              name_location='middle',# y轴名称位置
                                              name_gap=70,# y轴名称距离轴线距离
                                              axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
                                              axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
                                              splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
                                              axislabel_opts=opts.LabelOpts(formatter="{value}")),# 轴标签显示方式
                     datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False,
                                                    orient="vertical")))
bar_china.render_notebook()

在这里插入图片描述
进口电影上映首周票房表现 -Top50


bar_foreign =(
    Bar(init_opts=opts.InitOpts(width="1200px", height="600px", theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_foreign['电影'].tolist())# x轴.add_yaxis(
        series_name="首映票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_foreign['首映票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#126bae'
                }, {
                    offset: 1,
                    color: '#619ac3'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
        series_name="首周票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_foreign['首周票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#ea7293'
                }, {
                    offset: 1,
                    color: '#ec8aa4'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
        series_name="首周末票房/亿",#柱形图系列名称
        stack='stack1',
        y_axis=data_foreign['首周末票房/亿'].tolist(),# 数据
        label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
        itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: '#9eccab'
                }, {
                    offset: 1,
                    color: '#a4cab6'
                }], false)""",),"opacity":0.8,#                 "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).reversal_axis()# .set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="进口电影上映首周票房表现 -Top50",# 标题
                                               title_textstyle_opts=opts.TextStyleOpts(font_size=20),#主标题字体大小
                                               subtitle="",# 次坐标轴
                                               pos_left='center'),# 标题位置
                    legend_opts=opts.LegendOpts(
                                             is_show=True,
                                             pos_top=30,
                                             orient="horizontal"),# 不显示图例
                    tooltip_opts=opts.TooltipOpts(
                                             trigger="axis",
                                             axis_pointer_type="shadow"),# 提示框
                    yaxis_opts=opts.AxisOpts(name='',
                                            type_='category',#    axislabel_opts=opts.LabelOpts(rotate=30),),
                     xaxis_opts=opts.AxisOpts(type_="value",# y轴类型#   max_=5000000,
                                              name='',# y轴名称
                                              name_location='middle',# y轴名称位置
                                              name_gap=70,# y轴名称距离轴线距离
                                              axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
                                              axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
                                              splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
                                              axislabel_opts=opts.LabelOpts(formatter="{value}")),# 轴标签显示方式
                     datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False,
                                                    orient="vertical")))
bar_foreign.render_notebook()

在这里插入图片描述电影票房三十日时段详情

data_movie_time = pd.read_excel(r"/home/mw/input/movie7110/电影票房三十日时段详情.xlsx")
data_movie_time["当前票房"]= data_movie_time["当前票房"].apply(lambda x:round(x/10000000,2))
data_movie_time["当前场次"]= data_movie_time["当前场次"].apply(lambda x:round(x/10000,2))
data_movie_time["当前人次"]= data_movie_time["当前人次"].apply(lambda x:round(x/1000000,2))
data_movie_time = data_movie_time.rename(columns={"当前票房":"当前票房/千万","当前场次":"当前场次/万","当前人次":"当前人次/百万"})
data_movie_time.head(2)
movie_chang = data_movie_time[data_movie_time["电影"]=="长津湖"]

在这里插入图片描述长津湖上映后三十日电影票房表现

line = Line(
    init_opts=opts.InitOpts(
        theme='light',
        width='1000px',
        height='600px'))

line.add_xaxis(
    movie_chang["日期"].tolist())

colums =["当前票房/千万","当前人次/百万","当前场次/万"]for i inrange(3):

    line.add_yaxis(
        colums[i],
        movie_chang[colums[i]],
        is_symbol_show=False,
        is_smooth=True,
        is_selected=True,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
        z=100,
        linestyle_opts={"normal":{"shadowColor":'rgba(0, 0, 0, .5)',"shadowBlur":0,"shadowOffsetY":1,"shadowOffsetX":1,},},)

line.set_global_opts(
    xaxis_opts=opts.AxisOpts(
        boundary_gap=False,
        axislabel_opts=opts.LabelOpts(margin=30, color="black"),
        axistick_opts=opts.AxisTickOpts(is_show=False),),
    yaxis_opts=opts.AxisOpts(
        name='',
        axisline_opts=opts.AxisLineOpts(is_show=True),
        axistick_opts=opts.AxisTickOpts(is_show=False),
        splitline_opts=opts.SplitLineOpts(
            is_show=True,
            linestyle_opts=opts.LineStyleOpts(color='#483D8B'))),
    tooltip_opts=opts.TooltipOpts(
        is_show=True, trigger='axis', axis_pointer_type='cross'),
    title_opts=opts.TitleOpts(title="长津湖上映后三十日电影票房表现",# 标题
                            title_textstyle_opts=opts.TextStyleOpts(font_size=18),#主标题字体大小
                            subtitle="2021-09-30~2021-10-30",# 次坐标轴
                            pos_left='center'),# 标题位置
    legend_opts=opts.LegendOpts(
                                is_show=True,
                                pos_top=45,
                                orient="horizontal"),# 不显示图例

    graphic_opts=[
                opts.GraphicGroup(
                            graphic_item=opts.GraphicItem(id_='1',left="center", top="center", z=-1),
                            children=[
                                    opts.GraphicImage(graphic_item=opts.GraphicItem(id_="logo",
                                                                                    left='center',
                                                                                    z=-1),
                                                      graphic_imagestyle_opts=opts.GraphicImageStyleOpts(
                                        image="https://img2.baidu.com/it/u=3979355417,3562690433&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=388",
                                        width=1000,
                                        height=600,
                                        opacity=0.5,))])])

line.set_series_opts(
   
    markarea_opts=opts.MarkAreaOpts(
        is_silent=True,
        label_opts=opts.LabelOpts(position='bottom', color='#000000'),
        itemstyle_opts=opts.ItemStyleOpts(color='#1E90FF', opacity=0.2),
        data=[
            opts.MarkAreaItem(name="正式上映\n国庆档", x=("2021-09-30","2021-10-01")),
            opts.MarkAreaItem(name="高峰期", x=("2021-10-05","2021-10-07")),
            opts.MarkAreaItem(name="第三周\n小高峰", x=("2021-10-15","2021-10-17")),]),)
line.set_colors(colors=['#80FFA5','#00DDFF','#FF0087'])
line.render_notebook()

在这里插入图片描述长津湖电影评分

chart = Gauge()
chart.add("",[("猫眼评分",9.5)],
    max_=10,
    start_angle=200,
    end_angle=-20,
    pointer=opts.GaugePointerOpts(
        is_show=True),
    itemstyle_opts=opts.ItemStyleOpts(
        color='rgba(50, 163, 107, 0.3)'),
    detail_label_opts=opts.GaugeDetailOpts(
        border_radius=8,
        offset_center=[0,'15%'],
        font_size=50,
        font_weight='bolder',
        formatter='{value}',),
    axisline_opts=opts.AxisLineOpts(
        is_show=True,
        linestyle_opts=opts.LineStyleOpts(
            width=30,
            color=[(0.8,"#67e0e3"),(0.98,"#D4587A"),(1,"#67e0e3")])),
    title_label_opts=opts.GaugeTitleOpts(
        color='rgba(217, 48, 118, 0.9)',
        offset_center=[0,'-35%'],
        font_size=20,
        font_weight='bolder',))

chart.set_global_opts(
    title_opts=opts.TitleOpts(
        title="长津湖",
        pos_right='0%',
        pos_bottom='30%',
        title_textstyle_opts=opts.TextStyleOpts(
            color='rgba(217, 48, 118, 0.1)',
            font_size=80)),)
chart.render_notebook()
chart_1 = Gauge(# init_opts=opts.InitOpts(#     width='500px',#     height='500px'# ))
chart_1.add("",[("豆瓣评分",7.4)],
    max_=10,
    start_angle=200,
    end_angle=-20,
    pointer=opts.GaugePointerOpts(
        is_show=True),
    itemstyle_opts=opts.ItemStyleOpts(
        color='rgba(50, 163, 107, 0.3)'),
    detail_label_opts=opts.GaugeDetailOpts(
        border_radius=8,
        offset_center=[0,'15%'],
        font_size=50,
        font_weight='bolder',
        formatter='{value}',),
    axisline_opts=opts.AxisLineOpts(
        is_show=True,
        linestyle_opts=opts.LineStyleOpts(
            width=30,
            color=[(0.7,"#37a2da"),(0.8,"#D4587A"),(1,"#37a2da")])),
    title_label_opts=opts.GaugeTitleOpts(
        color='rgba(217, 48, 118, 0.9)',
        offset_center=[0,'-35%'],
        font_size=20,
        font_weight='bolder',))
 
chart_1.set_global_opts(
    title_opts=opts.TitleOpts(
        title="长津湖",
        pos_right='0%',
        pos_bottom='30%',
        title_textstyle_opts=opts.TextStyleOpts(
            color='rgba(217, 48, 118, 0.1)',
            font_size=80)),)
chart_1.render_notebook()

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


分析总结

①在全部的榜单类别top50中排在前面的都是进五年新出的电影,其中第一名是2021年上映的长津湖,说明电影行业的发展是非常快速的,推陈出新的要求是广大影迷朋友们所追求的。在这里插入图片描述

②排在榜单前六的都是国产电影,说明大家对国产电影的喜爱程度非常之高,其中排在前二的是不可多得的主旋律好电影,非常受大家的追捧。
③在结合票房分析的同时也要结合每一部电影它的组成,可以看到战狼的票价是排在前几的电影中最低的,同时也是场均人次最高的,说明战狼这部电影的电影票房是实打实的非常有质量的票房数据,非常说明战狼这部电影的影响力和受大家喜爱程度。在这里插入图片描述

④在进口的电影中,可以非常明显的看到几个场均人次异常突出的几部电影,如阿凡达,变形金刚三和泰坦尼克号,可以看出来这三部电影的上座率非常高,说明质量非常的好,不愧是经典中的经典。在这里插入图片描述在这里插入图片描述

在这里插入图片描述

⑤在国产电影和进口电影的对拼中可以看到在2018年之前进口电影的市场占有率是高于国产电影的,到2018年国产电影成长到足够抗衡进口电影,如今2021年国产电影更是已经碾压进口电影,占领大部分中国市场。在这里插入图片描述

⑥可以看到国产电影和进口电影都有一个经久不衰的主题,那就是动作篇,可以想到动作片是非常受全世界影迷的喜爱的,其中最明显的差距是国产电影中的科幻片很少,仍需要不断地发展才能满足更多影迷,不同影迷的需要。在这里插入图片描述

⑦在不同的平台上长津湖的评分是不同的,高也好低也好,不同的平台的用户的口味是不同的,这就是电影的魅力所在,让不同的人体验到不同的感受。

在这里插入图片描述
总结

只要是好的电影,现今的观众都会予以支持。
创作者在生产创作阶段就充分考虑目标受众和目标受众的需求。具有强情节、强情绪、强话题等核心竞争力的影片,哪怕前期热度不具优势,映后也会凭借优质的内容不断发酵,激发二轮观影动机;对于能够满足市场刚需的内容,像动作、喜剧、悬疑犯罪、亲子动画等类型片,也是能够持续号召目标受众观影的常备题材;基于优质的类型片持续运作、打造具有号召力的IP或系列电影,则能将观影动机前置;通过强化电影的社交属性,比如通过打造仪式感来附加观众额外的观影动机,甚至能够为市场培育出新的档期。
总而言之,观众并非不爱看电影了,只是观众更加倾向选择好电影,只要是内容足够优秀,在哪里都是档期。
挑战就是新的起点。目前,8万块银幕已经遍布中国的大城小镇,不断提升的观影环境,日益丰富的电影传播渠道和购票的便利性等,都是中国电影高质量发展的重要保障。“电影是综合性艺术,与国家的综合实力联系紧密。依托发达的经济、繁荣的文化、先进的科技,中国电影理应进入品质年代,我们有理由相信中国电影未来可期。”中国电影家协会副主席任仲伦说。​​​​


本文转载自: https://blog.csdn.net/nalidour/article/details/128088911
版权归原作者 汤姆z 所有, 如有侵权,请联系我们删除。

“2022-11-28-大数据可视化“可视化国产/进口电影票房榜单”分析,特征维度大于50”的评论:

还没有评论