[实战] 用Python进行可视化分析LOL战队数据

摘要:通过python进行数据分析实战


这是涛哥给你推荐的第8篇好文

来源:数据管道

作者:爱德宝器

640?wx_fmt=jpeg

640?wx_fmt=png



摘要

LPL(League of Legends Pro League),中国大陆最高级别的英雄联盟职业比赛,是中国大陆赛区通往每年季中冠军赛和全球总决赛的唯一渠道。相信大部分小伙伴对LPL的参赛队伍都不陌生,那今天就来分析一下这些参赛队伍的数据。


问题

打比赛的时候,选择蓝方胜率是否是一定高于红方?EDG、WE、RNG以及像国民老公的IG这些战队胜率如何?不同的战队特点是什么呢?某个时段的战队战绩排行又是什么情况?


分析

1、导入数据并修改字段名

import numpy as np 	
import pandas as pd 	
import seaborn as sns	
import matplotlib.pyplot as plt	
from datetime import date, timedelta, datetime	
from pyecharts import Bar,Pie,Line,Geo,Map,Style,WordCloud	
plt.rc("font", size=14)	
plt.rcParams['savefig.dpi'] = 100 #图片像素	
plt.rcParams['figure.dpi'] = 100 #分辨率	
Data = pd.read_csv('C:/Users/18030/Desktop/LOL.csv')	
Data.rename(columns={'战队':'Team','攻击':'Attack',"法术":"Magic","防御":"Defence","团战":"Group","机动":"Flex","是否红方":"Is_Red","是否获胜":"IS_V"},inplace=True)	
Data.head()

640?wx_fmt=png

不同队伍选择红方,蓝方的输赢比分析

from pyecharts import Bar	
Data_1 = pd.pivot_table(Data,values='IS_V',index='Team',columns='Is_Red',aggfunc='sum')	
Data_1.rename(columns={0:"NO",1:"YES"},inplace=True)	
attr = Data_1.index.tolist()	
v1 = Data_1['NO'].values.tolist()	
v2 = Data_1['YES'].values.tolist()	
bar = Bar("")	
bar.add("YES", attr, v2, is_stack=True)	
bar.add("NO", attr, v1, is_stack=True)	
bar

可视化结果:

640?wx_fmt=png

分析结果:

  • JDG、NB、WE、IG等大多数队伍选择选择蓝方的胜场高于红方。

  • RNG、EDG、IM选择红方的胜场高于蓝方。



不同队伍的打法特点是怎样的呢?


from pyecharts import Radar	
Data_2 = Data.groupby('Team').mean().stack()	
EDG_VALUE = [Data_2['EDG'][:5].values.tolist()]	
WE_VALUE = [Data_2['WE'][:5].values.tolist()]	
RNG_VALUE = [Data_2['RNG'][:5].values.tolist()]	
radar = Radar()	
c_schema= [ {"name": "Attack", "max": 55, "min": 53},	
           {"name": "Magic",   "max": 52.8, "min": 50},	
           {"name": "Defence", "max": 55, "min": 52},	
           {"name": "Group",   "max": 76,   "min":72},	
           {"name": "Flex",    "max": 68,    "min":64} ]	
radar.config(c_schema=c_schema, shape='circle')	
radar.add("EDG", EDG_VALUE, is_splitline=True, is_axisline_show=True,line_width =2 )	
radar.add("WE", WE_VALUE, label_color=["#4e79a7"],item_color="#000",line_width=2)	
radar.add("RNG", RNG_VALUE, label_color=['rgba(443,23,112,121)'],item_color='rgba(413,123,23,412)',line_width=2)	
radar


说明:这里只画出RNG、EDG、WE的打法特点。


可视化结果:

640?wx_fmt=png

很明显的看出来这三只队伍的打法特点:

  • EDG更注重进攻,而防守是其短板。

  • RNG的打法是很灵活的,并且在法术和防御很出色。

  • WE不是激进的打法,相对来说其更愿意防守和团队输出。

某个时段的战队战绩排行又是什么情况呢?


from pyecharts import Bar	
Data_3 = Data.groupby('Team').sum()	
Data_4 = Data_3['IS_V']	
Data_4 = Data_4.sort_values(ascending=False)	
attr = Data_4.index.values.tolist()	
v = Data_4.values.tolist()	
bar = Bar()	
bar.use_theme('dark')	
bar.add("战队胜场排行榜",attr,v)	
bar

可视化结果:

640?wx_fmt=png

分析结果:

  • 该时段WE、IG、RNG的胜场相对来说更好一些。

  • IM、DAN等战队相对这些老牌队伍逊色不少。

不同战队的胜率如何?


from pyecharts import Pie	
Data_7 = Data.groupby('Team').sum()	
Index = Data_7.index	
ALL_COUNT = np.array([len(Data[Data.Team == i ]) for i in Index])	
ALL_WIN =Data_7.IS_V.values	
WIN_PER = ALL_WIN/ALL_COUNT	
LOS_PER = 1 - WIN_PER	
Data_8 = pd.DataFrame(index=Index,columns=['WIN_PER','LOS_PER'])	
Data_8['WIN_PER'] = WIN_PER*100	
Data_8['LOS_PER'] = LOS_PER*100	
Data_8.sort_values(by='WIN_PER',ascending=False,inplace=True)	
pie = Pie(title_pos='center')	
style = Style()	
pie_style = style.add(	
    label_pos="center",	
    is_label_show=True,	
    label_text_color=None	
)	
pie.add(	
    "", ["EDG", ""], Data_8.iloc[0].values.tolist(), center=[10, 30], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["RNG", ""], Data_8.iloc[1].values.tolist(), center=[30, 30], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["WE", ""], Data_8.iloc[2].values.tolist(), center=[50, 30], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["IG", ""], Data_8.iloc[3].values.tolist(), center=[70, 30], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["OMG", ""], Data_8.iloc[4].values.tolist(), center=[90, 30], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["NB", ""], Data_8.iloc[5].values.tolist(), center=[10, 70], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["JDG", ""], Data_8.iloc[6].values.tolist(), center=[30, 70], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["SNG", ""], Data_8.iloc[7].values.tolist(), center=[50, 70], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["LGD", ""], Data_8.iloc[8].values.tolist(), center=[70, 70], radius=[18, 24], **pie_style	
)	
pie.add(	
    "", ["DAN", ""], Data_8.iloc[9].values.tolist(), center=[90, 70], radius=[18, 24], **pie_style	
)	
pie

可视化结果:

640?wx_fmt=png

  • EDG、RNG、WE等战队的胜率能到到60%以上。

  • OMG、IG的胜率在55%以上。

  • DAN等战队的胜率在40%以下。

拓展

可利用逻辑回归、SVM等机器学习等算法预测一下还没打之前某只战队是否可取得胜利。这部分内容以后在更新。



往期推荐

640?wx_fmt=jpeg

第7次赠书,25本经典书籍免费送,速来!

640?wx_fmt=jpeg

Python骚操作:动态定义函数

640?wx_fmt=jpeg

如果觉得好看,点个在看支持一下~

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值