1. 数据分析网首页
  2. 大数据
  3. 数据挖掘

《权力的游戏》探索性分析

让我们用数据分析的方式看一看这个残酷的世界

一:简介

《权力的游戏》(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 np
import pandas as pd
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from collections import Counter
import matplotlib.patches as mpatches
sns.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/

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

发表评论

登录后才能评论

联系我们

如有建议:>>给我留言

QR code