万条票房数据看2019春节档各地影院表现
作者 |?量化小白H來源 | 量化小白上分記
今年春節(jié)檔全國共有8部影片上映,對于影片的對比分析已經(jīng)非常多,孰優(yōu)孰劣,每個(gè)人心里都有一桿秤,不再贅述。本文著重分析影片票房的地域差別,爬取了年后兩周各地萬余家影院的票房數(shù)據(jù),一起來看看各地影院今年春節(jié)檔表現(xiàn)如何,非官方統(tǒng)計(jì),數(shù)據(jù)一定不準(zhǔn)確,看看就好。
1.數(shù)據(jù)說明分影院的票房數(shù)據(jù)來自中國票房網(wǎng):http://www.cbooo.cn/cinemaday
網(wǎng)站提供日票房排行榜的前100名和周票房的前一萬余名,本文爬取包含更多樣本的周票房數(shù)據(jù),取年后兩周的數(shù)據(jù)。
最終爬到的數(shù)據(jù)樣式如下,數(shù)據(jù)從左往右依次為影院名稱,當(dāng)周票房、單熒幕票房、場均人次、單日單廳票房、單日單廳場次6個(gè)變量。
2.數(shù)據(jù)獲取使用python獲取數(shù)據(jù),對于爬取過程不感興趣的可以直接看下部分,需要數(shù)據(jù)/代碼的請?jiān)诤笈_回復(fù)“票房”。
在數(shù)據(jù)頁面按F12打開開發(fā)者工具,選擇NetWork,XHR,刷新頁面后,依次點(diǎn)1,2,3,4頁,接收到了一堆文件。
右鍵任意打開一個(gè),顯示如下(如果不是這種格式,說明你選錯(cuò)了)
是我們需要的數(shù)據(jù),對比前后的變量關(guān)系,得到每個(gè)變量的含義。
再分析網(wǎng)址,從前面的截圖能看出來,pindex后面跟的是頁碼,對頁碼進(jìn)行循環(huán)就可以爬到所有的數(shù)據(jù)。dt = 1042看不出來什么意思,但改變?nèi)掌诜秶貜?fù)上面的操作時(shí),看到此時(shí)dt變成了1041,說明dt后面的值對應(yīng)不同的日期范圍。
我們的目標(biāo)是爬取0204-0210,0211-0217兩周的數(shù)據(jù),獲取對應(yīng)的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# 發(fā)送get請求 comment_api =?'http://www.cbooo.cn/BoxOffice/getCBW?pIndex={}&dt={}' """ cinemaName:影院名稱 amount:當(dāng)周票房 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.textjson_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()得到的兩周數(shù)據(jù)里,第一周包含11295個(gè)樣本,第二周包含11375個(gè)樣本,將兩周數(shù)據(jù)按影院合并后,最終得到10193個(gè)樣本。
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.數(shù)據(jù)總覽先從各方面簡單看看取到的數(shù)據(jù)。
票房TOP10影院
北京耀萊以860萬的票房,遠(yuǎn)超第二名金逸北京的590萬占據(jù)首位。并且票房前10名中,有5家都是北京的影院。
單變量分布
用單日單廳票房/單日單廳場次/場均人數(shù)估計(jì)平均票價(jià),各個(gè)變量分布進(jìn)如下?
可以看出,所有變量都呈現(xiàn)尖峰右拖尾的特征,大部分值低于中位數(shù),但也不乏高于均值的點(diǎn),考慮到各個(gè)影院數(shù)據(jù)存在規(guī)模、地域等因素差異,這一結(jié)果就很正常了。
票房影響因素
1. 從上圖看出,場均人次與單熒幕票房正相關(guān),觀影人數(shù)增多票房收入增加,符合常理。
2. 單日單廳場次與票房之間有先升后降的關(guān)系,換句話說,排片少時(shí),增加每日排片能增加票房收入,但排片過于密集,反而不利于票房增加。
3. 票價(jià),場均人次與票房之間關(guān)系如圖,顏色越深,表明票房越高。票價(jià)影響場均人次,過高和過低都會(huì)使票房收入減少,平均票價(jià)40-70區(qū)間內(nèi),影院票房收入更高,符合實(shí)際情況。
4.票房地域特征粗略看過數(shù)據(jù)之后,我們分析地域因素對于票房的影響,雖然爬取的數(shù)據(jù)中沒有直接給出影院的地域特征,但可以用影院名稱提取地域位置,python里有一個(gè)基于jieba分詞的地域查詢包cpca,可以直接返回中文地址對應(yīng)的省市縣。
result = cpca.transform(dataall.cinemaName.tolist(),cut =?False) dataall['province'] = result['省'] dataall['city'] = result['市']用cpca查詢各個(gè)影院所在的省市,但這個(gè)包也不是非常完善,加上有的影院名稱地址非常模糊,最終有7581個(gè)影院查詢到了省市。
未查詢到的部分影院如下,一部分是沒有地域信息,只有影院名稱,一部分有地域信息,可能過于生僻,未能匹配到,之后的分析中刪掉沒匹配到的這部分影院。
匹配到影院所在省份后,按省份匯總數(shù)據(jù),分析各省票房。
各省票房
各地區(qū)票房存在明顯差異,廣東省票房收入最高,遠(yuǎn)超其他省份去,西藏票房最少。
接下來從各省影院數(shù)、場均人次、平均票價(jià)三方面來看各省差異。
影院數(shù)
最終獲取的有地域信息的影院中,廣東省有1088個(gè)影院,遠(yuǎn)遠(yuǎn)超出平均水平,這也可以解釋為何廣東省票房總數(shù)能排到第一,而西藏地區(qū)僅有13個(gè)影院,絕大部分地區(qū)影院在200上下浮動(dòng)。
場均人次-平均票價(jià)
平均票價(jià)整體差異不大,40元左右波動(dòng),場均人次來看,北京天津最多,但最高最低值差異不超過30人,因此這兩項(xiàng)因素對于票房的影響遠(yuǎn)不如影院數(shù)大。
各市票房分布
最后將票房按市進(jìn)行統(tǒng)計(jì),得到全國各市票房分布如下
圖中標(biāo)出了票房收入最高的5個(gè)市,分別是北京(3279萬)、上海(3083萬)、廣州(2258萬)、深圳(2205萬)、成都(1856萬)。
小編整理了作者的部分代碼,后臺回復(fù)“票房”可以獲取
萬水千山總是情,點(diǎn)個(gè)「好看」行不行。
◆?◆?◆ ?◆?◆
長按二維碼關(guān)注我們
數(shù)據(jù)森麟公眾號的交流群已經(jīng)建立,許多小伙伴已經(jīng)加入其中,感謝大家的支持。大家可以在群里交流關(guān)于數(shù)據(jù)分析&數(shù)據(jù)挖掘的相關(guān)內(nèi)容,還沒有加入的小伙伴可以掃描下方管理員二維碼,進(jìn)群前一定要關(guān)注公眾號奧,關(guān)注后讓管理員幫忙拉進(jìn)群,期待大家的加入。
管理員二維碼:
猜你喜歡“史上最強(qiáng)春節(jié)檔”來襲!數(shù)據(jù)解讀值得看的影片是......
●?
●?
?支持小白原創(chuàng)???
總結(jié)
以上是生活随笔為你收集整理的万条票房数据看2019春节档各地影院表现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unreal Engine 4 —— G
- 下一篇: li标签中hover的使用及li标签的样