python游戏辅助lol_Python数据分析实战--英雄联盟游戏数据分析

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.csvparticipants.csvmatches.csvteamstats.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&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值