王者荣耀英雄分析之统计分析,聚类分析

在了解了如何绘制饼图和雷达图之后,我们就可以正式的对王者荣耀数据进行分析了。
首先来看看这个数据集吧
包含的内容还是挺多的,有69个英雄,还有他们的一些属性。因为我不会玩王者荣耀,所以对这些信息也不是很了解,接下来有可能分析的不到位,还请大家多多包涵。
我还是选择的使用python来分析,因为简单嘛,然后平台的话还是选择aistudio真的很好用,强烈推荐,一些使用方法可以查看我之前写的博客。
链接:https://blog.csdn.net/weixin_46570668/article/details/115438389.

关联性分析

首先当然是关联性分析,先配置好字体,导入我们需要的包

import pandas as pd
import numpy as np
from matplotlib import pyplot
from matplotlib import font_manager
font = font_manager.FontProperties(fname='font/simhei.ttf')
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
# 用热力图呈现 features_mean 字段之间的相关性
corr = data[features].corr()
plt.figure(figsize=(14,14))
# annot=True 显示每个方格的数据
sns.heatmap(corr, annot=True)
plt.xticks(range(0, 18),fontproperties=font)
plt.yticks(range(0, 18),fontproperties=font)
plt.show()

统计分析

首先我们来统计一下主要定位

dd=data1[u'主要定位'].value_counts()
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
labels =list(dd.index)
sizes = list(dd)explode = [0.05,0.05,0.05,0.05,0.05,0.05]
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=-45, textprops={'fontproperties':font})
plt.title("主要定位统计分析", fontproperties=font)
plt.legend(loc='right', bbox_to_anchor=[0.75, 0.4, 0.5, 0.5], prop=font)
plt.show()

接着我们来统计一下攻击范围

dd=data1[u'攻击范围'].value_counts()
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
labels =list(dd.index)
sizes = list(dd)
explode = [0.05,0.05]
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=-45, textprops={'fontproperties':font})
plt.title("攻击范围统计分析", fontproperties=font)
plt.legend(loc='right', bbox_to_anchor=[0.75, 0.4, 0.5, 0.5], prop=font)
plt.show()

以此类推,大家想统计什么只需要修改一下这句话的参数就可以了
dd=data1[u’攻击范围’].value_counts()

接下来我们查看一下前三的最大生命

ddg=data1[['英雄','最大生命','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝','最大攻速','主要定位']].sort_values(by='最大生命',ascending=False)
ddg[:3]

分别把他们画在雷达图上面

s=[2016,427,514,128,50]
x1 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '廉颇']
x2 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '白起']
x3 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '程咬金']
y1=x1.values.tolist()[0]
y2=x2.values.tolist()[0]
y3=x3.values.tolist()[0]
z1=y1[1:6]
z2=y2[1:6]
z3=y3[1:6]
for i in range(5):z1[i]=z1[i]/s[i]
for i in range(5):z2[i]=z2[i]/s[i]
for i in range(5):z3[i]=z3[i]/s[i]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')# 构造数据
values = z1
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(values), endpoint=False)# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
angles=np.concatenate((angles,[angles[0]]))
values_2=z2
values_2=np.concatenate([values_2,[values_2[0]]])
values_3 = z3
values_3=np.concatenate([values_3,[values_3[0]]])
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2,label='廉颇')
ax.plot(angles, values_2, 'o-', linewidth=2,label='白起')
ax.plot(angles, values_3, 'o-', linewidth=2,label='程咬金')
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('前三最大生命',fontproperties=font)
plt.legend(loc=(1,0.8), prop=font)
ax.grid(True)
plt.show()

依次类推我们来看一下前三最大法力

ddg=data1[['英雄','最大生命','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝','最大攻速','主要定位']].sort_values(by='最大法力',ascending=False)
ddg[:3]

s=[2016,427,514,128,50]
x1 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '妲己']
x2 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '扁鹊']
x3 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '姜子牙']
y1=x1.values.tolist()[0]
y2=x2.values.tolist()[0]
y3=x3.values.tolist()[0]
z1=y1[1:6]
z2=y2[1:6]
z3=y3[1:6]
for i in range(5):z1[i]=z1[i]/s[i]
for i in range(5):z2[i]=z2[i]/s[i]
for i in range(5):z3[i]=z3[i]/s[i]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')# 构造数据
values = z1
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(values), endpoint=False)# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
angles=np.concatenate((angles,[angles[0]]))
values_2=z2
values_2=np.concatenate([values_2,[values_2[0]]])
values_3 = z3
values_3=np.concatenate([values_3,[values_3[0]]])
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2,label='妲己')
ax.plot(angles, values_2, 'o-', linewidth=2,label='扁鹊')
ax.plot(angles, values_3, 'o-', linewidth=2,label='姜子牙')
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('前三最大法力',fontproperties=font)
plt.legend(loc=(1,0.8), prop=font)
ax.grid(True)
plt.show()

依次类推,大家可以查看任意属性的前三
接下来我们来看看法师都是什么样子的

s=[2016,427,514,128,50]
x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '法师']
y=x.values.tolist()
z=[[]]*len(y)
for i in range(len(y)):z[i]=y[i][2:7]
for i in range(len(y)):for j in range(5):z[i][j]=z[i][j]/s[j]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
angles=np.concatenate((angles,[angles[0]]))
for i in range(len(y)):values = z[i]values=np.concatenate((values,[values[0]]))ax.plot(angles, values, 'o-', linewidth=2,label=y[i][0])
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('法师',fontproperties=font)
plt.legend(loc=(1.5,0), prop=font)
ax.grid(True)
plt.show()

想要查看那个定位的英雄只要修改一下参数即可,修改一下这句话中的‘主要定位’后面的参数

x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '法师']

那我们再来看一下战士

s=[2016,427,514,128,50]
x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '战士']
y=x.values.tolist()
z=[[]]*len(y)
for i in range(len(y)):z[i]=y[i][2:7]
for i in range(len(y)):for j in range(5):z[i][j]=z[i][j]/s[j]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
angles=np.concatenate((angles,[angles[0]]))
for i in range(len(y)):values = z[i]values=np.concatenate((values,[values[0]]))ax.plot(angles, values, 'o-', linewidth=2,label=y[i][0])
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('战士',fontproperties=font)
plt.legend(loc=(1.5,0), prop=font)
ax.grid(True)
plt.show()

基本上就是这样啦,大家相分析哪方面的内容都可以修改一下参数,如果大家有一些我没想到的分析内容,请一定要评论告诉我哦。
完整项目和运行结果已经上传资源:
https://download.csdn.net/download/weixin_46570668/16455298.

王者荣耀英雄分析之统计分析,聚类分析相关推荐

  1. 2020赛季-王者荣耀英雄分析

    2020-王者荣耀英雄分析 目录 2020-王者荣耀英雄分析 前言: 任务1:数据处理 任务2:数据可视化与分析 2.1选择要处理的列 2.2数据可视化 2.3聚类算法 本章节全部代码 第二标签(整体 ...

  2. 第二次作业:王者荣耀软件分析

    你选择的产品是? 王者荣耀 为什么选择该产品作为分析? 因为我本身是比较喜欢游戏,而且将来也想从事游戏方面的工作,对这类产品会比较感兴趣. 该产品是怎么诞生的(在什么样的背景下)? 即时战略游戏(RT ...

  3. 图片链接用src不能被爬虫爬到吗_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸

    一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...

  4. 安卓开发笔记(八)—— 王者荣耀英雄大全 数据库部分

    中山大学数据科学与计算机学院本科生实验报告 (2018年秋季学期) ps:如果需要该项目的王者荣耀数据库资源,在下面留言即可 数据库在下面这个GITHUB链接里面,觉得有用的,兄弟给个star谢谢! ...

  5. selenium自动获取王者荣耀英雄海报并保存到本地

    文章目录 1.使用Selenium搞定王者荣耀英雄海报的下载 1.1.前期准备 1.2.分析 1.2.1.第一步 1.2.2.第二步 1.2.3.第三步 1.3.源代码 1.4.运行结果 1.使用Se ...

  6. Python爬虫爬取王者荣耀英雄人物高清图片

    Python爬虫爬取王者荣耀英雄人物高清图片 实现效果: 网页分析 从第一个网页中,获取每个英雄头像点击后进入的新网页地址,即a标签的 href 属性值: 划线部分的网址是需要拼接的 在每个英雄的具体 ...

  7. 第二次作业:王者荣耀案例分析

    2.1 介绍产品相关信息 你选择的产品是? 王者荣耀 为什么选择该产品作为分析? 王者荣耀可以说是现在家喻户晓的一款手游,这款游戏涉及到各个层次的年龄,上到三四十岁的中年人,下至四五岁呱呱学语的小屁孩 ...

  8. 面向对象02 - 案例:王者荣耀英雄选择

    王者荣耀英雄选择案例 一.目标与说明 二.实现效果 三.写之前先分析 四.类 1. 玩家类 2. 亚瑟类 3. 鲁班类 4.英雄基类 5. 技能类和皮肤类 6. 总结 五.页面结构和逻辑 1. 页面元 ...

  9. Python爬虫——手把手教你爬取王者荣耀英雄皮肤

    大家好!我是霖hero 大家知道目前最火的手游是哪个嘛,没错,就是王者荣耀,这款手游想必大家都听过或者玩过吧,里面有106个英雄,几百个英雄皮肤,今天我来手把手教你们把几百个皮肤都爬取下来. 目录 P ...

最新文章

  1. adcclk最大_STM32 ADC转换时间
  2. 河海大学2019计算机考研分数线,河海大学2019年硕士研究生复试分数线
  3. 如何在win7(xp)home version下安装 rose 32 bit
  4. oracle长度字段,【转】Oracle中如何取一个字段的定义长度
  5. utu2440 vxWorks DM9000A驱动移植
  6. 2016.02.23,英语,《Vocabulary Builder》Unit 01
  7. python初始化空列表_python list的深拷贝与浅拷贝-以及初始化空白list的方法(1)
  8. 深度学习相关优化器以及在tensorflow的使用(转)
  9. 零基础学python图文版-零基础学Minecraft编程(图文版)中文pdf_Python教程
  10. IT部门不应忽略的12种数据
  11. 关于c# naudio的几个注意事项
  12. 产生指数分布的随机数 C语言实现
  13. 音频文件压缩大小如何操作?分享一个音频压缩的小技巧
  14. 常见生态问题成因及措施
  15. SolidWorks+thonny esp32 电磁控制,程序算法搞起来了,我的结构-仿真-电磁-控制-算法的学习之路
  16. 工作笔记:如何用Django连接Kerberized甲骨文(Oracle)数据库
  17. hackthebox_Archetype
  18. sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz!...
  19. linux网卡混杂模式和监听模式
  20. 吴恩达【神经网络和深度学习】Week4——深层神经网络

热门文章

  1. MySQL计算经纬度距离
  2. 看代码猜古诗哈哈逗死我了
  3. hd printer lexmark
  4. 2014年重要的软件开发发展
  5. 谷歌三大论文之--Bigtable:一个分布式的结构化数据存储系统
  6. 1158 Telefraud Detection
  7. 稻田香计算机毕业设计官网,稻田美术带您走进美术馆——广州美术学院毕业展 20170611...
  8. 简述计算机网络的定义和功能,通常把计算机网络定义为(简述计算机网络的定义和功能)...
  9. 2001年计算机等级考试上机题,2001年9月计算机等级考试二级C语言上机试题
  10. 创业失败的10个教训(下)