摘要:另外由于豆瓣上一些電影評(píng)分?jǐn)?shù)量太少而不顯示,所以這里的電影數(shù)量會(huì)和票房數(shù)量有所差異。月度票房將類型片的票房按月劃分,得到了這張圖。
去年末的時(shí)候,我招收了新的“ 實(shí)訓(xùn)生 ”。本文是其中一位 @齊大圣 同學(xué)在實(shí)訓(xùn)兩個(gè)月時(shí)完成的項(xiàng)目案例。(碼上行動(dòng)群里同學(xué)應(yīng)該都看過(guò)這個(gè)名字,現(xiàn)在也是助教之一。)項(xiàng)目最初的想法是, 從互聯(lián)網(wǎng)上的公開(kāi)信息中采集2018年在國(guó)內(nèi)上映電影的票房、評(píng)分、類型、演員等信息,然后做一些數(shù)據(jù)分析和可視化展示 。這樣一個(gè)項(xiàng)目, 除了需要對(duì) python 基本語(yǔ)法和數(shù)據(jù)結(jié)構(gòu)的掌握之外,還涉及到網(wǎng)頁(yè)分析、爬蟲、文本解析、數(shù)據(jù)庫(kù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)分析、數(shù)據(jù)可視化,并且需要對(duì)一個(gè)完整項(xiàng)目有整體的模塊設(shè)計(jì) ,對(duì)于編程學(xué)習(xí)者來(lái)說(shuō)是從入門到進(jìn)階的一個(gè)很好案例。經(jīng)常跟我說(shuō)學(xué)了基礎(chǔ)不知道做什么項(xiàng)目的同學(xué)們,別光顧著看熱鬧,回頭自己也動(dòng)手做一做。 代碼已上傳,獲取見(jiàn)文末。
項(xiàng)目之初,我們的想法主要是 對(duì)去年國(guó)內(nèi)上映電影的票房、評(píng)分進(jìn)行一下排行 ,然后按不同類型對(duì)比下, 什么片更受歡迎,什么片更賺錢 。后來(lái)開(kāi)發(fā)過(guò)程中,正值《流浪地球》大賣,吳京成為首位國(guó)內(nèi)票房破百億的演員。于是我們突發(fā)奇想,來(lái)看一看誰(shuí)是去年單年累積票房最高的演員。是《我不是藥神》的徐崢,還是《唐人街探案2》的王寶強(qiáng)(他倆還合演了《一出好戲》),又或者是《紅海行動(dòng)》中的某位?
在往下看之前,你也可以大膽猜一下。但我打賭你是猜不到的。如果沒(méi)猜對(duì),記得幫忙轉(zhuǎn)發(fā)點(diǎn)贊。
基本數(shù)據(jù)情況:票房數(shù)據(jù)來(lái)自 中國(guó)票房網(wǎng) (http://cbooo.cn)
評(píng)分?jǐn)?shù)據(jù)來(lái)自 豆瓣電影 (http://movie.douban.com)、 貓眼 (http://maoyan.com)、 時(shí)光網(wǎng) (http://mtime.com)、 IMDB (http://imdb.com)
導(dǎo)演、演員信息來(lái)自 豆瓣電影
共 522 部電影, 4723 位影人
由于從幾個(gè)不同網(wǎng)站抓取數(shù)據(jù),有些名稱會(huì)不一致,或者出現(xiàn)部分?jǐn)?shù)據(jù)缺失的情況。因此這個(gè)數(shù)據(jù)并不是絕對(duì)完整的,但不影響整體結(jié)論
影片所屬類型沒(méi)有嚴(yán)格定義,且會(huì)有多個(gè)類型。實(shí)際選取方式我們?cè)谙旅鏁?huì)有具體說(shuō)明。
電影總排行:這個(gè)排名大家都不陌生,沒(méi)啥好多說(shuō)的,好玩的在后面。
票房分布我們將所有電影按評(píng)分和票房做成散點(diǎn)分布圖,得到上述圖片。此圖是動(dòng)態(tài)可交互的,這里我截幾張有代表性的(點(diǎn)擊圖片后可放大):
依次是 動(dòng)作、喜劇、劇情、動(dòng)畫 四類電影分布。粗略一看, 動(dòng)作片是比較受市場(chǎng)歡迎的 ,畢竟選擇去觀看大屏幕,很大程度也是為了享受特效和視聽(tīng)感受。喜劇和劇情也還不錯(cuò),但高票房的動(dòng)畫片就很少了。
類型片這張圖是不同影片類型的數(shù)量和評(píng)分情況。 劇情、喜劇、動(dòng)作是三大主流類型 。
從評(píng)分上看,動(dòng)畫片最高 ,我很早就發(fā)現(xiàn)了這個(gè)現(xiàn)象,我覺(jué)得可能是因?yàn)閯?dòng)畫片類型明確,會(huì)觀看并評(píng)價(jià)的人本身對(duì)其接受度高,而不喜歡的人壓根兒就不會(huì)去看。劇情片整體評(píng)分也不錯(cuò),可見(jiàn)能把一個(gè)故事說(shuō)好,觀眾就挺滿意了。 愛(ài)情片、驚悚片則是一向是爛片的高發(fā)地帶 。
說(shuō)明下:這里的類型是重復(fù)計(jì)算的,一部片會(huì)既是動(dòng)作片,又是喜劇片。另外由于豆瓣上一些電影評(píng)分?jǐn)?shù)量太少而不顯示,所以這里的電影數(shù)量會(huì)和票房數(shù)量有所差異。
從票房上看, 動(dòng)作片不管是總量還是平均,都很強(qiáng)勢(shì) 。值得注意的是科幻片,雖然一般認(rèn)為這是個(gè)小眾類型,但與廣義科幻沾邊的影片平均票房卻不低(這里面Marvel貢獻(xiàn)了不少),今年的小破球更是創(chuàng)造了新的紀(jì)錄。戰(zhàn)爭(zhēng)片則是被《紅海行動(dòng)》一片之力拉高了平均值。
月度票房將類型片的票房按月劃分,得到了這張圖。 春節(jié)檔無(wú)疑是一年最搶錢的檔期,而喜劇片又是此檔期的絕對(duì)主力。暑期檔則是另一個(gè)票房小高峰。動(dòng)作片一年四季都不錯(cuò) 。
這里的月度劃分是按首映日期,所以會(huì)有一些提前,比如國(guó)慶檔的票房都記在了九月份。
以上面幾組數(shù)據(jù)來(lái)看,如果哪位土豪讀者想投資拍電影, 選擇動(dòng)作片是比較保險(xiǎn)的,記得要把故事說(shuō)好,最好再加點(diǎn)科幻元素,在春節(jié)前上映 。
評(píng)分對(duì)比這里做了 IMDB、時(shí)光網(wǎng)、貓眼 分別和 豆瓣 評(píng)分的關(guān)系對(duì)比。
按理說(shuō),如果兩個(gè)網(wǎng)站的評(píng)分基本一致的話,這些點(diǎn)應(yīng)當(dāng)分布在對(duì)角線上。 IMDB、時(shí)光網(wǎng)和豆瓣還是差不多的 (豆瓣其實(shí)是5星制,最低2分)。再細(xì)分一下, 時(shí)光網(wǎng)和豆瓣的相關(guān)性要比 IMDB 更大 (文化差異), 好片比爛片的相關(guān)性更大 (好片都說(shuō)好,爛片則口味不同)。
有意思的是 貓眼 (最右側(cè)圖),它的評(píng)分普遍要比豆瓣高,相信很多人都有直觀感受。當(dāng)然這也有它的原因: 貓眼買了票的人才會(huì)評(píng)分,那一般總歸會(huì)選個(gè)自己愛(ài)看的吧 。
【彩蛋】圖上右下角有個(gè)令人矚目的孤點(diǎn),這部電影是個(gè)例外,它貓眼評(píng)分2.9,豆瓣卻有6.9,你知道是哪部嗎?(可以留言猜一下,我待會(huì)兒在留言中公布答案)如果你了解此片背后的故事,定會(huì)一拍大腿恍然大悟。
演員好了,到了公布最終結(jié)果的時(shí)候。
第一名: 王成思
參演電影: 《西紅柿首富》25億;《唐人街探案2》34億;《李茶的姑媽》6億
這……是誰(shuí)啊,演的誰(shuí)……
斯坦·李憑借各種客串,位列第3。而另一位能在Marvel、DC兩道均能跑龍?zhí)椎募s翰·蓋蒂爾,也躋身前十,同樣也不知道他演的角色……
怎么樣,有沒(méi)有出乎你的意料?現(xiàn)在你可以拿這個(gè)去問(wèn)別人了
所有圖表在網(wǎng)頁(yè)上都是動(dòng)態(tài)可交互的,訪問(wèn)地址請(qǐng)?jiān)谖覀児娞?hào)( Crossin的編程教室 )里回復(fù)關(guān)鍵字 票房
代碼也已上傳,并附帶有說(shuō)明文檔,大致說(shuō)明了實(shí)現(xiàn)思路、文件說(shuō)明、技術(shù)細(xì)節(jié)。同樣回復(fù)關(guān)鍵字 票房
如果你想要跟著實(shí)現(xiàn)或運(yùn)行相關(guān)代碼,我這里再簡(jiǎn)單說(shuō)幾點(diǎn)。
項(xiàng)目整體思路:
通過(guò) 中國(guó)票房網(wǎng) 獲得2018年大陸上映電影和每部電影票房數(shù)據(jù)
根據(jù)已有的票房數(shù)據(jù),通過(guò)豆瓣 api 和詳細(xì)頁(yè)面,獲得每部電影的導(dǎo)演,演員和豆瓣評(píng)分等詳細(xì)數(shù)據(jù)
分別通過(guò) 貓眼、時(shí)光網(wǎng) 和 imdb,獲取這三個(gè)網(wǎng)站的電影評(píng)分?jǐn)?shù)據(jù)
新建影人條目,利用豆瓣獲得的影人數(shù)據(jù),對(duì)2018年每個(gè)演員年參演電影進(jìn)行統(tǒng)計(jì)
根據(jù)已有數(shù)據(jù)作圖,分析2018年電影票房排名、不同網(wǎng)站評(píng)分差異、電影票房-評(píng)分關(guān)系等
開(kāi)發(fā)環(huán)境及所需庫(kù):
python 3.6(3.5以上版本應(yīng)該都沒(méi)啥問(wèn)題)
jupyter notebook - 這個(gè)之前介紹過(guò)多次,數(shù)據(jù)分析好幫手
requests - 網(wǎng)頁(yè)抓取
bs4 - 網(wǎng)頁(yè)文本分析
pymongo - 本項(xiàng)目用了 mongodb 數(shù)據(jù)庫(kù)
numpy - 數(shù)據(jù)計(jì)算必備
pyecharts - 繪圖工具包 ECharts 的封裝
有幾點(diǎn)值得注意的是:
因?yàn)槎拱甑乃阉鹘Y(jié)果是模糊匹配,根據(jù)電影名會(huì)搜出多部電影,因此匹配豆瓣信息時(shí)增加了人工干預(yù)的步驟。這部分代碼可以再優(yōu)化。
項(xiàng)目使用 MongoDB 作為數(shù)據(jù)存儲(chǔ),這不是必須的,你可以把這部分代碼改成文件保存。另外 如果你只是想做數(shù)據(jù)分析,也可以拿我們抓取好導(dǎo)出的數(shù)據(jù) ,免除抓取之苦。(附帶在項(xiàng)目中,僅供學(xué)習(xí),請(qǐng)勿商用,否則后果自負(fù))
部分代碼(僅演示,完整代碼見(jiàn)項(xiàng)目倉(cāng)庫(kù)):
抓取并保存
client = pymongo.MongoClient() db = client.chinamovies # 獲取或新建名為 chinamovies 的 database collections = db.movies # 獲取或者新建了一個(gè)表 url_origin = "http://www.cbooo.cn/Mdata/getMdata_movie?area={area}&type=0&year=2018&initial=%E5%85%A8%E9%83%A8&pIndex={page}" url = url_origin.format(area=area, page=page) req = requests.get(url, headers=headers) data = req.json() collections.insert_many(data["pData"])
獲取豆瓣信息
url_api = "https://api.douban.com/v2/movie/search?q={}".format(moviename) req = requests.get(url_api, headers=headers) data_total = req.json()["subjects"] if not data_total: print("你搜索的不存在:", moviename) else: print(data_total[0])
計(jì)算影人參演票房總和
for i in col_casts.find(): total_box = 0 for j in i["movie_id"]: movie = collections_detail.find_one({"id": j}) if movie["boxoffice"]: total_box += int(movie["boxoffice"]) col_casts.update_one({"_id": i["_id"]}, {"$set": {"total_box": total_box}}, upsert=True)
輸出票房/評(píng)分分布散點(diǎn)圖
scatter = Scatter("電影評(píng)分-票房") total_num = 0 for i in genre: total_num += len(genre[i]["rate"]) scatter.add(i, genre[i]["boxoffice"], genre[i]["rate"], **other_setting, extra_name=genre[i]["title"], xaxis_name="票房(億)", yaxis_name="評(píng)分", yaxis_name_gap=20,yaxis_min=2, symbol_size=5, label_formatter="{c}", is_label_emphasis=True, is_toolbox_show=False) scatter.render("電影評(píng)分-票房.html")
查看交互圖表和代碼地址,請(qǐng)?jiān)诠娞?hào)( Crossin的編程教室 )回復(fù)關(guān)鍵字 票房
════
其他文章及回答:
學(xué)編程:如何自學(xué)Python | 新手引導(dǎo) | 一圖學(xué)Python
開(kāi)發(fā)案例:智能防擋彈幕 | 紅包提醒 | 流浪地球
歡迎搜索及關(guān)注: Crossin的編程教室
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43567.html
摘要:據(jù)說(shuō)此部之后,不少影迷熟知的角色演員就要離開(kāi)漫威世界的熒幕了。換句話說(shuō)用數(shù)據(jù)說(shuō)話,誰(shuí)才是漫威宇宙中著墨最多的人物我之前做了個(gè)小調(diào)查僅就我這邊的采樣來(lái)看,鋼鐵俠在國(guó)內(nèi)是無(wú)法撼動(dòng)的人氣王。 復(fù)聯(lián)4上映了!這次比美國(guó)還早了兩天。當(dāng)然,我還沒(méi)看,不會(huì)給你們劇透,當(dāng)然也不想不劇透。 這一部不僅是滅霸這一線劇情的結(jié)局,也被認(rèn)為漫威第三階段的收官之作。據(jù)說(shuō)此部之后,不少影迷熟知的角色(演員)就要離開(kāi)...
閱讀 1190·2021-11-23 10:05
閱讀 1839·2021-11-12 10:36
閱讀 1886·2019-08-30 15:56
閱讀 1714·2019-08-29 12:32
閱讀 3072·2019-08-28 18:04
閱讀 3457·2019-08-26 12:17
閱讀 2530·2019-08-26 11:35
閱讀 1280·2019-08-23 15:11