程序員用Python分析徐崢,竟研究出《我不是葯神》30億票房真正秘訣!
前言
前段時間嚮往的生活第二季中,托尼何老師給山爭大叔洗頭那一幕,著實給節目賺足了笑點。
而最近徐崢憑藉《我不是葯神》在電影院也收了不少觀眾眼淚,在這部電影裡面他顛覆了當初囧系IP電影和心花路放的搞笑印象。對於現實主義的題材作品,電影本身的成功不僅在題材的選取上,更是因為監製寧浩徐崢、導演文牧野和其他主演的一起合作。
《港囧》發布時,山爭哥另闢蹊徑,在發布會上化身「徐布斯」用大數據分析《港囧》,把觀眾笑聲次數換算成票房收入。
所以在徐崢的獨特眼光中,什麼樣的題材、導演、演員才是他的青睞?本文用Python爬取數據、並用R語言進行數據可視化處理來了解這位才子。
數據爬取
考慮到只有幾百條數據,就簡單地寫了爬蟲腳本,得到徐崢合作過的演員、合作次數、演員被收藏數、合作的作品名、作品導演、作品類型、作品評分。Python代碼如下:
1#-*- coding: utf-8-*-
2from bs4 import BeautifulSoup
3import requests
4import pandas
5importtime
6newarry = []
7user_agent ="*******"
8headers = {"User_Agent": user_agent}
9foriinrange(15):
10gradeUrl ="https://movie.douban.com/celebrity/1274297/partners?start="+str(i*10)
11res = requests.get(gradeUrl, headers)
12soup = BeautifulSoup(res.content,"html.parser").find(class_="article")
13foriteminsoup.find_all(class_="partners item"):
14partner = item.select("a")[1].text
15times = item.select("li")[1].text
16collect_num = item.select("li")[2].text
17url_list = item.select("li")[1]
18forurlinurl_list.find_all("a"):
19each_page = requests.get(url.get("href"), headers)
20sub_res = BeautifulSoup(each_page.content,"html.parser")
21info = sub_res.find(id="wrapper")
22movie_name = info.select("span[property="v:itemreviewed"]")[].text
23print(movie_name)
24director = info.find(class_="attrs").select("a")[].text
25types =" ".join([style.textforstyleininfo.select("span[property="v:genre"]")])
26ifinfo.find(class_="ll rating_num") is None:
27rate =
28else:
29rate = info.find(class_="ll rating_num").text
30newarry.append({
31"partner": partner.split(" ")[],
32"time": times[5],
33"collect_num": collect_num,
34"movie_name": movie_name,
35"director": director,
36"types": types,
37"rating": rate
38})
39time.sleep(2)
40print(newarry)
41
42new_df = pandas.DataFrame(newarry, columns=["partner","time","collect_num","movie_name","director","types","rating"])
43new_df.to_excel("D:partner.xlsx")
44print(new_df)
數據分析
首先來看看徐崢出演的電影中,評分排前10的電影名,《我不是葯神》是徐崢目前評分最高的電影,這成績完全可以算國產片里的現象級了。
還有極限挑戰和嚮往的生活,徐崢作為臨時嘉賓的那期節目也得到了不錯的反響。
既然徐崢讓觀眾又是悲傷湧起、又是捧腹大笑,那麼看看他出演的作品中不同類型的評分情況,果然還是喜劇排名比較靠前,徐崢出演驚悚懸疑類的電影排名靠後,看來搞笑大叔的深刻印象,不能讓大家接受他出演驚悚片。徐崢去的真人秀和脫口秀節目,也在當期取得不錯的收視率和口碑。
接下來看看徐崢和哪些導演合作比較緊密?徐崢出演自己自導的電影有4次,山爭大哥完全沒放過自己當主演的機會,和寧浩導演合作4次,《瘋狂的石頭》《無人區》《心花路放》《瘋狂的賽車》這四部,都是不錯的電影,除開合作夥伴的關係,這應該也是徐崢選擇出演電影的原因。《我不是葯神》也是寧浩監製、文牧野導演。
再來看看合作導演的作品評分情況,圖a是評分排名前15的導演名字,圖b是評分排名後15的導演名字,徐崢在2002年黃蜀芹導演的《上海滄桑》中並不是主演,排名第二的任靜是《極限挑戰》的導演,徐崢參加過的當期節目取得了9.0的豆瓣評分,看來他真的很適合參加真人秀。
圖 a
圖 b
再看看徐崢合作過的演員情況,圖c是和徐崢合作過的演員作品平均評分排名前10的演員,圖d是作品平均評分排名後10的演員。合作最多的演員是黃渤,一共有9次的合作,《瘋狂的石頭》《瘋狂的賽車》《無人區》《心花路放》《泰囧》等作品都取得了不錯的票房和評分,但是《愛情呼叫轉移Ⅱ:愛情左右》只有5.2的評分,導致黃渤沒有在這前10里,而張藝興、孫紅雷、羅志祥只和徐崢合作過一期《極限挑戰》就9.0靠前了,看來平均值有時候真的會掩蓋重要的信息。
圖 c
圖 d
最後再看看徐崢囧系IP電影選角的演員人氣情況,將演員豆瓣上被收藏的次數作為人氣的測量,對比《港囧》《泰囧》《人在囧途》的演員人氣,看來《港囧》的失敗確實很大因素歸因為選角,人氣明顯低於《泰囧》。
最後再將陶虹的合作演員表爬取下來,看看夫妻二人在電影圈的社交網路關係,陶虹和徐崢的共同出鏡次數還挺多,合作過的電影和演員也不少,不過徐崢的出演次數更多,圈子更大,夫妻二人很和諧的搭配方式。
附上R語言的可視化代碼:
1library(dplyr)
2library(plyr)# 這個包裡面的count函數才能統計文本的個數
3library(tidyverse)
4library(ggplot2)
5library(readxl)
6library(xlsx)
7library(RColorBrewer)
8
9movie_data
10# 徐崢合作夥伴評分排名前10和後10的演員
11left_data
12attach(left_data)
13ave_rate
14ave_rate$rate
15detach(left_data)
16ave_rate
17col
18pbbPalette
19cbbPalette
20ggplot(data = head(ave_rate,10), aes(x= reorder(Group.1,rate,median),y= rate)) + ylim(,10) + geom_bar(stat="identity",fill=pbbPalette) +
21labs(title ="rating of moives",x="合作演員",y="平均評分")
22ggplot(data = tail(ave_rate,10), aes(x= reorder(Group.1,rate,median),y= rate)) + ylim(,10) + geom_bar(stat="identity",fill=pbbPalette) +
23labs(title ="rating of moives",x="合作演員",y="平均評分")
24
25# 合作的導演的作品評分
26attach(left_data)
27dir_rate
28dir_rate$rate
29detach(left_data)
30dir_rate
31ggplot(data = head(dir_rate,15), aes(x= reorder(Group.1,x,median),y=x)) + ylim(,10) + geom_bar(stat="identity",fill="steelblue") +
32labs(title ="rating of director",x="導演",y="平均評分") +
33theme(axis.text.x = element_text(size =8, family ="myFont", face ="bold", vjust =.5, hjust =.5, angle =45)) +
34geom_text(aes(label = rate, vjust = -.8, hjust =.5), show.legend = TRUE)
35ggplot(data = tail(dir_rate,15), aes(x= reorder(Group.1,x,median),y=x)) + ylim(,10) + geom_bar(stat="identity",fill="steelblue") +
36labs(title ="rating of director",x="導演",y="平均評分") +
37theme(axis.text.x = element_text(size =8, family ="myFont", face ="bold", vjust =.5, hjust =.5, angle =45)) +
38geom_text(aes(label = rate, vjust = -.8, hjust =.5), show.legend = TRUE)
39
40# 合作的導演次數
41attach(left_data)
42dir_time %select(movie_name,director)
43dir_time
44dir_table
45detach(left_data)
46dir_table
47ggplot(data = dir_table[dir_table$freq>=2,], aes(x= reorder(x,freq,median),y= freq)) + geom_bar(stat="identity",fill="steelblue") +
48labs(title ="times of director",x="導演",y="合作次數") +
49theme(axis.text.x = element_text(size =8, family ="myFont", face ="bold", vjust =.5, hjust =.5, angle =45)) +
50geom_text(aes(label = freq, vjust = -.8, hjust =.5), show.legend = TRUE)
51
52# 徐崢評分排名前10的電影名
53attach(left_data)
54top_movie
55detach(left_data)
56rank_moive
57ggplot(data = tail(rank_moive,10), aes(x= reorder(Group.1,x,median),y=x)) + ylim(,10) + geom_bar(stat="identity",fill=pbbPalette) +
58labs(title ="top10 moives",x="電影",y="評分") +
59theme(axis.text.x = element_text(size =8, family ="myFont", face ="bold",vjust =.7, hjust =.7, angle =45))
60
61# 囧字IP電影的演員人氣對比
62jiong
63jiong$collection
64cbbPalette
65ggplot(data = jiong, aes(x= movie_name,y= collection)) + geom_boxplot(fill=cbbPalette) +
66labs(title ="collection in the movie of jiong IP",x="演員",y="人氣")
67
68# 徐崢電影類型對比
69attach(left_data)
70agg_data %select(movie_name,types,rating)
71agg_data
72View(agg_data)
73detach(left_data)
74li = list("喜劇","真人秀","愛情","劇情","懸疑","脫口秀","犯罪","動作","驚悚","古裝","奇幻","動畫")
75type = c()
76ave_rating =c()
77for(i in li){
78type_moive
79ave = mean(as.double(type_moive$rating))
80type = c(type, i)
81ave_rating = c(ave_rating, ave)
82}
83type_rating
84pbbPalette
85ggplot(data = type_rating, aes(x= reorder(type,ave_rating,median),y= ave_rating)) + ylim(,10) + geom_bar(stat="identity",fill=pbbPalette) +
86labs(title ="rating of types",x="類型",y="平均評分") +
87theme(axis.text.x = element_text(size =8, family ="myFont", face ="bold", vjust =.5, hjust =.5, angle =45)) +
88geom_text(aes(label = round(ave_rating,1), vjust = -.8, hjust =.5, color ="red"), show.legend = TRUE)
89
90
91library(igraph)
92#載入數據框
93attach(movie_data)
94agg_data %select(par_name,time)
95detach(movie_data)
96agg_data
97nrow(agg_data)
98centre
99graph_data
100write.xlsx(graph_data,"D:\mydata.xlsx")
101all_data
102g
103# 徐崢的關係網路圖
104#生成圖片,大小是800*800px
105jpeg(filename="D:\GRAPH1.jpg",width=800,height=800,units="px")
106plot(g,
107vertex.size=2,#節點大小
108layout=layout.kamada.kawai,#布局方式
109vertex.shape="none",#不帶邊框
110vertex.label.cex=1,#節點字體大小
111vertex.label.color="#CC79A7",#節點字體顏色
112edge.arrow.size=.2)#連線的箭頭的大小
113#關閉圖形設備,將緩衝區中的數據寫入文件
114dev.off()
115
116# 徐崢和陶虹的關係網路圖
117# install.packages("RcolorBrewer")
118library(RColorBrewer)
119col
120V(g)$label.color
121attach(all_data)
122all_data
123n3 6,])
124n2 =3&time
125n1
126detach(all_data)
127edge_col
128V(g)$size=degree(g)/12
129jpeg(filename="D:\GRAPH2.jpg",width=1000,height=1000,units="px")
130plot(g, layout = layout.fruchterman.reingold,vertex.label.cex=1,edge.color=edge_col,edge.arrow.mode="-")
131dev.off()
聲明:本文為作者投稿,版權歸對方所有。
※程序員該敬畏每一行代碼?填好每一個坑才是!
※蘋果封殺加密貨幣!
TAG:CSDN |