最近电影《大侦探皮卡丘》上映,相信很多人对皮卡丘都不陌生,特别是90后的,那可是儿时的回忆。皮卡丘的角色最初来自于一款游戏,但是大部分人是从动画片熟知的,也就是《神奇宝贝》(又叫《宠物小精灵》,《精灵宝可梦》)。而这次呢,我们就通过宝可梦们的数据,结合Pandas和Seaborn来了解这个神奇的宝可梦世界吧!
01.导入数据集
第一步,自然是先导入我们所需要的库并读取数据集:
运行结果:
数据的字段不算多,对于了解神奇宝贝的同学来说,应该很容易知道每个字段的意思。不过还是贴上每个字段的含义(按顺序):
数据集字段解释:
-
#ID:每个宠物小精灵的ID
-
名称:每个口袋妖怪的名字
-
属性1:每个口袋妖怪都有一个属性,这决定了他们的克制与被克制关系
-
属性2:还有一些口袋妖怪是双重属性的
-
总计:所有的统计数据的总和,某种程度上决定了精灵的强弱
-
HP:生命值,在被击倒之前宠物小精灵可以承受多少的伤害
-
攻击:物理攻击的基础数值(例如Scratch,Punch)
-
防御:抵抗物理攻击的基础数值
-
SP攻击:特殊攻击,特殊攻击的基础数值(例如火焰爆炸,泡沫射线)
-
SP Def:抵抗特殊攻击的基础数值
-
速度:决定宠物小精灵的进攻顺序
-
世代: 该精灵在第几世代中出现
-
神兽: 该精灵是否为神兽
02.数据清洗
第二步,读取完数据后,一般先对数据做一个总体的了解。通过isnull()和describe()可以看到数据基本没有缺失值。type2这个字段有缺失值属于正常情况(因为一些神奇宝贝没有第二个属性),所以缺失值这块不用做任何处理。
通过和describe,可以发现,这份数据集包含了800个神奇宝贝的属性数据,跨越了6个世代,以及各个属性的最大最小值等。
03.各种花式数据分析
了解了数据的基本信息含义后,接下来就可以进行近一步的分析了,首先来看看不同属性的神奇宝贝数量,因为考虑到一些神奇宝贝拥有两个属性,所以这里先把属性1和属性2合并起来,再进行统计:
看下结果:
在神奇宝贝的属性分布中,水系,普通系和飞行系数量排在前三,最少的后三名是冰系,妖精系和幽灵系。《神奇宝贝》分为好几个世代,来比较每个世代第一次出现的神奇宝贝数量都有多少:
在六个世代中,登场神奇宝贝最多的是第一代和第五代(超过160种),最少的是第六代。
除此之外呢,我们还可以看看大体的一些能力值的分布,比如血量,发现大部分是处于50-100区间。类似地,也可以对其它特征做同样的可视化探索。
04.写个函数,PK宝贝的平均值
最后,我们来写一个函数,用来比较不同属性的神奇宝贝的平均能力值,并且可视化。比如,我想知道哪一类的神奇宝贝的防守能力是比较厉害的呢?来看看分析结果(函数会返回排序结果和图片,这里只贴上可视化结果):
从结果来看,岩石系的防守能力最好,电系的防守能力最差(这里心疼下电气老鼠比卡)
同样的,我们可以运行下函数power_rank(‘HP’),看看哪一类神奇宝贝的平均血量最高,或者是其它的,只需要保持传入的参数和数据列名一样即可。
除了这些,我还想了解下这些特征间是否有相关性,比如,攻击能力高的是不是血量也会高,它们间的相关性有多高呢:
从结果来看,两者间的相关系数为0.42,属于中度相关。那如果我要看其它的呢,也要一个个只要写吗?其实不用,我们使用相关矩阵,并且用一个heatmap图就可以了:
这样是不是很清晰了呢,整体上来看,颜色越深,表示相关性越高。可以看到最高的相关系数是0.51(自身和自身比较的不算),也是属于中度相关。所以,神奇宝贝各能力特征间就不算有很强的相关性了。
其实,还可以进一步探索,比如,就拿一种类型的来看(例如水系)它们间的相关性是如何的。有兴趣的小伙伴可以尝试一下。
05.终极探索,神奇宝贝之王
目前为止,貌似只是了解了大概,我还想知道究竟是哪一些神奇宝贝最厉害,是不是比卡丘呢?接下来就让我们来一探究竟!
先来看综合能力,就是看Total数值最高的,我们对其做一个排序,并查看前五名:
呃。。。好吧,这里注意到最后一列Legendary都是Ture,说明了都是神兽级别的,这对非神兽的神奇宝贝就不是很友好了,所以,我们就不讨论神兽的,当然也可以专门分析神兽的数据,看看神兽里面是哪个最厉害,哪个最菜(不过这里已经给出来了,就是裂空座的综合能力最高了)。于是看看非神兽里综合能力值最高的有哪些:
这些基本都不认识,也不一一去搜索了。但是接下来,我们将来写一个函数,接受两只神奇宝贝的输入,并且用雷达图可视化它们的能力分布:
这个函数整体上还是比较简单,参考源码应该可以理解,作图用的是Pyecharts,即动态又炫酷,体验感真的不错,来看下结果:
这里是比较了比卡丘和杰尼龟,两者的综合值相差不大,但是可以很清楚的看到,皮卡丘的优势在于速度,弱势在于防御能力;而杰尼龟则是各方面比较平衡。如果你是神奇宝贝的主人,将会采用什么样的战略呢?
神奇宝贝对于我而言,是小学时候的一部经典,那时候就老幻想有一只比卡丘多好呀,大部分的神奇宝贝都很可爱。我最喜欢的是可爱的比卡丘,呆萌的可达鸭,和“索纳斯”的果然翁,你们喜欢哪一些神奇宝贝呢,欢迎大家讨论!
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中删除空字符串11/15
- ♥ python 零基础容易学吗?08/28
- ♥ python如何创建空数组?08/12
- ♥ 全栈工程师15年经验分享:40个改变编程技能的小技巧05/13
- ♥ 如何在python中判断一个变量是否为字符串类型08/22
- ♥ python怎么画朵拉A梦?11/06
内容反馈