本文授权转载自Crossin的编程教室,禁二次转载

不知道你有没有这样的经历。

最近几天,朋友圈和微博被《哪吒之魔童降世》刷屏了。不少看过的朋友都成为“自来水”,力荐此片。

而它的市场表现也很给力,上映首日即破亿,5天超10亿,目前已成为国产动画片最高票房。

于是很多人开始猜测,最终的票房会达到多少?一开始有人预测十几亿,后来普遍认为超20亿,到现在甚至有人给出了40亿的预测。

今天我尝试用“科学”一点的方法也来预测一下。如果最终结果有幸言中,还望大家帮忙转发点赞支持一下。

事先说明,我还没有去看《哪吒》,所以在预测中并无个人偏好。对于纯数据分析来说,这是个好事,让我可以做一个没有感情的杀手分析师。

相关的代码、数据、原图已上传,获取方式见文末。(还有小彩蛋)


截至发稿时(8月2日)是《哪吒》上映第8天,实时票房15亿多,前7日票房14.68亿

一种粗糙的预测方式就是:找一找之前类似电影这个时间的票房是多少,按倍数乘一下

但这里有个问题,不同电影的票房走势是不一样的。以下是我们从猫眼票房上随手找的几部大片或类似电影,他们的票房走势:

注:零点首映场的数据被算在了首映前一天,这里我们做了个人工处理,把它合并到了首映日。并且没计算之前的电影数据。这是为了后面的预测分析做准备。

从图上可以看出,有的电影在上线后会有一小波增长,并且在之后的周末和假日都会向上波动,这通常是上映后口碑较好,吸引到更多观众并且排片增加的影片;而有的电影,则是上映即巅峰,之后一路下落,甚至没啥反弹,这其中不乏票房很高的大片,一般是阵容强大/题材吸引人/早期宣发做得好,但观影感受却低于预期的影片。

这里发现一个特别的案例:《白蛇:缘起》,它是少有的上映后票房持续呈上涨趋势的影片。然而却在春节档到来之际突然下线,票房戛然而止,实在可惜。

所以拿不同的电影来比较,结果也会差很多。比如常用来作对比的《大圣归来》,前7日票房累计为2.99亿,总票房9.56亿,按比例算一下《哪吒》票房就是近47亿;而拿《流浪地球》来作为参考,前7日票房累计为23.6亿,总票房46.55亿,结果就是28.9亿。若是再换做《白蛇》或者《爱情公寓》,那更是相去甚远。

所以我想到的方法是:通过对历史票房数据进行多项式曲线拟合,建立一个票房走势的“模型”,再把现有的票房套进模型里做计算

这里用到的是 numpypolyfitpoly1d 方法,根据已有数据,利用最小二乘法得到拟合曲线的方程和系数。

np.poly1d(np.polyfit(x, y, n))

对于上述9部电影的拟合效果(红线为拟合结果):

对于新上映的电影,数据还太少,直接拟合没有意义。所以我们选择其他电影拟合出的曲线,进行“缩放”,让它适合现有的数据。

这里用 scipy 库的最小二乘函数 leastsq,将其他电影拟合出的曲线作为基础(而非通用的多项式),对《哪吒》的已有数据进行拟合。

def func(x, p):  # 拟合函数    A, k = p
#     return A * z(k * x) # 增加x
return A * z(x)  # z为其他电影算出的模型  def residuals(p, y, x):
#实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数
return y - func(x, p)   plsq = leastsq(residuals, p, args=(y, x))

如果用《大圣归来》的曲线,同时假设上映60天,算出来结果是 41.3 亿

或许那个 41 亿的预测就是这么出来的。不过《大圣》的票房量级要相对少很多,所以走势曲线也相对更“平缓”。直接套用在《哪吒》上,系数是 4.4 倍,我觉得这个误差是比较大的。实际票房不出意外的话,应该达不到这么高。

换做《流浪地球》再试下,结果 27.6 亿

这个结果我觉得更合理些。因为:

  1. 都是预算紧缺情况下完成的高质量作品

  2. 上映后都有比较好的口碑传播,形成现象级话题

  3. 都有知名度较高的题材(刘慈欣/哪吒)

  4. 都在热门档期(春节/暑期)

如果在现有数据上,加上这个这周末的三天猜测数据(2亿/2.5亿/2.5亿,我觉得这个数据算是比较保守了),再次进行拟合。那么结果就会达到 29.9 亿

考虑到《哪吒》的题材相对《地球》更适合全家观影,并且暑期档的时间更长,同期竞争较小,所以我觉得,它的曲线应当比《地球》更乐观,破 30 亿问题不大

因此,就目前的状况来看,我的预测是介于 30~40 亿之间(比《地球》拟合的高,但比《大圣》拟合的低),取个折中就是略高于 35 亿吧。

当然,也不排除后续有变数。再过几天,有新的数据之后再跑一下这个预测程序,应该会更准确。


相关代码、数据、结果图已上传,并附有说明,获取请在公众号(Crossin的编程教室)里回复关键字哪吒

简单说明下,代码分几部分,可单独运行:

  • get_boxoffice.py 从猫眼票房获取几部参考影片的历史票房数据

  • get_nezha.py 从猫眼票房获取《哪吒》票房数据

  • plot.py 绘制历史票房走势图

  • nezha.py 对历史票房进行曲线拟合,并对《哪吒》票房进行预测


说点题外话,不管是30亿还是40亿,《哪吒》都是铁定进入历史总票房top10的,并很有希望进top5(34亿)。

我个人觉得这是个好现象。哪怕像《大圣归来》、《流浪地球》,包括《白蛇》这样的电影还多不足的地方,但它们的出现和市场表现让人觉得,还是有人在认真做电影,并且观众也会认可这样的电影。这样的良性循环会让以后出现更多类型更优质的国产电影,而不是只有喜剧片,只能靠流量明星的单一市场。

虽然劣币驱逐良币的现象在很多领域始终存在,但总会有人愿意去做良币。有什么样的受众就有什么样的创作者。我愿意为这些出现的良币鼓掌和付费,这样它们的出现才会多一些、久一些。不然,好团队好作品生存不了,我们以后就只能“吃垃圾”了。

推荐阅读
《李宏毅机器学习完整笔记》发布,Datawhale开源项目LeeML-Notes
独家 | 你的神经网络不起作用的37个理由(附链接)
中国小伙在学术论文中求婚…论文致谢还能有哪些玩法?
吴恩达 deeplearning.ai 上新了,只需 Python 和高中数学基础
腾讯AI大战王者荣耀!504场1v1仅输1场,5v5达电竞职业水平
这 10 大基础算法,程序员必知必会!

喜欢就点击“在看”吧

用python“科学”预测下《哪吒》票房相关推荐

  1. 用python“科学”预测下《哪吒》票房!

    最近几天,朋友圈和微博被< 哪吒之魔童降世 >刷屏了.不少看过的朋友都成为"自来水",力荐此片. 而它的市场表现也很给力, 上映首日即破亿,5天超10亿 ,目前已成为国 ...

  2. 用 Python“科学”预测下《哪吒》票房

    最近几天,朋友圈和微博被<哪吒之魔童降世>刷屏了.不少看过的朋友都成为"自来水",力荐此片. 而它的市场表现也很给力,上映首日即破亿,5天超10亿,目前已成为国产动画片 ...

  3. python预测药_《哪吒》票房超越《药神》,用Python来预测下《哪吒》的票

    最近几天,朋友圈和微博被<哪吒之魔童降世>刷屏了.不少看过的朋友都成为"自来水",力荐此片. 而它的市场表现也很给力,上映首日即破亿,5天超10亿,目前已成为国产动画片 ...

  4. 《哪吒》票房超越《药神》,用Python来预测下《哪吒》的票房

    最近几天,朋友圈和微博被<哪吒之魔童降世>刷屏了.不少看过的朋友都成为"自来水",力荐此片. 而它的市场表现也很给力,上映首日即破亿,5天超10亿,目前已成为国产动画片 ...

  5. python 预测下一年数据 程序_python中神经网络预测时间序列数据

    我是神经网络的初学者,尝试用python语言预测5个输入的温度值(输出).我使用python中的keras包来工作神经网络.在 此外,我使用了两种算法,即前向神经网络(回归)和递归神经网络(LSTM) ...

  6. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  7. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书

    因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...

  8. ML之DataScience:基于机器学习处理数据科学(DataScience)任务(数据分析、特征工程、科学预测等)的简介、流程、案例应用执行详细攻略

    ML之DataScience:基于机器学习处理数据科学(DataScience)任务(数据分析.特征工程.科学预测等)的简介.流程.案例应用执行详细攻略 目录 数据科学的任务(数据分析.特征工程.科学 ...

  9. Python科学计算之Pandas基础学习

    Python科学计算之Pandas基础学习 导入Pandas 我们首先要导入我们的演出明星--Pandas. 这是导入Pandas的标准方式.显然,我们不希望每时每刻都在程序中写'pandas',但是 ...

最新文章

  1. ring0下的 fs:[124]
  2. java高并发(十七)J.U.C之BlockingQueue
  3. 现代游戏中的UX趋势
  4. springMVC3学习(十一)--文件上传CommonsMultipartFile
  5. sqldeveloper mysql迁移_通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤
  6. mysql四种事务级别_【MySQL 知识】四种事务隔离级别
  7. 在javascript中NodeList和Array的区别及转换方法
  8. Java基础语法面试题汇总
  9. linux-什么是Linux系统?linux详解Linux与Windows的区别Linux发行版本及特点介绍
  10. 公众号第三方平台开发 教程一 创建公众号第三方平台
  11. 发送短信(SMS)承载方式有哪些?
  12. CentOS7.9 离线安装FTP服务器
  13. 2018入门微单相机推荐
  14. 用 VS2019 编译带 libx264, libmp3lame 的 FFmpeg 库
  15. 音乐歌单Android,仿网易云音乐歌单界面 Header滑动效果
  16. DDNS的NAT穿越问题
  17. Huggingface的from pretrained的下载代理服务器方法设置
  18. 也谈智能手机游戏开发中的分辨率自适应问题
  19. 2022区块链应用全景及未来展望
  20. HTML第四章 input新表单元素(10个,附带详细代码)

热门文章

  1. 百度Apollo导入Opendrvie地图
  2. C#宽带连接拨号断开重连,可调用
  3. Java面试题总结一
  4. html+css网页布局积累
  5. 自习任我行第二阶段个人总结2
  6. 微信小程序云开发之微信支付
  7. 信安Note_day27
  8. 什么是pid控制算法_飞行控制PID算法——无人机飞控
  9. MATLAB绘图合集:stairs绘图
  10. JCS: An Explainable COVID-19 Diagnosis System by Joint Classification and Segmentation备忘录