首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

权力的游戏探索性分析,带你领阅不一样的战争

一:简介

《权力的游戏》(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()

军队实力对于战争结果的影响

蓝色代表进攻方失败,图中右下角以少胜多,不知道这场战役是怎么打的??

不同国王的军队里面有多少指挥官,红色线代表均值,五角星代表异常值

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分钟吧!)。在分析的时候“深感无力”,因为数据分析本来就是建立在对业务或者项目熟悉的基础上!所以本文的分析严重欠缺美剧知识!分析不足之处还请见谅!!!

为你准备的Python学习交流群:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205A0U5XL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券