當前位置:
首頁 > 知識 > 10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

打開今日頭條,查看更多圖片

作者 | 量化小白H

責編 | 郭芮

2019年的春節檔已經過去了一個多月的時間,基本已經落下帷幕。《流浪地球》的火爆在票房破了46億之後又延期了60天,預計將在5月5日正式下映。

今年春節檔全國共有8部影片上映,對於影片的對比分析已經非常多,孰優孰劣,每個人心裡都有一桿秤,不再贅述。本文著重分析影片票房的地域差別,爬取了年後兩周各地萬餘家影院的票房數據,一起來看看各地影院今年春節檔表現如何。PS:非官方統計,數據一定不準確,看看就好。

數據說明

分影院的票房數據來自中國票房網:http://www.cbooo.cn/cinemaday。

網站提供日票房排行榜的前100名和周票房的前一萬餘名,本文爬取包含更多樣本的周票房數據,取年後兩周的數據。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

最終爬到的數據樣式如下,數據從左往右依次為影院名稱,當周票房、單熒幕票房、場均人次、單日單廳票房、單日單廳場次6個變數。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?


數據獲取

使用Python獲取數據,對於爬取過程不感興趣的可以直接看下一部分。

在數據頁面按F12打開開發者工具,選擇NetWork,XHR,刷新頁面後,依次點1,2,3,4頁,接收到了一堆文件。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

右鍵任意打開一個,顯示如下(如果不是這種格式,說明你選錯了):

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

是我們需要的數據,對比前後的變數關係,得到每個變數的含義。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

再分析網址,從前面的截圖能看出來,pindex後面跟的是頁碼,對頁碼進行循環就可以爬到所有的數據。dt = 1042看不出來什麼意思,但改變日期範圍重複上面的操作時,看到此時dt變成了1041,說明dt後面的值對應不同的日期範圍。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

我們的目標是爬取0204-0210,0211-0217兩周的數據,獲取對應的dt分別是1040和1041,最終代碼如下:

# -*- coding: utf-8 -*-
"""
Created on Fri Oct 19 18:50:03 2018
"""
import urllib
import requests
from fake_useragent import UserAgent
import json
import pandas as pd
import time
import 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 = 1035
for 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"])/2
dataall["avgScreen"] = datas["avgScreen_x"] + datas["avgScreen_y"]
dataall["screen_yield"] = (datas["screen_yield_x"] + datas["screen_yield_y"])/2
dataall["scenes_time"] = (datas["scenes_time_x"] + datas["scenes_time_y"])/2
dataall["avgprice"] = dataall.screen_yield/dataall.scenes_time/dataall.avgPS
dataall = dataall.dropna().reset_index(drop = True)

數據總覽

先從各方面簡單看看取到的數據。

票房TOP10影院

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

北京耀萊以860萬的票房,遠超第二名金逸北京的590萬佔據首位。並且票房前10名中,有5家都是北京的影院。

單變數分布

用單日單廳票房/單日單廳場次/場均人數估計平均票價,各個變數分布進如下:

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

可以看出,所有變數都呈現尖峰右拖尾的特徵,大部分值低於中位數,但也不乏高於均值的點,考慮到各個影院數據存在規模、地域等因素差異,這一結果就很正常了。


票房影響因素

1、從上圖看出,場均人次與單熒幕票房正相關,觀影人數增多票房收入增加,符合常理。

2、單日單廳場次與票房之間有先升後降的關係,換句話說,排片少時,增加每日排片能增加票房收入,但排片過於密集,反而不利於票房增加。

3、票價,場均人次與票房之間關係如圖,顏色越深,表明票房越高。票價影響場均人次,過高和過低都會使票房收入減少,平均票價40-70區間內,影院票房收入更高,符合實際情況。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?


票房地域特徵

粗略看過數據之後,我們分析地域因素對於票房的影響,雖然爬取的數據中沒有直接給出影院的地域特徵,但可以用影院名稱提取地域位置,Python里有一個基於jieba分詞的地域查詢包cpca,可以直接返回中文地址對應的省市縣。

result = cpca.transform(dataall.cinemaName.tolist(),cut = False)
dataall["province"] = result["省"]
dataall["city"] = result["市"]

用cpca查詢各個影院所在的省市,但這個包也不是非常完善,加上有的影院名稱地址非常模糊,最終有7581個影院查詢到了省市。

未查詢到的部分影院如下,一部分是沒有地域信息,只有影院名稱,一部分有地域信息,可能過於生僻,未能匹配到,之後的分析中刪掉沒匹配到的這部分影院。

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

匹配到影院所在省份後,按省份匯總數據,分析各省票房。


各省票房

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

各地區票房存在明顯差異,廣東省票房收入最高,遠超其他省份去,西藏票房最少。

接下來從各省影院數、場均人次、平均票價三方面來看各省差異。


影院數

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

最終獲取的有地域信息的影院中,廣東省有1088個影院,遠遠超出平均水平,這也可以解釋為何廣東省票房總數能排到第一,而西藏地區僅有13個影院,絕大部分地區影院在200上下浮動。


場均人次-平均票價

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

平均票價整體差異不大,40元左右波動,場均人次來看,北京天津最多,但最高最低值差異不超過30人,因此這兩項因素對於票房的影響遠不如影院數大。


各市票房分布

最後將票房按市進行統計,得到全國各市票房分布如下:

10193 條票房數據告訴你《流浪地球》領跑的電影檔戰果如何?

圖中標出了票房收入最高的5個市,分別是北京(3279萬)、上海(3083萬)、廣州(2258萬)、深圳(2205萬)、成都(1856萬)。


作者:量化小白一枚,上財研究生在讀,偏向數據分析與量化投資,個人公眾號量化小白上分記。

聲明:本文為作者投稿,版權歸其個人所有。

文章廣告為微信自動匹配,與本平台無關,如遇假冒偽劣請聯繫微信進行舉報。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

Redis Labs 再次更改開源許可證,但 Redis 本身不受影響

TAG:CSDN |