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

1.數據說明

分影院的票房數據來自中國票房網:

http://www.cbooo.cn/cinemaday

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

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

2.數據獲取

使用 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 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)

3.數據總覽

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

票房TOP10影院

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

單變量分佈

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

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

票房影響因素

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

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

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

4.票房地域特徵

粗略看過數據之後,我們分析地域因素對於票房的影響,雖然爬取的數據中沒有直接給出影院的地域特徵,但可以用影院名稱提取地域位置,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萬)。

本文來源量化小白上分記
本文版權歸原作者所有,內容爲作者個人觀點,轉載目的在於傳遞更多信息,如涉及作品內容、版權等問題,可聯繫本站刪除,謝謝。

更多交流諮詢:18080942131 (同微信 加好友備註:搜狐)。

相關文章