《權力的遊戲》探索性分析
一:簡介
《權力的遊戲》(Game of Thrones),是美國HBO電視網製作推出的一部中世紀史詩奇幻題材的電視劇。該劇改編自美國作家喬治·R·R·馬丁的奇幻小說《冰與火之歌》系列。該劇成功塑造成千上萬形象飽滿的人物角色、怪誕獨特充滿想像的風土人情,其空間之完整、細節之豐富、敘事之恣意讓人感嘆!現在讓我們用數據分析的方式看一看這個殘酷的世界!!(本文所使用的數據集來自Kaggle網站,使用Python進行分析,當然你完全可以用R!!)
二:數據集介紹
該數據集包含了三個CSV文件,分別是:battles.csv,character-deaths.csv和character-predictions.csv。現分別介紹如下:
- battles.csv:《權利的遊戲》中所有的戰爭。
- character-deaths.csv:人物死亡數據集。
- character-predictions.csv:人物命運預測數據集。
在每一個CSV數據裡面都包含了大量的變數,讀懂這些變數名所代表的含義非常有必要。例如:battles.csv中的year變數代表戰爭發生的時間,battle_type代表戰役類型,有伏擊戰,圍攻戰,突襲戰等。
三:導入所需模塊並載入數據集
import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib as mplimport matplotlib.pyplot as pltfrom collections import Counterimport matplotlib.patches as mpatchessns.set_style("white")
設置繪圖風格(本人電腦不能在圖中添加中文字元):
plt.rcParams["axes.labelsize"] = 16.plt.rcParams["xtick.labelsize"] = 14.plt.rcParams["ytick.labelsize"] = 14.plt.rcParams["legend.fontsize"] = 12.plt.rcParams["figure.figsize"] = [15., 6.]
導入數據集:
battles = pd.read_csv("C:/Users/WaJueJiPrince/Desktop/Throne/game-of-thrones/battles.csv")character_deaths = pd.read_csv("C:/Users/WaJueJiPrince/Desktop/Throne/game-of-thrones/character-deaths.csv")character_predictions = pd.read_csv("C:/Users/WaJueJiPrince/Desktop/Throne/game-of-thrones/character-predictions.csv")
四:數據探索性分析
- 那個區域擁有最多的戰爭
battles["region"].value_counts().plot(kind="barh",rot=45)plt.show()
- 戰爭類型的比較
battles["battle_type"].value_counts().plot(kind="bar",rot=0)plt.show()
可以看出對陣戰最多,攻城戰次之
- 那位國王好戰呢?!!
battles["attacker_king"].value_counts().plot(kind="bar",rot=0)plt.show()
- 那位國王被攻擊最多呢?!
battles["defender_king"].value_counts().plot(kind="barh",rot=0)plt.show()
- 主要人物的死亡與被俘事件/根據年分組
p = battles.groupby("year").sum(axis=0)[["major_death", "major_capture"]].plot.bar(rot = 0)p.set(xlabel = "year", ylabel = "No. of Death/Capture Events", ylim = (0, 9)), p.legend(["Major Deaths", "Major Captures"])plt.show()
- 軍隊實力對於戰爭結果的影響
data = battles[["attacker_size", "defender_size", "attacker_outcome"]].dropna(axis=0,how="any")colors = ["red" if x == "win" else "blue" for x in data.attacker_outcome.values]data.plot.scatter("attacker_size", "defender_size", c = colors, s = 100, lw = 2.)plt.show()
藍色代表進攻方失敗,圖中右下角以少勝多,不知道這場戰役是怎麼打的??
- 不同國王的軍隊裡面有多少指揮官,紅色線代表均值,五角星代表異常值
meanlineprops = dict(linestyle="--", linewidth=2.5, color="red")flierprops = dict(marker="*", markerfacecolor="red", markersize=12,linestyle="none")p = sns.boxplot("attacker_king", "att_comm_count", data = battles,showmeans=True, meanline= True,linewidth=2,meanprops=meanlineprops,flierprops=flierprops)p.set(xlabel = "No. of Attacker Commanders", ylabel = "Attacker King")plt.show()
- 相關性可視化
主要可視化的是character-deaths.csv數據集和character-predictions.csv數據集。
#改變列名為name->Name,方便後面鏈接兩張數據框character_predictions.rename(columns={"name":"Name"},inplace=True)#通過name鏈接兩個表twoDF = pd.merge(character_deaths,character_predictions,on="Name")#修復明顯的離群值twoDF.age[186] = 20
去除非數值的行:
numb = twoDF[twoDF.columns[twoDF.dtypes!="O"]];#填充缺失值numb = numb.fillna(-100)
可視化:
f, ax = plt.subplots(figsize=(25, 24))plt.title("Pearson Correlation of The Game of Thrones")sns.heatmap(numb.astype(float).corr(),annot=True)plt.show()
(如果圖片看不清,請在新標籤中打開!!)
從相關性圖中可以看到一些符合「感覺」的關係,比如《權利的遊戲》與《冰與火之歌》第一冊的相關係數達0.86。
五:結尾
本文旨在拋磚引玉!因為我從未看過《權力的遊戲》!(嚴格來說看過開頭大概20分鐘吧!)。在分析的時候「深感無力」,因為數據分析本來就是建立在對業務或者項目熟悉的基礎上!所以本文的分析嚴重欠缺美劇知識!分析不足之處還請見諒!!!
關於作者:
- 姓名:麥艷濤
- 網名:挖掘機小王子
- 個人網站:挖掘機小王子
- 微信:Gorgon---Medusa
- QQ郵箱:WaJueJiPrince@qq.com
- 個人簡介:數據分析愛好者
轉載請註明出處:https://zhuanlan.zhihu.com/p/28801607/
推薦閱讀:
※Learn R | 數據預處理之dplyr包
※快播CEO王欣快出獄了,當年舉報他的那個人面臨的是?
※信息圖表高仿——R語言仿一財經典線條比較圖
※搞懂5種數據可視化方法,勝任90%熱門信息圖設計