摘要:上個(gè)禮拜權(quán)力的游戲第八季放出大結(jié)局,最終的結(jié)果布蘭登上了鐵王座。第二位臨冬城史塔克家族的城堡。第二位是什么都不懂的雪諾。第三位是白手起家最后又被騙的龍媽。
上個(gè)禮拜《權(quán)力的游戲第八季》放出大結(jié)局,最終的結(jié)果「布蘭」登上了鐵王座。
這個(gè)結(jié)果確實(shí)是大家沒(méi)有想到的。
原本想著如果不是「龍媽」,那么就該是「雪諾」。
怎么就輪到「布蘭」了呢。
一個(gè)可以隨時(shí)隨地監(jiān)視別人的人坐上了鐵王座,細(xì)思極恐...
《權(quán)力的游戲》系列從2011年4月17日開(kāi)播直到最后一集5月19日,一共歷時(shí)九年,終于落下了帷幕。
也算是陪伴了一些人的青春,看看上圖里的「小布蘭」和長(zhǎng)大后的「布蘭」。
時(shí)光荏苒,歲月如梭,有那么點(diǎn)點(diǎn)哈利波特的感覺(jué)(同樣也是好多年)。
這次找到了一些權(quán)游的數(shù)據(jù)集,針對(duì)這些數(shù)據(jù)來(lái)做一些分析。
主要有人物信息,字幕信息以及屏幕時(shí)間信息。
這些數(shù)據(jù)由GitHub上的一位大佬整理的。
殺手榜
數(shù)據(jù)是JSON文件,都是別人已經(jīng)整理好的。
如下是人物信息,包含姓名、家族、人物圖片、兄弟姐妹等。
這里只看誰(shuí)干掉的人最多,其余大伙可以自行探索。
讀取文件后,進(jìn)行排序,代碼如下:
importjson
讀取人物信息文件withopen("characters.json","r")asload_f:
load_dict = json.load(load_f)
characters = load_dict["characters"]
計(jì)算人物的殺人數(shù)item = {}
forcharacterincharacters:
if"killed"incharacter.keys():
item[character["characterName"]] = len(character["killed"])
排序top15 = sorted(item.items(), key=lambdax: x[1], reverse=True)[:15]
print(top15,"nn")
獲取殺手榜前15位,以及是哪位被領(lǐng)盒飯foriintop15:
forcharacterincharacters:
ifcharacter["characterName"] == i[]:
print(i[1], i[], character["killed"],"nn")
結(jié)果如下:
看一下前四位狠人,「龍媽」「獵狗」「雪諾」「二丫」。
「獵狗」大叔看似人狠話不多,但是他的內(nèi)心還是很正義的。
其中「二丫」殺了「夜王」,這一點(diǎn)也沒(méi)毛病。
就是「雪諾」殺「龍媽」就有點(diǎn)那個(gè)啥了,上一秒我們還是“朋友”,下一秒就GG了。
發(fā)言榜
下面這個(gè)數(shù)據(jù)是每集的臺(tái)詞,概況如下:
通過(guò)遍歷字典信息,獲取人物發(fā)言頻次。
importjson
讀取人物信息文件withopen("script-bag-of-words.json","r", errors="ignore")asload_f:
load_dict = json.load(load_f)
對(duì)人物人名進(jìn)行統(tǒng)計(jì)names = []
foriinload_dict:
forjini["text"]:
name = j["name"]
ifnamenotinnames:
names.append(name)
print(names) 獲取人物說(shuō)話次數(shù)item = {}
fornameinnames:
num =
foriinload_dict:
forjini["text"]:
ifj["name"] == name:
num +=1
item[name] = num
排序top15 = sorted(item.items(), key=lambdax: x[1], reverse=True)[:15]
foriintop15:
print(i[1], i[])
結(jié)果如下:
「小惡魔」「雪諾」「龍媽」「瑟曦」「詹姆」排行前五。
「提利昂」曾經(jīng)說(shuō)過(guò)“大腦需要書才能變得敏銳,就像劍需要磨刀石一樣。”
果然作為讀書多的,話也就多了。
不然就只能一句句「俺也一樣」了,弒君者「詹姆」,「小惡魔」的哥哥。
雖然前期做了不少壞事,不過(guò)最后改邪歸正,真的實(shí)力圈粉。
出場(chǎng)時(shí)間
對(duì)場(chǎng)景出現(xiàn)時(shí)間進(jìn)行分析,數(shù)據(jù)概況如下:
對(duì)數(shù)據(jù)進(jìn)行處理,代碼如下:
importjson
fromdatetimeimportdatetime
讀取每集的出場(chǎng)信息withopen("episodes.json","r")asload_f:
load_dict = json.load(load_f)
episodes = load_dict["episodes"]
forepisodeinepisodes:
獲取每集的片段信息forsceneinepisode["scenes"]:
處理時(shí)間數(shù)據(jù)start = datetime.strptime(scene["sceneStart"],"%H:%M:%S")
end = datetime.strptime(scene["sceneEnd"],"%H:%M:%S")
國(guó)家withopen("got_1.csv","a+")asf:
f.write(scene["location"] +","+ str((end - start).seconds) +","+ str(episode["seasonNum"]) +","+ str(episode["episodeNum"]) +"n")
城市if"subLocation"inscene.keys():
withopen("got_2.csv","a+")asf:
f.write(scene["subLocation"] +","+ str((end - start).seconds) +","+ str(episode["seasonNum"]) +","+ str(episode["episodeNum"]) +"n")
人物forpeopleinscene["characters"]:
withopen("got_3.csv","a+")asf:
f.write(people["name"] +","+ str((end - start).seconds) +","+ str(episode["seasonNum"]) +","+ str(episode["episodeNum"]) +"n")
最后得到三個(gè)文件,分別為國(guó)家、城市及人物的出現(xiàn)時(shí)間。
這里不對(duì)每一季進(jìn)行分析,那樣內(nèi)容太多了,有興趣的可以自己試試。
importpandasaspd
frompyechartsimportBar
讀取數(shù)據(jù)df = pd.read_csv("got_1.csv", header=None)
df = pd.read_csv("got_2.csv", header=None) df = pd.read_csv("got_3.csv", header=None) 匯總名稱names = []
fornameindf[]:
ifnamenotinnames:
names.append(name)
item = {}
fornameinnames:
nums = []
fornumindf[df[] == name][1]:
nums.append(num)
列表求和s = sum(nums)
時(shí)間轉(zhuǎn)換m, s = divmod(s,60)
h, m = divmod(m,60)
item[name] ="%02d:%02d:%02d"% (h, m, s)
出場(chǎng)時(shí)間前15位角色top15 = sorted(item.items(), key=lambdax: x[1], reverse=True)[:15]
foriintop15:
print(i[1], i[])
先看一下區(qū)域的時(shí)間分布結(jié)果:
第一王領(lǐng),第二北境。
下面是城市的屏幕時(shí)間情況。
第一位「君臨城」——七大王國(guó)的首都。
第二位「臨冬城」——史塔克家族的城堡。
最后是人物出現(xiàn)的屏幕時(shí)間:
第一位是國(guó)王之手「小惡魔」。
第二位是什么都不懂的「雪諾」。
第三位是白手起家最后又被騙的「龍媽」。
對(duì)每季的人物進(jìn)行統(tǒng)計(jì):
統(tǒng)計(jì)每季人物出場(chǎng)時(shí)間foriinrange(1,9):
name_1 = []
nums_1 = []
df1 = df[df[2] == i]
forjintop15:
num_1 = []
forkindf1[df1[] == j[]][1]:
num_1.append(k)
name_1.append(j[])
nums_1.append(sum(num_1))
print(i, name_1, nums_1)
defpeople_scenes():
"""
每季人物出現(xiàn)時(shí)間
"""
參數(shù)數(shù)據(jù)attr = ["提利昂","雪諾","龍媽","三傻","瑟曦","二丫","詹姆","莫爾蒙","戴佛斯","山姆","瓦里斯","席恩","布蕾妮","布蘭","獵狗"]
v1 = [4903,5323,4900,3608,4252,3655,2523,3650,,1918,2949,3270,,3115,2442]
v2 = [5257,2658,3037,2455,3021,3373,1363,1694,1879,1225,1594,2908,1869,1387,1445]
v3 = [4146,2620,2760,2369,2429,2612,2674,2561,1636,2074,1533,1605,2009,1768,1283]
v4 = [5480,3818,2490,3130,4694,2510,4269,1634,1021,2273,1332,1190,1536,1427,2328]
v5 = [4469,5066,3767,2919,3927,2770,1889,2998,1452,2742,876,1635,1163,,]
v6 = [2852,5527,2473,3848,2222,2294,2948,827,4101,1268,1424,1626,1749,2107,906]
v7 = [5849,7840,5773,3436,3426,2744,4074,4549,4417,1747,3072,2553,2313,1246,3657]
v8 = [8148,7513,6494,3940,1551,4357,3935,1740,3679,2871,3247,888,3817,3296,1827]
創(chuàng)建條形圖bar = Bar("權(quán)游人物出場(chǎng)時(shí)間分布", title_pos="center", title_top="18", width=800, height=400)
bar.add("第一季", attr, v1, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第二季", attr, v2, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第三季", attr, v3, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第四季", attr, v4, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第五季", attr, v5, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第六季", attr, v6, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第七季", attr, v7, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
bar.add("第八季", attr, v8, is_convert=True, xaxis_min=10, yaxis_label_textsize=12, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=False, is_legend_show=True, label_pos="right", legend_orient="vertical", legend_pos="80%", legend_top="30%", is_yaxis_inverse=True, is_splitline_show=False, is_stack=True)
生成圖表bar.render("權(quán)游人物出場(chǎng)時(shí)間分布.html")
people_scenes()
得到結(jié)果如下:
最后來(lái)看一下第一季的數(shù)據(jù):
defpeople_season(season, mes1, mes2):
"""
每季統(tǒng)計(jì)
"""
attr = mes1
v1 = mes2
bar ="bar"+ str(season)
bar = Bar("第"+ str(season) +"季人物出場(chǎng)時(shí)間分布", title_pos="center", title_top="18", width=800, height=400)
bar.add("", attr, v1, is_convert=True, xaxis_min=10, yaxis_label_textsize=8, is_yaxis_boundarygap=True, yaxis_interval=, is_label_show=True, is_legend_show=False, label_pos="right", is_yaxis_inverse=True, is_splitline_show=False)
bar.render("第"+ str(season) +"季人物出場(chǎng)時(shí)間分布.html")
遍歷每一季forseasoninrange(1,9):
df2 = df[df[2] == season]
foriindf2[]:
ifinotinnames:
names.append(i)
item = {}
對(duì)人物出現(xiàn)時(shí)間進(jìn)行統(tǒng)計(jì)forjinnames:
num_3 = []
forkindf2[df2[] == j][1]:
num_3.append(k)
item[j] = sum(num_3)
排序top15 = sorted(item.items(), key=lambdax: x[1], reverse=True)[:15]
print(top15)
name_2 = []
num_2 = []
對(duì)前15位進(jìn)行數(shù)據(jù)匯總forpintop15:
name_2.append(p[])
num_2.append(p[1])
print(season, name_2, num_2)
people_season(season, name_2, num_2)
結(jié)果如下:
有一半都領(lǐng)盒飯了,當(dāng)然也有堅(jiān)持到最后的。堅(jiān)持下來(lái)的,狼家的居多。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43921.html
摘要:數(shù)據(jù)庫(kù)文件已經(jīng)超過(guò)了了。復(fù)聯(lián)從開(kāi)始便是漫威宇宙各路超級(jí)英雄的集結(jié),到現(xiàn)在的第部,更是全英雄的匯聚。所以,滅霸出現(xiàn)的次數(shù)居然高于了鋼鐵俠。情感分析,又稱為意見(jiàn)挖掘傾向性分析等。 showImg(https://segmentfault.com/img/remote/1460000019095022); 作者 | 羅昭成責(zé)編 | 唐小引 《復(fù)聯(lián) 4》國(guó)內(nèi)上映第十天,程序員的江湖里開(kāi)始流傳這...
摘要:據(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)...
摘要:另外由于豆瓣上一些電影評(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)分、類型、演員等信息...
閱讀 4152·2023-04-26 02:40
閱讀 2655·2023-04-26 02:31
閱讀 2746·2021-11-15 18:08
閱讀 568·2021-11-12 10:36
閱讀 1425·2021-09-30 09:57
閱讀 5192·2021-09-22 15:31
閱讀 2626·2019-08-30 14:17
閱讀 1269·2019-08-30 12:58