對LOL游戲數據集進行可視化分析


一、理解數據

1、采集數據

本數據集來源於https://tianchi.aliyun.com/dataset/dataDetail?dataId=90273。

本數據集描述了LOL游戲相關信息,共包含51000條數據,共61個字段。下面是該數據集中包含的字段以及對各字段的解釋:

gameId(游戲編號)

creationTime(創建時間)

gameDuration(游戲持續時間)

seasonId(賽季編號)

winner(獲勝者)(1 =團隊1,2 =團隊2)

First blood,  tower,  inhibitor, Baron,  dragon and Rift Herald:一血,一塔,水晶,第一條納什男爵,大龍,峽谷先鋒 (1 = 團隊1, 2 = 團隊2, 0 = 無)

Champions and summoner spells for each team (Stored as Riot's champion and summoner spell IDs):每只隊伍選擇的英雄和召喚術(用英雄和召喚師技能編號表示)

The number of tower, inhibitor, Baron, dragon and Rift Herald kills each team has:塔,水晶,男爵,大龍和峽谷先鋒擊殺數

The 5 bans of each team (Again, champion IDs are used):每個隊伍的禁用英雄(英雄編號表示)

 2、導入數據

import pandas as pd

df=pd.read_csv("games.csv")

3、查看數據集信息

print(df)

df.shape    //查看數據集大小

 二、數據清洗

1、查找缺失值

數據集中的信息太多,所以先計算所有缺失值總和,如果缺失值過多再進一步決定如何處理每一列的缺失值

none_number = sum(df.isnull().sum())  //查看缺失值總和
print(none_number)

 幸運的是從結果來看數據集很完整,沒有任何缺失值。

2、查看數據類型

 我們繼續往下處理,現在來看一看數據集中的數據類型都有哪些。

print(df.dtypes.value_counts())

 表明該數據集中數據都為int型

3、轉換類型

為了使結果更清晰,將gameDuration更改為以分鍾為單位

df['gameDuration'] =df['gameDuration'].map(lambda x: x/60)
print(df)

轉化后的結果:

可以看見游戲持續時間 (gameDuration)已經轉化為分鍾為單位了。

三、數據分析及可視化

1、查看雙方勝率

在winner列中,統計1和2出現的次數,化成餅狀圖,即為1隊和2隊的勝率。

代碼如下:

trace0=go.Pie(labels=df['winner'].value_counts().index,values=df['winner'].value_counts().values,
              hole=0.5,opacity=0.9,marker=dict(line=dict(color='white',width=1.3)))
layout=go.Layout()
data=[trace0]
fig=go.Figure(data,layout)
py.offline.plot(fig,filename='C:/Users/Sun Tianwen/Desktop/整體獲勝情況分布.html')

生成的餅狀圖如下:

 

 

 

 從結果來看,1隊獲勝26077次,二隊獲勝25413次,兩隊的勝率相近,符合游戲的公平性。

 2、游戲時長分布

使用探索性分析工具dtale進行探究

代碼如下:

import dtale
dtale.show(df, ignore_duplicate=True)

 點擊gameDuration后可以看見游戲時長的相關數據,如圖所示

圖中可以看出最短游戲時長為三分鍾(有人掛機時,游戲三分鍾允許投票重開),最長的游戲時長為78分鍾,平均游戲時長30分鍾。 

直方圖:

 

 細分

可以看出來游戲的時長主要分布在20到40分鍾。

英雄聯盟在15和20分鍾時開放投降選擇(15分鍾投降需要全票通過,20分鍾投降需要四票通過),因此圖中可以看出時長為15分鍾和20分鍾的場數顯著多於旁邊的時長對應場數,可以看出有很多玩家選擇15分鍾投降或者20分鍾投降。

 3、一血對獲勝的影響

plot_bar_horizontal(input_col='firstBlood', target_col='winner', title_name='一血對獲勝的影響')  

獲得一血的隊伍勝率相對較高,在第一隊的游戲中,首先獲得一血時的勝率為59.48%,相較未獲得一血的比賽高18%。在第二隊的游戲中,獲得一血時的勝率為58.72%,相較未獲得一血的游戲高18%。

4、摧毀第一個水晶對獲勝的影響

plot_bar_horizontal(input_col='firstInhibitor', target_col='winner', title_name='摧毀第一個水晶對獲勝的影響')     

 

 在游戲中拿到第一座水晶塔的隊伍91%的情況下可以獲勝,這一點在某種程度上是可以預見的,因為首先摧毀水晶塔代表隊伍已經積累的足夠的優勢,而且水晶塔力量很強大,並且更具有價值。

 5、擊殺第一條男爵對獲勝的影響

plot_bar_horizontal(input_col='firstBaron', target_col='winner', title_name='擊殺第一條男爵對獲勝影響')

 

 統計數據顯示,在游戲中擊殺第一條男爵有80%的勝率。

6、擊殺第一條大龍對游戲的影響

plot_bar_horizontal(input_col='firstDragon', target_col='winner', title_name='擊殺第一條大龍對獲勝的影響'

 

 在第一個隊伍中,首先擊殺第一條大龍的隊伍勝率在68.6%,相較未取得優先的比賽勝率高36%。

7、皮爾遜相關性

 

 四、主要結論

1、游戲雙方的勝率基本相同,比較公平。

2、游戲的時間主要集中在25到35分鍾,玩家不會因為時間太短而覺得無聊,也不會因為時間過長而疲勞。

3、獲得一血的隊伍勝率提高了18%,因此游戲前期想要獲勝,不僅要爭取獲得一血,還要避免被擊殺導致送出一血。

4、摧毀第一座水晶的隊伍勝率高達91%,同時擊殺第一條男爵和大龍的勝率分別為80%和68%。

5、通過以上分析,影響隊伍勝負的因素有很多,其中摧毀第一座水晶和擊殺第一條男爵能顯著提升勝率。

 

------------恢復內容結束------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM