3.31更新了下路组合的对线情况
最近疫情原因一直呆在家里,本人也是LOL资深玩家了,从S3就开始接触LOL了,中间S8、S9的时候没有怎么玩,现在又玩回来了,LOL玩多了,突然就想能不能对英雄联盟的一些数据做一个分析,于是就有了本文
很感谢这位朋友提供了18W场排位比赛的数据,但是很遗憾的是这些数据都不是国服的数据,绝大部分是欧服的数据
数据文档说明champs.csv :包含英雄名称和英雄id
matches.csv : 包含比赛信息
participants : 每场比赛的玩家信息
stats1.csv & stats2.csv : 对战数据
teambans : 队伍ban选数据
teamstats : 队伍总数据
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
champs = pd.read_csv(r'E:\Python\lol\champs.csv')
matches = pd.read_csv(r'E:\Python\lol\matches.csv')
participants = pd.read_csv(r'E:\Python\lol\participants.csv')
stats1 = pd.read_csv(r'E:\Python\lol\stats1.csv')
stats2 = pd.read_csv(r'E:\Python\lol\stats2.csv')
bans = pd.read_csv(r'E:\Python\lol\teambans.csv')
teamstats = pd.read_csv(r'E:\Python\lol\teamstats.csv')
bans.head()
participants.head()
matches.head()
teamstats.head()bans.csv
participants.csv
matches.csv
teamstats.csv
stats1.shape
#(999999, 56)
stats1的列数太多了,就不进行展示了。
game_info=stats1.append(stats2)
df = pd.merge(participants, game_info, how = 'left', on = ['id'])
df = pd.merge(df, champs, how = 'left', left_on = 'championid', right_on = 'id')
df = pd.merge(df, matches, how = 'left', left_on = 'matchid', right_on = 'id')
bans = pd.merge(bans,champs,how='left',left_on = 'championid', right_on = 'id') #表连接,方便后续分析
df['teamid']= df['player'].apply(lambda x: '1' if x <= 5 else '2') #设置teamid
df.shape
# (1834520, 74)
df.platformid.value_counts()
#EUW1 1735214
#NA1 89198
#EUN1 6738
#TR1 3370
#Name: platformid, dtype: int64
df.seasonid.value_counts()
#8 1733658
#7 40194
#5 32304
#3 19558
#6 5046
#4 3760
#Name: seasonid, dtype: int64
可见大部分的数据来源于欧服S8
英雄BAN PICK
我一直对英雄BAN PICK挺感兴趣的,这很大程度说明了英雄的热门程度,于是我们来看一下BAN PICK 的情况
英雄出场率
f,ax1 = plt.subplots(figsize=(15,15))
sort_val=df.name.value_counts().sort_values(ascending=False) #数据倒序排列
ax1=pd.concat((sort_val.head(10),sort_val.tail(10))).plot(kind='bar') #取出头尾十个
total_records=len(matches)
for p in ax1.patches:
height = p.get_height()
ax1.text(p.get_x()+p.get_width()/2.,
height +3,
'{:.2f}%'.format(height/total_records*100),
ha="center",rotation=0) #给每个柱子标注百分比
plt.xticks(rotation = 45) #坐标刻度旋
plt.yticks([2000,5000,10000,20000,30000,40000,50000,60000])
plt.title('Top 10 and Least 10 Picks')
plt.show()
可以看到,上场率最高的是盲僧,紧接着是凯特琳(女警),然后是卢锡安。前十名里有四个是射手(女警(31.12%),奥巴马(30.79%),VN(19.02%),霞(15.78%),EZ(15.43%)),2个法师(阿狸(20.33%),发条(15.53%)),锤石是唯一一个进入前十的辅助型英雄,看来在辅助位上锤石是比较好的选择;
然后是出场率最低的英雄,呃,厄加特,原因不用多说了吧?仅有0.06%的出场率,可能这也是拳头后面重做厄加特的原因吧;还有倒数第三的金属大师,后面也重做的,现在已经是出场率很高的英雄了,不知道剩下这些会不会在不久的将来也重做呢?
英雄禁用率
f,ax1 = plt.subplots(figsize=(15,15))
sort_val&