一、理解数据
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)
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分钟。
从右侧的箱式图也可以看出来游戏的时长主要分布在25到35分钟。
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、通过以上分析,影响队伍胜负的因素有很多,其中摧毁第一座水晶和击杀第一条男爵能显著提升胜率。
------------恢复内容结束------------