目标:
一、各系数量分析
二、各世代宝可梦数量分析
三、种族值分析
四、传说宝可梦分析
五、各世代推荐宝可梦
六、特性分析:特性种类、隐藏特性种类、占比(待更新)
源数据:腾讯文档docs.qq.com
#导入三个Python常用数据分析的库
import numpy as np
import pandas as pd
#画图包导入
import matplotlib.pyplot as plt
plt.style.use(style="ggplot")
#import missingno as msno
import seaborn as sns
sns.set() #设置画图空间为 Seaborn 默认风格
#将文件读取进来
pokemon = pd.read_excel("/Users/glenji/Desktop/pokemon (1).xlsx")
零、宝可梦数据概况&指标解释
#指标解释
#abilities-1特性1,abilities-2特性2,abilities-x特性x
#classfication宝可梦分类、classfication-CN宝可梦中文分类
#type1属性1,type2属性2
#attack攻击
#defense防御
#hp血量
#sp_attack特攻
#sp_defense特防
#speed速度
#base_total种族值总数
一、各系数量分析
总结:以下分析仅为单系,双系的分析暂无。
各系中,水系、一般系、草系三个的数量比较多,其中水系占比13.56%,一般系占比12.02%,草席占比9.48%;
各系中,飞行系占比最少,仅0.37%(唯一一个低于1%的);
①各系的数量:先做个简单的计数统计,可以初步看到水系、一般系、草系三个的数量比较多。水系那么多,可能因为日本靠海,他们比较喜欢吃鱼吧哈哈哈。
#查看各系的数量
out = pokemon[['type1','is_legendary']].groupby('type1').count()
print(out)
②绘制一个柱形图来看看效果:
#柱形图查看各世代宝可梦不同种族数量
pokemon['type1-EN'].value_counts().plot.bar()
③绘制饼图看看效果:水系、一般系、草系为数量前三位,冰系、妖精系、飞行系为数量后三位,有点出乎意料,飞行系竟然是最少的,仅0.37%(唯一一个低于1%的)。水系占比13.56%,一般系占比12.02%,草席占比9.48%。
#查看各系的占比
#水系是最多的,为什么呢,可能是因为日本人靠海喜欢吃鱼吧哈哈哈
fig,ax = plt.subplots(2,1,figsize=(15,10))
pokemon['type1-EN'].value_counts().plot.pie(ax=ax[0],shadow=False,autopct='%1.2f%%')
ax[0].set_ylabel('') #设置y轴标签
ax[0].set_xlabel('type1-EN') #设置x轴标签
sns.countplot('type1-EN',data=pokemon,ax=ax[1])
ax[1].set_ylabel('')
ax[1].set_xlabel('type1-EN')
plt.show()
二、各世代宝可梦分析
总结:
第5世代是宝可梦数量最多的世代有156只,第6世代是宝可梦数量最少的世代,仅72只;
①先做个简单的计数统计(value_counts),可以看到第5世代是宝可梦数量最多的世代有156只,第一世代次之(第一世代的151手办现在已经很贵很贵很贵了);第6世代是宝可梦数量最少的世代,才72只。
#计算一下各世代的宝可梦数量
pokemon['generation'].value_counts()
②再画个柱形图看看效果:
#柱形图查看各世代宝可梦数量
pokemon['generation'].value_counts().plot.bar()
三、种族值解析
总结:
种族值6大属性中,血量hp的异常值较多;
整体种族值呈双峰分布,以300和500左右的分布较多;
龙系的种族值均值高达515,是最值得培育的种族,其次是钢系、超能力系;而虫系是最可怜的种族,平均种族值仅有378,草系、一般系也惨兮兮;
种族值均值为439,中位数是440,培育宝可梦如果在乎强度,那应该选择高于这两值的宝可梦,如果是真爱党的话,则无所谓了;
①绘制线箱图查看各种族值的大致情况:可以看到hp即血量的异常值较多。
#绘制线箱图
#可以看到hp的异常值较多
plt.figure(figsize=(10,5)) #设置画布大小