Python数据分析-LOL英雄画像 !

LOL相信很多同学都不陌生,没玩过至少也听过,本猿的LOL水平可谓一顿操作猛如虎,一看战绩1-5。

本着学以致用的求知态度,我们来看看英雄们的属性秘密。

1.工欲善其事必先利其器,先导入数据分析所需要的库

  •  
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sb

Python资源共享群:484031800

2.加载英雄数据

该数据集版本为8.14.1,数据集链接:https://www.kaggle.com/jadson666/lol-champions-dataset-patch-8141

  •  
champions_data = pd.read_csv('champions_dataset.csv')champions_data.head() #预览数据前5条

 

 

 

 

 

 

 

3.查看数据描述

  •  
champions_data.describe() #展示数据平均值,标准差,最小值,最大值

 

 

 

 

 

 

可以看出来,有141位英雄的数据,护甲(armor)平均值为30.14,最小值为17,最大值为47,等等一系列数据。

4.定义绘图函数

  •  
def countplot(data, is_x, title):    if is_x:        sb.countplot(data= data, x= title)    else:        sb.countplot(data= data, y= title)    title_counts = champions_data[title].value_counts()        for i in title_counts.index:            count = title_counts[i]        pct_string = '{}'.format(count)        plt.text(i - 1.1, count + 1, pct_string, va= 'center')

 

5.查看AD能力分布

  •  
countplot(data= champions_data, is_x= True, title='attack')

 

 

 

 

 

 

由此图可以看出来,AD能力为8的英雄最多,有27位。AD能力为2的英雄数次之,有22位。

那么,AD最强和最弱英雄都有谁呢?

  •  
strong_attack = champions_data.loc[champions_data['attack'] == 10]['name'].valuesprint("物理攻击能力最强的英雄:")print(strong_attack)weak_attack = champions_data.loc[champions_data['attack'] == 1]['name'].valuesprint("物理攻击能力最弱鸡的英雄:")print(weak_attack)

 

 

 

 

 

 

对应的国服name为:

AD最强:[凯隐,霞,易大师,烬,无双剑姬,VN,蛮王]

AD弱鸡:[佐伊,卡尔玛,泽拉斯,塔利亚,莫甘娜,艾尼维娅,乐芙兰,加里奥]

咦,蛮易信的信竟然不是AD能力为10,不科学。

6.查看AP能力分布

  •  
countplot(data= champions_data, is_x= True, title='magic')strong_magic = champions_data.loc[champions_data['magic'] == 10]['name'].valuesprint("AP能力最强的英雄:")print(strong_magic)weak_magic = champions_data.loc[champions_data['magic'] == 1]['name'].valuesprint("AP能力弱鸡的英雄:")print(weak_magic)

 

 

 

 

 

 

 

 

 

 

 

对应的国服name为:

AP最强9位:[维克托,维嘉,卡尔萨斯,瑞兹,泽拉斯,维克兹,艾尼维亚,乐芙兰,安妮]

AP弱鸡11位:[凯隐,德莱厄斯,瑞雯,霞,劫,希维尔,德莱文,VN,泰隆,派克,盖伦]

7.查看操作难度分布

  •  
countplot(data= champions_data, is_x= True, title='difficulty')most_difficulty = champions_data.loc[champions_data['difficulty'] == 10]['name'].valuesprint("操作最难的英雄:")print(most_difficulty)least_difficulty = champions_data.loc[champions_data['difficulty'] == 1]['name'].valuesprint("操作最简单的英雄:")print(least_difficulty)

 

 

 

 

 

 

 

 

 

 

 

操作难度是5的英雄数最多,4的次之,呈现出正态分布。

对应的国服name为:

操作最难5位:[伊芙琳,兰博,艾尼维亚,亚索,卡西奥佩娅]

连滚键盘2位:[厄运小姐,莫甘娜]

莫甘娜的操作难度也不低啊,10Q中3都不错了。

8.查看英雄类型分布

  •  
#数据处理classes = []for item in champions_data['classes'].values:    item = item.replace('[\'', '')    item = item.replace('\']', '')    item = item.replace('\', \'', ' ')    items = item.split()    classes.append(items[0])champions_data['classes'] = classes#根据classes标签绘图sb.countplot(data= champions_data, x= 'classes')

 

 

 

 

 

 

由于条形图不能看出各类型英雄占比,我们画个饼图:

  •  
classes = champions_data['classes'].value_counts()plt.pie(classes, labels= classes.index, autopct = '%3.1f%%', startangle= 90, counterclock= False)plt.axis('square')

 

 

 

 

 

 

战士:28.4%,法师:22.0%

射手:15.6%,坦克:12.8%

刺客:10.6%,辅助:10.6%

9.英雄称号词云

  •  
#导入词云库from wordcloud import WordCloud, ImageColorGeneratorfrom scipy.misc import imread
#处理英雄签名title_array = champions_data['title'].valuestitle_string = ' '.join(title_array)
# 用于生成配色方案的图back_color = imread('lol_icon.jpeg')
# 词云my_wordcloud = WordCloud(background_color='white',  # 背景颜色               max_words=2000,  # 最大词数               mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略               max_font_size=100,  # 显示字体的最大值               random_state=42,  # 为每个词返回一个PIL颜色               # width=1000,  # 图片的宽               # height=860  #图片的长               )
# 用wl_space_split生成词云my_wordcloud.generate(title_string)
# 基于彩色图像 生成响应的色彩image_colors = ImageColorGenerator(back_color)# 显示图片plt.imshow(my_wordcloud)# 关闭坐标轴# plt.axis('off')# 绘制词云plt.figure()plt.imshow(my_wordcloud.recolor(color_func=image_colors))plt.axis('off')# 保存图片my_wordcloud.to_file('ciyun.png')

 

 

 

 

 

 

 

 

还有许多数据有兴趣的同学可以去挖掘挖掘。比如,初始护甲最低的英雄,初始移速最高的英雄,初始攻击力最高的英雄等等。

你可能感兴趣的:(Python)