用python對英雄聯盟選用英雄進行分析

weixin_34054866發表於2019-01-04

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()
8134750-7c98771e8bb0f358.png

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)

畫出紅藍方勝場直方圖


8134750-1b8637a8d3b02b47.png

由上面的資料和圖可以看到,藍方有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
8134750-c5673a97b85258ac.png

(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))
8134750-24f0797cac1fbc45.png

從圖中可以看出,
勝場比負場多的戰隊分別有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
8134750-6fdb66f14164c47e.png

相關文章