万条票房数据看2019春节档各地影院表现(附源码)
点击上方 蓝色文字,选择置顶或星标
第一时间关注 Python 技术干货!
阅读文本大概需要 5 分钟。
今年春节档全国共有8部影片上映,对于影片的对比分析已经非常多,孰优孰劣,每个人心里都有一杆秤,不再赘述。本文着重分析影片票房的地域差别,爬取了年后两周各地万余家影院的票房数据,一起来看看各地影院今年春节档表现如何,非官方统计,数据一定不准确,看看就好。
分影院的票房数据来自中国票房网:
http://www.cbooo.cn/cinemaday
网站提供日票房排行榜的前 100 名和周票房的前一万余名,本文爬取包含更多样本的周票房数据,取年后两周的数据。
最终爬到的数据样式如下,数据从左往右依次为影院名称,当周票房、单荧幕票房、场均人次、单日单厅票房、单日单厅场次 6 个变量。
使用 Python 获取数据,对于爬取过程不感兴趣的可以直接看下部分,需要数据/代码的请在后台回复“票房”。
在数据页面按 F12 打开开发者工具,选择 NetWork,XHR,刷新页面后,依次点 1,2,3,4 页,接收到了一堆文件。
右键任意打开一个,显示如下(如果不是这种格式,说明你选错了)
是我们需要的数据,对比前后的变量关系,得到每个变量的含义。
再分析网址,从前面的截图能看出来,pindex 后面跟的是页码,对页码进行循环就可以爬到所有的数据。dt = 1042 看不出来什么意思,但改变日期范围重复上面的操作时,看到此时 dt 变成了1041,说明 dt 后面的值对应不同的日期范围。
我们的目标是爬取 0204-0210,0211-0217 两周的数据,获取对应的 dt 分别是 1040 和 1041,最终代码如下:
# -*- coding: utf-8 -*-"""Created on Fri Oct 19 18:50:03 2018
"""import urllibimport requestsfrom fake_useragent import UserAgentimport jsonimport pandas as pdimport timeimport datetime
# 发送get请求comment_api = 'http://www.cbooo.cn/BoxOffice/getCBW?pIndex={}&dt={}'"""cinemaName:影院名称amount:当周票房avgPS:场均人次avgScreen:单荧幕票房screen_yield:单日单厅票房scenes_time:单日单厅场次"""
headers = { "User-Agent": UserAgent(verify_ssl=False).random}
#response_comment = requests.get(comment_api.format(1,1040),headers = headers)#json_comment = response_comment.text#json_comment = json.loads(json_comment)col = ['cinemaName','amount','avgPS','avgScreen','scenes_time','screen_yield']
dataall = pd.DataFrame()
num = 1035for i in range(1,num+1):
response_comment = requests.get(comment_api.format(i,1041),headers = headers) json_comment = response_comment.text json_comment = json.loads(json_comment)
n = len(json_comment['data1']) datas = pd.DataFrame(index = range(n),columns = col) for j in range(n): datas.loc[j,'cinemaName'] = json_comment['data1'][j]['cinemaName'] datas.loc[j,'amount'] = json_comment['data1'][j]['amount'] datas.loc[j,'avgPS'] = json_comment['data1'][j]['avgPS'] datas.loc[j,'avgScreen'] = json_comment['data1'][j]['avgScreen'] datas.loc[j,'scenes_time'] = json_comment['data1'][j]['scenes_time'] datas.loc[j,'screen_yield'] = json_comment['data1'][j]['screen_yield']
dataall = pd.concat([dataall,datas],axis = 0) print('已完成 {}% !'.format(round(i/num*100,2))) time.sleep(0.5)
dataall = dataall.reset_index()
得到的两周数据里,第一周包含 11295 个样本,第二周包含 11375 个样本,将两周数据按影院合并后,最终得到 10193 个样本。
data1 = data1.drop_duplicates()data2 = data2.drop_duplicates()
datas = pd.merge(data1,data2,left_on ='cinemaName',right_on = 'cinemaName').dropna()datas = datas.reset_index(drop = True)
dataall = datas[['cinemaName']]
dataall['amount'] = datas['amount_x'] + datas['amount_y']dataall['avgPS'] = (datas['avgPS_x'] + datas['avgPS_y'])/2dataall['avgScreen'] = datas['avgScreen_x'] + datas['avgScreen_y']dataall['screen_yield'] = (datas['screen_yield_x'] + datas['screen_yield_y'])/2dataall['scenes_time'] = (datas['scenes_time_x'] + datas['scenes_time_y'])/2dataall['avgprice'] = dataall.screen_yield/dataall.scenes_time/dataall.avgPSdataall = dataall.dropna().reset_index(drop = True)
先从各方面简单看看取到的数据。
票房TOP10影院
北京耀莱以 860 万的票房,远超第二名金逸北京的 590 万占据首位。并且票房前 10 名中,有 5 家都是北京的影院。
单变量分布
用单日单厅票房/单日单厅场次/场均人数估计平均票价,各个变量分布进如下
可以看出,所有变量都呈现尖峰右拖尾的特征,大部分值低于中位数,但也不乏高于均值的点,考虑到各个影院数据存在规模、地域等因素差异,这一结果就很正常了。
票房影响因素
1. 从上图看出,场均人次与单荧幕票房正相关,观影人数增多票房收入增加,符合常理。
2. 单日单厅场次与票房之间有先升后降的关系,换句话说,排片少时,增加每日排片能增加票房收入,但排片过于密集,反而不利于票房增加。
3. 票价,场均人次与票房之间关系如图,颜色越深,表明票房越高。票价影响场均人次,过高和过低都会使票房收入减少,平均票价 40-70 区间内,影院票房收入更高,符合实际情况。
粗略看过数据之后,我们分析地域因素对于票房的影响,虽然爬取的数据中没有直接给出影院的地域特征,但可以用影院名称提取地域位置,Python 里有一个基于 jieba 分词的地域查询包 cpca,可以直接返回中文地址对应的省市县。
result = cpca.transform(dataall.cinemaName.tolist(),cut = False)dataall['province'] = result['省']dataall['city'] = result['市']
用cpca查询各个影院所在的省市,但这个包也不是非常完善,加上有的影院名称地址非常模糊,最终有 7581 个影院查询到了省市。
未查询到的部分影院如下,一部分是没有地域信息,只有影院名称,一部分有地域信息,可能过于生僻,未能匹配到,之后的分析中删掉没匹配到的这部分影院。
匹配到影院所在省份后,按省份汇总数据,分析各省票房。
各省票房
各地区票房存在明显差异,广东省票房收入最高,远超其他省份去,西藏票房最少。
接下来从各省影院数、场均人次、平均票价三方面来看各省差异。
影院数
最终获取的有地域信息的影院中,广东省有 1088 个影院,远远超出平均水平,这也可以解释为何广东省票房总数能排到第一,而西藏地区仅有 13 个影院,绝大部分地区影院在 200 上下浮动。
场均人次-平均票价
平均票价整体差异不大,40 元左右波动,场均人次来看,北京天津最多,但最高最低值差异不超过 30 人,因此这两项因素对于票房的影响远不如影院数大。
各市票房分布
最后将票房按市进行统计,得到全国各市票房分布如下
图中标出了票房收入最高的 5 个市,分别是北京(3279万)、上海(3083万)、广州(2258万)、深圳(2205万)、成都(1856万)。
觉得有意思,不妨点个好看
精彩推荐
以梦为马,不负韶华
觉得不错,点好看、戳下鸡腿、转发朋友圈都是一种支持。
万条票房数据看2019春节档各地影院表现(附源码)相关推荐
- 通过7万条视频数据看2019年B站鬼畜区发生了什么
版权声明:未经作者允许,不得私自转载. 鬼畜就是通过对严肃正经话题进行解剖后通过重复,再创作等形式用以达到颠覆经典.解构传统.张扬个性.强化焦点.讽刺社会的一种艺术形式. --百度百科 前言 作为常年 ...
- cesium 3dtiles 加载本地数据_cesium结合geoserver实现地图空间查询(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- 数据解读2019春节档哪部电影最值得看?
作者:徐麟,目前就职于互联网公司数据部,哥大统计数据狗,从事数据挖掘&分析工作,喜欢用R&Python玩一些不一样的数据. 来源 | 数据森麟(ID:shujusenlin),知乎同名 ...
- Java多线程B站爬虫与45万条视频数据,mysql批量写入性能对比,附代码
恩,萌新刚来,听学长说写博客可以总结梳理自己的知识,所以来试试,自娱自乐,不喜莫喷.目前还是大二狗,学Java半年多,错误很多,望大神指正. 本文涉及:Java多线程,单例模式,爬虫相关技术,MySQ ...
- 300万知乎多标签文本分类任务经验分享(附源码)
来源:大数据挖掘DT数据分析 本文长度为4600字,建议阅读6分钟 本文为你分享知乎看山杯冠军团队参赛经验. 后台回复回复关键词"PT"即可获取源码(PyTorch实现)githu ...
- Java 中如何解决 POI 读写 excel 几万行数据时内存溢出的问题?(附源码)
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. Excel2003与Excel2007 两个版本 ...
- 2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)
2021年北京积分落户名单公布了,手痒痒就写了一段Java代码,运行了两个多小时,终于到了所有数据,如下截图: 本着"Talk is cheap, Show me the code.&quo ...
- 前端复杂表格一键导出看这篇就够了(附源码)
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前端导出 excel 的需求很多,但市面上好用的库并不多,讲明白复杂使用场景的文章更少. 本 ...
- 前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)
前端导出 excel 的需求很多,但市面上好用的库并不多,讲明白复杂使用场景的文章更少. 本文将以文字 + demo 源码的形式,力求讲清楚满足 99% 使用场景的终极 excel 导出方案. 如果项 ...
最新文章
- 经典贪心法:时间序列问题及其全局最优性证明
- php 微信第三方登录demo,第三方登录 - 快速接入微信、QQ、微博等第三方登录方式 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
- html公共模块提取出去,webpack 填坑之路--提取独立文件(模块)
- presto 连接mysql,Presto等同于MySQL group_concat
- LeetCode - Medium - 114. Flatten Binary Tree to Linked List
- 2019诺贝尔化学奖: 二战老兵的传奇人生
- linux进程实际内存大小,Linux进程内存用量分析之堆内存篇
- Core DES加、解密
- 线性回归 php,PHP实现简单线性回归之数学库的重要性
- Java 8 并发: Threads 和 Executors
- SQL Server之旅:(二)Could not load the DLL xpstar90.dll
- 计算机哪个信息是硬盘大小,查看电脑硬盘大小_电脑硬盘大小怎么看
- idea常用22种快捷键,脱离鼠标,便捷开发,赶紧收藏
- 深度学习机器学习面试题(理论基础)
- uniApp链接式分享
- AT32F415 AT32F421 ERTC 时间戳的使用
- 全球与中国LED检查灯市场深度研究分析报告
- 2022年广东省安全员A证第三批(主要负责人)考试练习题及在线模拟考试
- R语言GARCH-DCC模型和DCC(MVT)建模估计
- 关于微信小程序简单瀑布流的制作
热门文章
- [机缘参悟-47]:鬼谷子-第十一决篇-决策者,中庸也,利益合理化分配也
- RabbitMQ——SpringBoot集成RabbitMQ
- 任务管理器中的PID找不到
- sonar添加(集成)阿里java代码p3c规则
- kali2020版本 中文输入法google拼音输入
- 程序员架构修炼之道:如何设计“易理解”的系统架构?
- java 部署_JAVA项目服务器部署
- Java | Spring 使用 RequestBodyAdvice 来实现请求参数的加解密预处理
- 频数分析拟合优度卡方检验
- 基于Python实现LSTM对股票走势的预测【100010285】