首页 > 游戏 > 如何用Python选英雄?这样做让你carry全场

如何用Python选英雄?这样做让你carry全场

“欢迎来到召唤术峡谷~”

英雄联盟作为一款长青游戏,风靡了这么多年,依旧热度不减!

今天我们就来分析一下战队的阵容选择会对胜率带来什么样的影响。

1.载入必要的包

import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts import Radar

2.读取并观察数据情况

dat_hero=pd.read_csv('TeamHero_index.csv')
dat_hero.head()

3.数据分析

(1)红蓝方因素对胜负的影响

众所周知,在英雄联盟中,由于蓝方会先手ban英雄及pick英雄,因此通常蓝方的胜率更高一些。让我们来看看数据是否能够印证这一点。

取出红方获胜的数据:

red_win1=dat_hero[dat_hero['是否红方'].isin(['1'])]
red_win1=red_win1[red_win1['是否获胜'].isin(['1'])]
red_win2=dat_hero[dat_hero['是否红方'].isin(['0'])]
red_win2=red_win2[red_win2['是否获胜'].isin(['0'])]
red_win=pd.concat([red_win1,red_win2])
red_win.shape

(208,8)

取出蓝方获胜的数据

blue_win1=dat_hero[dat_hero['是否红方'].isin(['1'])]
blue_win1=blue_win1[blue_win1['是否获胜'].isin(['0'])]
blue_win2=dat_hero[dat_hero['是否红方'].isin(['0'])]
blue_win2=blue_win2[blue_win2['是否获胜'].isin(['1'])]
blue_win=pd.concat([blue_win1,blue_win2])
blue_win.shape

(316,8)

画出红蓝方胜场直方图

由上面的数据和图可以看到,蓝方有316胜场,红方仅有208胜场。可以印证蓝有相对而言更有优势。

下面我们再对红蓝方所选用的英雄属性进行分析。

计算红方获胜时英雄平均属性:

value1=[[red_win['攻击'].mean(),red_win['法术'].mean(),red_win['防御'].mean(),red_win['团战'].mean(),red_win['机动'].mean()]]

计算蓝方获胜时英雄平均属性:

value2=[[blue_win['攻击'].mean(),blue_win['法术'].mean(),blue_win['防御'].mean(),blue_win['团战'].mean(),bluewin['机动'].mean()]]
from pyecharts import Radar
radar = Radar()
#用于调整雷达各维度的范围大小
c_schema= [{"name": "攻击", "max": 54.3, "min": 54.1},
{"name": "法术", "max": 52, "min": 51},
{"name": "防御", "max": 54, "min": 52},
{"name": "团战", "max": 73.2, "min": 71},
{"name": "机动", "max": 66, "min": 65}]
radar.config(c_schema=c_schema)
radar.add("红方获胜", value1,item_color="#f9713c",area_color='#ea3a2e',area_opacity=0.3)
radar.add("蓝方获胜", value2,item_color='#2525f5',area_color='#2525f5',area_opacity=0.3)
radar

从图中可以看到,作为红方,想要胜利攻击力、法术强度、防御性能都要比在蓝方时强一些,团战能力更是达到顶峰,而作为蓝色方来说,均衡发展就可以赢得胜利,团战能力也不需要特别强。

(2) 各个战队战绩分析

plt.figure(figsize=(15,7))
plt.xlabel('战队',fontsize=30,fontproperties=myfont)
plt.ylabel('次数',fontsize=30,fontproperties=myfont)
sns.countplot(x='战队',hue='是否获胜',data=dat_hero,palette=sns.color_palette('hls',7))

从图中可以看出,

胜场比负场多的战队分别有EDG, IG, RNG, WE, NB,OMG这六支战队。

胜场最多的依次是 IG, RNG, WE这三支战队。

我们对这三支战队所选用英雄属性进行分析。

#计算EDG战队所选用英雄的平均属性
EDG=dat_hero[dat_hero['战队'].isin(['EDG'])]
edg_value=[[EDG['攻击'].mean(),EDG['法术'].mean(),EDG['防御'].mean(),EDG['团战'].mean(),EDG['机动'].mean()]]
#计算RNG战队所选用英雄的平均属性
RNG=dat_hero[dat_hero['战队'].isin(['RNG'])]
rng_value=[[RNG['攻击'].mean(),RNG['法术'].mean(),RNG['防御'].mean(),RNG['团战'].mean(),RNG['机动'].mean()]]
#计算WE战队所选用英雄的平均属性
WE=dat_hero[dat_hero['战队'].isin(['WE'])]
we_value=[[WE['攻击'].mean(),WE['法术'].mean(),WE['防御'].mean(),WE['团战'].mean(),WE['机动'].mean()]]
radar1 = Radar()
#用于调整雷达各维度的范围大小
c_schema= [{"name": "攻击", "max": 55, "min": 53},
{"name": "法术", "max": 52.5, "min": 50},
{"name": "防御", "max": 55, "min": 52},
{"name": "团战", "max": 76, "min": 72},
{"name": "机动", "max": 68, "min": 64}]
radar1.config(c_schema=c_schema)
radar1.add("EDG", edg_value,item_color="#f9713c",line_width=3)
radar1.add("RNG", rng_value,item_color='#2525f5',line_width=3)
radar1.add("WE", we_value,item_color='#000',line_width=3)
radar1

从上图可以看出,每支队伍在选用英雄时都有自己的特点。

EDG更爱攻击性的阵容,RNG法术、防御做的不错,WE则更偏向团战和机动性。

所以说,没有绝对的阵容,只要队友不坑、猥琐别浪,游戏还是能赢得。

看了分析,赶快去召唤师峡谷战斗吧!

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/yx/58741.html