咪哥杂谈
本篇阅读时间约为 6 分钟。
1
前言
前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。
今天来实现一下,看看不同维度得到的结论。
2
环境准备
本次实验用到的图形库为 pyecharts 。
pip install pyecharts
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。
而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
github - pyecharts 官网文档
以下实验环境,均处于 Jupyter Notebook 中,关于 Jupter Notebook 安装教程,移步:
https://zhuanlan.zhihu.com/p/54302333
知乎
3
数据分析的两个概念
数据分析里,先来了解下两个比较基础的概念:维度(Dimensions) 和度量(Measures)。
如果你用过可视化的工具,一定对其不陌生,比如 Tableau、Kibana等。
简单的来说,度量描述的是数据表中的数值数据,而维度描述的则是类别数据。
举个栗子。
假设你家是开商店的,每个季度要对不同商品进行销售额统计。
我们常见的一些有含义的名词、时间、地理位置等离散型数据适用于维度。
那这里的商品名称,如苹果,梨,栗子等可以作为维度。
连续型数据适用于度量,如数字。
此时,这些不同商品的卖出数量,则作为度量。
4
荣耀分析
明白了上述概念,下面分别定下不同的维度来进行分析做图。
PS: 关于 pyecharts 的代码不进行贴出,后续给出源码地址。
1. 王者荣耀中,英雄不同定位,英雄数量分别是多少?
根据读取 Excel 中 position ,获取不同英雄定位的数量。
图形:
王者荣耀一共 97 个英雄,前几天更新了赛季,新增一名射手。实际上可以看到,官方游戏策划对“法师”还是比较青睐的。
法师类英雄为什么多?
猜测:在诸多 moba 游戏中,中单是所有位置可玩性最高的,也是全场能带动节奏的关键位置。不论从最早第一款 dota 还是到现在移动端的王者荣耀。
中单选手的操作决定左右着游戏全局的走向,不论是前期,中期,还是后期。
玩的好的中单玩家,中前期可以带节奏 carry 全场,带玩家走向胜利。
比如我高中同学的貂蝉,1000多场,大部分场次拿此英雄就已经赢了一半了。
2. 王者荣耀中,哪个英雄无装备下跑的最快?
王者 97 个英雄里,你绝对想不到的居然是 盾山 和 梦奇 跑的是最快的(应该是最瘦状态的时候)。
这个图清晰的显示了除了这两个英雄移动速度额外的快,其余的英雄其实相差不到哪里去。
PS:对比下疾步之靴,最便宜的王者鞋子,看下它的属性。
属性:
唯一被动 神行:脱离战斗后增加 60 移动速度
唯一被动 :+60 移动速度
3. 王者荣耀中,哪个坦克无装备下血量最多?
坦克里的英雄,亚瑟是血量最多的。仔细看,这堆坦克的血量最低是八戒,差值 600 血量,要知道 600 的血量前期顶小半个红莲斗篷了:
红莲斗篷基础属性:
物理防御:240点
最大生命:1200点
装备技能
唯一被动:每秒对身边的敌军造成100点法术伤害
再来看下平均值,关于平均值,在图中画出了一条线,此线是所有英雄算出来的平均数,可以看到只有2个坦克的初始血量设定低于平均值,分别是钟无艳和猪八戒。
但不得不说,虽然低,但在对应的英雄技能上,有所弥补,比如钟无艳的防御套,八戒的回血功能。
4. 王者荣耀中,哪个英雄无装备下物理防御最高?
最高物理防御 150 ,庄周 :
最低物理防御 83 ,小脆皮哥斯拉,啊不对,安琪拉,妹子最爱的英雄:
物理防御意味着什么呢?普通攻击对其造成的伤害,假设双方法师都没魔法值了,那么安琪拉一定是对 A 不过敌人的。。。(虽然傻子法师才会去普通攻击~)
5. 哪些英雄推荐玩?
根据 18183 游戏网提供的数据,画出以下雷达图,按照定位不同来看。
用 pyecharts 画了一天的图,发现还是有缺点的,维度这一项,如果很多,用代码来实现是没有办法实现的!(研究一天没研究出来,看了官方文档也没找到。。)
所以我只能在度量上加了一层英雄名称,以下雷达图在英雄名称是没有数值的,
18183游戏网,法师推荐:
最饱和属性,嫦娥:
18183游戏网,战士推荐:
最饱和属性,盘古:
18183游戏网,坦克推荐:
最饱和属性,猪八戒:
18183游戏网,射手推荐:
最饱和属性,伽罗:
18183游戏网,辅助推荐:
最饱和属性,瑶:
18183游戏网,刺客推荐:
最饱和属性,荆轲:
综上所述,雷达图其实很容易就能看出哪些数值比较突出。
瑶这个英雄现在在王者段位中,真的是一直被 ban,一般拿不到。阿轲是在白金左右段位的打野,很好上分。嫦娥其实一直在法师中很强势,只不过很少有人爱用她,算是一个法坦。
那我自己找出的数据维度,暂时就这么多。
5
用到的几个 pandas 方法
1. df['position'].value_counts()
Df读取某列的值,并且按照内容进行分组计数。如下:
2. df[df['position']=='坦克']['name']
筛选,position为坦克的英雄名称。如下:
3. df['最大生命'].mean()
Mean,平均值的意思,求最大生命的平均值,画出平均线。
6
总结
以上,就是本次通过数据找出来的几个维度点。
后台和一些朋友沟通交流了下,本次数据其实维度还是过于少,比如一些装备上的数据,没有进行爬取,英雄本身的等级成长值,也没有,如果你有更好的维度,欢迎留言区留言探讨~
关于 notebook 的源代码,上传到 github 了,后台回复关键词 荣耀代码 即可获得!
▼
往期精彩回顾
▼
你点的每个在看,我都认真当成了喜欢
转载:https://blog.csdn.net/weixin_38753698/article/details/103998188