冰与火之歌-五王之战(优达数据分析进阶项目)
五王之戰(zhàn)分析 - 冰與火之歌
簡介
五王之戰(zhàn)(War of the Five Kings)是著名嚴(yán)肅奇幻小說《冰與火之歌》中的著名內(nèi)戰(zhàn)。這是一場規(guī)模空前、波及七大王國的內(nèi)亂。顧名思義,前后共有五人在戰(zhàn)爭中稱王:喬佛里、史坦尼斯、藍(lán)禮均聲稱自己是鐵王座的合法繼承人。除此之外,羅柏·史塔克被北境眾封臣推選為北境之王,巴隆·葛雷喬伊亦再度掀起獨(dú)立大旗,欲擺脫鐵王座的統(tǒng)治,自稱為鐵群島之王。
本數(shù)據(jù)集(battles.csv)包含了五王之戰(zhàn)期間的戰(zhàn)爭,它是所有戰(zhàn)斗的大集合。該數(shù)據(jù)是Kaggle中Game of Thrones的一部分。
數(shù)據(jù)中的變量含義解釋:
name: 戰(zhàn)爭的名稱,字符變量。 year: 戰(zhàn)爭發(fā)生的年份,數(shù)值變量。 battle_number: 本數(shù)據(jù)中的unique id,對應(yīng)每一場獨(dú)立的戰(zhàn)役,數(shù)值變量。 attacker_king: 攻擊方的國王,"/"表示了國王的更換。例如:"Joffrey/Tommen Baratheon"意味著Tomen Baratheon繼承了Joffrey的王位,分類變量。 defender_king: 防守方的國王,分類變量。 attacker_1: 攻擊方將領(lǐng),字符變量。 attacker_2: 攻擊方將領(lǐng),字符變量。 attacker_3: 攻擊方將領(lǐng),字符變量。 attacker_4: 攻擊方將領(lǐng),字符變量。 defender_1: 防守方將領(lǐng),字符變量。 defender_2: 防守方將領(lǐng),字符變量。 defender_3: 防守方將領(lǐng),字符變量。 defender_4: 防守方將領(lǐng),字符變量。 attacker_outcome: 從攻擊方角度來看的戰(zhàn)爭結(jié)果,分別有:win, loss, draw,分類變量。 battle_type: 戰(zhàn)爭的類別。pitched_battle: 雙方軍隊(duì)在一個(gè)地點(diǎn)相遇并戰(zhàn)斗,這也是最基本的戰(zhàn)爭類別;ambush: 以隱身或詭計(jì)為主要攻擊手段的戰(zhàn)爭;siege: 陣地戰(zhàn);razing: 對未設(shè)防位置的攻擊。分類變量。 major_death: 是否有重要人物的死亡,二進(jìn)制變量。 major_capture: 是否有重要人物的被捕,二進(jìn)制變量。 attacker_size: 攻擊方力量的大小,并未對騎兵、步兵等士兵種類有所區(qū)分,數(shù)值變量。 defender_size: 防守方力量的大小,并未對騎兵、步兵等士兵種類有所區(qū)分,數(shù)值變量。 attacker_commander: 攻擊方的主要指揮官。指揮官的名字中并沒有包含頭銜,不同的指揮官名字用逗號隔開,字符變量。 defender_commander: 防守方的主要指揮官。指揮官的名字中并沒有包含頭銜,不同的指揮官名字用逗號隔開,字符變量。 summer: 戰(zhàn)爭是否發(fā)生于夏天,二進(jìn)制變量。 location: 戰(zhàn)爭發(fā)生的地點(diǎn),字符變量。 region: 戰(zhàn)爭發(fā)生的地域,包括:Beyond the Wall, The North, The Iron Islands, The Riverlands, The Vale of Arryn, The Westerlands, The Crownlands, The Reach, The Stormlands, Dorne,分類變量。 note: 注釋,字符變量。項(xiàng)目完成指南
本項(xiàng)目中的數(shù)據(jù)分析流程已經(jīng)給出,但代碼將完全由你自己進(jìn)行書寫,如果你無法完成本項(xiàng)目,說明你目前的能力并不足以完成 數(shù)據(jù)分析(進(jìn)階)納米學(xué)位,建議先進(jìn)行 數(shù)據(jù)分析(入門)納米學(xué)位的學(xué)習(xí),掌握進(jìn)階課程的先修知識。
對于數(shù)據(jù)分析過程的記錄也是數(shù)據(jù)分析報(bào)告的一個(gè)重要部分,你可以自己在需要的位置插入Markdown cell,記錄你在數(shù)據(jù)分析中的關(guān)鍵步驟和推理過程。比如:數(shù)據(jù)有什么樣的特點(diǎn),統(tǒng)計(jì)數(shù)據(jù)的含義是什么,你從可視化中可以得出什么結(jié)論,下一步分析是什么,為什么執(zhí)行這種分析。如果你無法做到這一點(diǎn),你也無法通過本項(xiàng)目。
小貼士: 像這樣的引用部分旨在為學(xué)員提供實(shí)用指導(dǎo),幫助學(xué)員了解并使用 Jupyter notebook
提出問題
在此項(xiàng)目中,你將以一名數(shù)據(jù)分析師的身份執(zhí)行數(shù)據(jù)的探索性分析。你將了解數(shù)據(jù)分析過程的基本流程。在你分析數(shù)據(jù)之前,請先思考幾個(gè)你需要理解的關(guān)于這些戰(zhàn)斗的問題,例如,哪一個(gè)區(qū)域發(fā)生了最多的戰(zhàn)爭?哪一個(gè)國王獲得了最多的勝利?戰(zhàn)爭的勝利與否受那些關(guān)鍵因素的影響?
問題:請寫下你感興趣的問題,請確保這些問題能夠由現(xiàn)有的數(shù)據(jù)進(jìn)行回答。
(為了確保學(xué)習(xí)的效果,請確保你的數(shù)據(jù)分析報(bào)告中能夠包含2幅可視化和1個(gè)相關(guān)性分析。)
答案:1.那個(gè)區(qū)域發(fā)生的戰(zhàn)爭最多;
2.哪個(gè)國王勝利的次數(shù)最多;
3.戰(zhàn)爭的勝利與否受哪些關(guān)鍵因素的影響。
在提出了問題之后,我們將開始導(dǎo)入數(shù)據(jù),并對數(shù)據(jù)進(jìn)行探索性分析,來回答上面提出的問題。
小貼士: 雙擊上框,文本就會(huì)發(fā)生變化,所有格式都會(huì)被清除,以便你編輯該文本塊。該文本塊是用 Markdown編寫的,該語言使用純文本語法,能用頁眉、鏈接、斜體等來規(guī)范文本格式。在納米學(xué)位課程中,你也會(huì)用到 Markdown。編輯后,可使用 Shift + Enter 或 Shift + Return 運(yùn)行上該框,使其呈現(xiàn)出編輯好的文本格式。
數(shù)據(jù)評估和清理
小貼士: 運(yùn)行代碼框的方法與編輯上方的 Markdown 框的格式類似,你只需點(diǎn)擊代碼框,按下鍵盤快捷鍵 Shift + Enter 或 Shift + Return ,或者你也可先選擇代碼框,然后點(diǎn)擊工具欄的 運(yùn)行 按鈕來運(yùn)行代碼。運(yùn)行代碼框時(shí),相應(yīng)單元左側(cè)的信息會(huì)出現(xiàn)星號,即 In [*]:,若代碼執(zhí)行完畢,星號則會(huì)變?yōu)槟硞€(gè)數(shù)字,如 In [1]。如果代碼運(yùn)行后有輸出結(jié)果,輸出將會(huì)以 Out [1]: 的形式出現(xiàn),其中的數(shù)字將與 “In” 中的數(shù)字相對應(yīng)。
# TO DO: load pacakges import pandas as pd import numpy as np % matplotlib inline # TO DO: load the dataset df = pd.read_csv("battles.csv") # 將折疊的數(shù)據(jù)展開 pd.set_option('display.max_columns',None) # 展開數(shù)據(jù)前五行進(jìn)行觀察 df.head()| Battle of the Golden Tooth | 298 | 1 | Joffrey/Tommen Baratheon | Robb Stark | Lannister | NaN | NaN | NaN | Tully | NaN | NaN | NaN | win | pitched battle | 1.0 | 0.0 | 15000.0 | 4000.0 | Jaime Lannister | Clement Piper, Vance | 1.0 | Golden Tooth | The Westerlands | NaN |
| Battle at the Mummer's Ford | 298 | 2 | Joffrey/Tommen Baratheon | Robb Stark | Lannister | NaN | NaN | NaN | Baratheon | NaN | NaN | NaN | win | ambush | 1.0 | 0.0 | NaN | 120.0 | Gregor Clegane | Beric Dondarrion | 1.0 | Mummer's Ford | The Riverlands | NaN |
| Battle of Riverrun | 298 | 3 | Joffrey/Tommen Baratheon | Robb Stark | Lannister | NaN | NaN | NaN | Tully | NaN | NaN | NaN | win | pitched battle | 0.0 | 1.0 | 15000.0 | 10000.0 | Jaime Lannister, Andros Brax | Edmure Tully, Tytos Blackwood | 1.0 | Riverrun | The Riverlands | NaN |
| Battle of the Green Fork | 298 | 4 | Robb Stark | Joffrey/Tommen Baratheon | Stark | NaN | NaN | NaN | Lannister | NaN | NaN | NaN | loss | pitched battle | 1.0 | 1.0 | 18000.0 | 20000.0 | Roose Bolton, Wylis Manderly, Medger Cerwyn, H... | Tywin Lannister, Gregor Clegane, Kevan Lannist... | 1.0 | Green Fork | The Riverlands | NaN |
| Battle of the Whispering Wood | 298 | 5 | Robb Stark | Joffrey/Tommen Baratheon | Stark | Tully | NaN | NaN | Lannister | NaN | NaN | NaN | win | ambush | 1.0 | 1.0 | 1875.0 | 6000.0 | Robb Stark, Brynden Tully | Jaime Lannister | 1.0 | Whispering Wood | The Riverlands | NaN |
數(shù)據(jù)探索分析
# In exploratory data analysis, please make sure of using statistics and visualizations ## 統(tǒng)計(jì)各個(gè)區(qū)域的戰(zhàn)爭次數(shù) df["region"].value_counts().plot(kind = "bar",colors = ["r","gray","gray","gray","gray","gray","gray"]) C:\Users\15004\Anaconda3\lib\site-packages\pandas\plotting\_core.py:194: UserWarning: 'colors' is being deprecated. Please use 'color'instead of 'colors'warnings.warn(("'colors' is being deprecated. Please use 'color'"<matplotlib.axes._subplots.AxesSubplot at 0x1dae9de3b00>在數(shù)據(jù)的探索性分析中,請確保你對數(shù)據(jù)分析中的關(guān)鍵步驟和推理過程進(jìn)行了記錄。你可以自己插入code cell和markdown cell來組織你的報(bào)告。
#for i, v in enumerate(df.columns):# print(i, v) ## 為了節(jié)省運(yùn)行時(shí)間,我們選擇“attacker_king”,"attacker_outcome"與"battle_type"字段進(jìn)行統(tǒng)計(jì) df[["attacker_king","attacker_outcome","battle_type"]]| Joffrey/Tommen Baratheon | win | pitched battle |
| Joffrey/Tommen Baratheon | win | ambush |
| Joffrey/Tommen Baratheon | win | pitched battle |
| Robb Stark | loss | pitched battle |
| Robb Stark | win | ambush |
| Robb Stark | win | ambush |
| Joffrey/Tommen Baratheon | win | pitched battle |
| Balon/Euron Greyjoy | win | pitched battle |
| Balon/Euron Greyjoy | win | siege |
| Balon/Euron Greyjoy | win | ambush |
| Robb Stark | win | pitched battle |
| Balon/Euron Greyjoy | win | ambush |
| Balon/Euron Greyjoy | win | siege |
| Joffrey/Tommen Baratheon | win | ambush |
| Robb Stark | win | ambush |
| Stannis Baratheon | win | siege |
| Joffrey/Tommen Baratheon | loss | pitched battle |
| Robb Stark | win | ambush |
| Robb Stark | win | ambush |
| Stannis Baratheon | loss | pitched battle |
| Robb Stark | win | siege |
| Robb Stark | loss | pitched battle |
| NaN | win | pitched battle |
| Joffrey/Tommen Baratheon | win | pitched battle |
| Joffrey/Tommen Baratheon | win | pitched battle |
| Joffrey/Tommen Baratheon | win | ambush |
| Robb Stark | win | siege |
| Stannis Baratheon | loss | siege |
| Joffrey/Tommen Baratheon | win | siege |
| NaN | win | razing |
| Stannis Baratheon | win | pitched battle |
| Balon/Euron Greyjoy | win | pitched battle |
| Balon/Euron Greyjoy | win | razing |
| Joffrey/Tommen Baratheon | win | siege |
| Joffrey/Tommen Baratheon | win | siege |
| Joffrey/Tommen Baratheon | win | siege |
| Joffrey/Tommen Baratheon | win | siege |
| Stannis Baratheon | NaN | NaN |
得出結(jié)論
問題:上面的分析能夠回答你提出的問題?通過這些分析你能夠得出哪些結(jié)論?
答案:1.從數(shù)據(jù)探索第一階段得出的數(shù)據(jù),可以看出,在The Riverlands地區(qū)發(fā)生的戰(zhàn)爭次數(shù)最多。 2.從攻擊方的角度來講,Joffrey/Tommen Baratheon(Tomen Baratheon繼承了Joffrey的王位)獲勝次數(shù)最多。 3.從戰(zhàn)爭類型來看,采用ambusy與siege類型的戰(zhàn)役獲勝次數(shù)要多于其他兩種。從現(xiàn)有數(shù)據(jù)量來看的話,在戰(zhàn)爭中運(yùn)用這兩種類型獲勝的可能行要更大。是否采用這兩種類型,與能否獲勝有一定的相關(guān)性。
反思
問題:在你的分析和總結(jié)過程中是否存在邏輯嚴(yán)謹(jǐn)。是否有改進(jìn)的空間? 你可以從下面的一些角度進(jìn)行思考:
答案:1.現(xiàn)有數(shù)據(jù)量不是很完整。 2.由于統(tǒng)計(jì)需要,對attacker_king列中的空值進(jìn)行了2行刪除操作,對結(jié)論的影響很小。 3.在思考有戰(zhàn)爭獲勝有關(guān)的因素時(shí),如果能再加一點(diǎn)天氣的因素在里邊就更完美了。 4.沒有混淆相關(guān)性與因果性,在未通過統(tǒng)計(jì)學(xué)驗(yàn)證及機(jī)器學(xué)習(xí)的支持下,只能初步得出:是否采用ambusy與siege類型,與能否獲勝有一定的相關(guān)性。
恭喜你完成了此項(xiàng)目!這只是數(shù)據(jù)分析過程的一個(gè)樣本:從生成問題、整理數(shù)據(jù)、探索數(shù)據(jù)到得出結(jié)論。在數(shù)據(jù)分析(進(jìn)階)納米學(xué)位中,你將會(huì)學(xué)到更多高級的數(shù)據(jù)分析方法和技術(shù),如果你感興趣的話,我們鼓勵(lì)你繼續(xù)學(xué)習(xí)后續(xù)的課程,掌握更多的數(shù)據(jù)分析的高級技能!
若想與他人分享我們的分析結(jié)果,除了向他們提供 jupyter Notebook (.ipynb) 文件的副本外,我們還可以將 Notebook 輸出導(dǎo)出為一種甚至那些未安裝 Python 的人都能打開的形式。從左上方的“文件”菜單,前往“下載為”子菜單。然后你可以選擇一個(gè)可以更普遍查看的格式,例如 HTML (.html) 。你可能需要額外軟件包或軟件來執(zhí)行這些導(dǎo)出。
總結(jié)
以上是生活随笔為你收集整理的冰与火之歌-五王之战(优达数据分析进阶项目)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冰与火之歌
- 下一篇: Poly-encoder