《權力的遊戲》探索性分析

一:簡介

《權力的遊戲》(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
  • 個人簡介:數據分析愛好者

轉載請註明出處:zhuanlan.zhihu.com/p/28


推薦閱讀:

Learn R | 數據預處理之dplyr包
快播CEO王欣快出獄了,當年舉報他的那個人面臨的是?
信息圖表高仿——R語言仿一財經典線條比較圖
搞懂5種數據可視化方法,勝任90%熱門信息圖設計

TAG:数据分析 | 权力的游戏美剧 | Python |