对LOL游戏数据集进行可视化分析

一、理解数据

1、采集数据

本数据集描述了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)

对LOL游戏数据集进行可视化分析

df.shape    //查看数据集大小

对LOL游戏数据集进行可视化分析

 二、数据清洗

1、查找缺失值

数据集中的信息太多,所以先计算所有缺失值总和,如果缺失值过多再进一步决定如何处理每一列的缺失值

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

对LOL游戏数据集进行可视化分析

 幸运的是从结果来看数据集很完整,没有任何缺失值。

2、查看数据类型

 我们继续往下处理,现在来看一看数据集中的数据类型都有哪些。

print(df.dtypes.value_counts())

对LOL游戏数据集进行可视化分析

 表明该数据集中数据都为int型

3、转换类型

为了使结果更清晰,将gameDuration更改为以分钟为单位

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

转化后的结果:

对LOL游戏数据集进行可视化分析

可以看见游戏持续时间 (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')

生成的饼状图如下:

 对LOL游戏数据集进行可视化分析

 

 

 从结果来看,1队获胜26077次,二队获胜25413次,两队的胜率相近,符合游戏的公平性。

 2、游戏时长分布

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

代码如下:

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

对LOL游戏数据集进行可视化分析

 点击gameDuration后可以看见游戏时长的相关数据,如图所示

对LOL游戏数据集进行可视化分析

 

 图中可以看出最短游戏时长为三分钟(有人挂机时,游戏三分钟允许投票重开),最长的游戏时长为78分钟,平均游戏时长30分钟。

从右侧的箱式图也可以看出来游戏的时长主要分布在25到35分钟。

 3、一血对获胜的影响

plot_bar_horizontal(input_col='firstBlood', target_col='winner', title_name='一血对获胜的影响')  

对LOL游戏数据集进行可视化分析

获得一血的队伍胜率相对较高,在第一队的游戏中,首先获得一血时的胜率为59.48%,相较未获得一血的比赛高18%。在第二队的游戏中,获得一血时的胜率为58.72%,相较未获得一血的游戏高18%。

4、摧毁第一个水晶对获胜的影响

plot_bar_horizontal(input_col='firstInhibitor', target_col='winner', title_name='摧毁第一个水晶对获胜的影响')     

对LOL游戏数据集进行可视化分析

 

 在游戏中拿到第一座水晶塔的队伍91%的情况下可以获胜,这一点在某种程度上是可以预见的,因为首先摧毁水晶塔代表队伍已经积累的足够的优势,而且水晶塔力量很强大,并且更具有价值。

 5、击杀第一条男爵对获胜的影响

plot_bar_horizontal(input_col='firstBaron', target_col='winner', title_name='击杀第一条男爵对获胜影响')

对LOL游戏数据集进行可视化分析

 

 统计数据显示,在游戏中击杀第一条男爵有80%的胜率。

6、击杀第一条大龙对游戏的影响

plot_bar_horizontal(input_col='firstDragon', target_col='winner', title_name='击杀第一条大龙对获胜的影响') 

对LOL游戏数据集进行可视化分析

 

 在第一个队伍中,首先击杀第一条大龙的队伍胜率在68.6%,相较未取得优先的比赛胜率高36%。

7、皮尔逊相关性

对LOL游戏数据集进行可视化分析

 

 四、主要结论

1、游戏双方的胜率基本相同,比较公平。

2、游戏的时间主要集中在25到35分钟,玩家不会因为时间太短而觉得无聊,也不会因为时间过长而疲劳。

3、获得一血的队伍胜率提高了18%,因此游戏前期想要获胜,不仅要争取获得一血,还要避免被击杀导致送出一血。

4、摧毁第一座水晶的队伍胜率高达91%,同时击杀第一条男爵和大龙的胜率分别为80%和68%。

5、通过以上分析,影响队伍胜负的因素有很多,其中摧毁第一座水晶和击杀第一条男爵能显著提升胜率。

 

------------恢复内容结束------------

上一篇:查捆绑聊天室源码查Q绑/反查/微博/lol


下一篇:先验概率和后验概率的直观理解