天池赛:宝可梦数据分析–龙系小精灵分享

目录

一、数据集介绍

二、数据探索

         1.数据相关性

         2.查看各个种族的属性总值分布

         3.种族属性雷达图

三、总体可视化展示

四、龙系宝可梦数据可视化展示

附录

1、龙系宝可梦属性图

2、龙系宝可梦图鉴 

3、其它系传奇宝可梦图鉴


前言

这是一款经典游戏的数据分析,改编出了很多动画、电影,在全世界都很有名,也是很多人的童年回忆,通过数据集进一步的了解宝可梦的特征,分析的思路也可以天马行空,是一次不错的数据分析锻炼。


一、数据集介绍

本数据涵盖了从第一代到第七代共801只宝可梦小精灵的信息。数据特征上包含了基础的能力值,对于其他属性的克制能力,身高,体重,种类等等。

二、数据探索

1.数据相关性

身高、体重、第二属性存在部分缺失,但不影响后续的分析

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
df = pd.read_csv('/pokemon0820.csv')
correlation_matrix=df.corr()
plt.figure(figsize=(12,10))
sns.heatmap(correlation_matrix,vmax=0.9,linewidths=0.05,cmap="RdGy")

传奇宝贝与孵化阶段相关性很高,感兴趣的朋友可以对传奇宝贝建模预测,最后在特征输出时会发现孵化阶段这个特征对模型的贡献是最高的。

2.查看各个种族的属性总值分布

 构建属性总值并查看属性统计信息

df['attribute']=df['attack']+df['defense']+df['sp_attack']+df['sp_defense']+df['speed']+df['hp']
re_row=df['type1'].drop_duplicates()
col2 = ['attack','defense','sp_attack','sp_defense','speed','hp','attribute']
df[col2].describe().T #查看统计信息

# 画图
re_row=list(re_row)
plt.figure(figsize=(30,25))
j=1
for col1 in re_row:
    row_data=df[df['type1']==col1]
    ax=plt.subplot(5,4,j)
    ax=sns.distplot(row_data['attribute'],color='green',hist=True)
    ax.set_xlabel(col1,fontsize=20,color='red')
    ax.set_ylabel('Frequency')
    ax.tick_params(labelsize=15) # 调整坐标轴字体大小
    j+=1
plt.show() 

 

查看数据的分布可以帮助了解数据的形态,从而决定数据的特征表述方式,如果数据呈现正态分布,则均值是一个比较好的表述特征,如果呈现偏态分布,则中位数可能是更好的选择,本数据及的属性均值与中位数差距相近,后续分析可以采用均值表述。

3.种族属性雷达图

构建需要绘图的数据

from sklearn.preprocessing import MinMaxScaler
col = ['attack','defense','sp_attack','sp_defense','speed','hp']
data_scaled=df[col]
data_scaled=pd.concat([data_scaled,df['type1'],df['is_legendary']],axis=1,join='outer') # 外连接
# 分组统计
data_scaled1=data_scaled.groupby('type1').mean()
data_scaled1=data_scaled1.drop(['is_legendary'],axis=1)
# 构建传奇龙系属性 
data_scaled2=data_scaled.groupby(['is_legendary','type1']).mean().reset_index()
dat=data_scaled2[(data_scaled2['is_legendary']==1)&(data_scaled2['type1']=='dragon')] # 取出传奇的龙系
dat=dat.drop(['is_legendary'],axis=1)
dat=dat.rename({20:'dragon_legend'}) # 重命名行索引
# 构建其它传奇属性 
dat1=data_scaled.groupby(['is_legendary']).mean().reset_index()
dat1=dat1[dat1['is_legendary']==1]
dat1=dat1.drop(['is_legendary'],axis=1)
dat1=dat1.rename({1:'is_legendary'})
# 数据合并
data_scaled1=pd.concat([data_scaled1,dat,dat1],axis=0,join='outer') 
data_scaled1=data_scaled1.drop(['type1'],axis=1)
ind = list(data_scaled1.index) # 获取行索引
# 标准化
model_scaler = MinMaxScaler()  
data_scaled1 = model_scaler.fit_transform(data_scaled1)  # 标准化处理
data_scaled1= pd.DataFrame(data_scaled1,index=ind,columns=col)
data_scaled1 # 数据如下

 属性雷达图绘制

center_num = list(data_scaled1.index) # 获取行索引
labels = list(data_scaled1)  # 获取列索引
df1=data_scaled1.iloc[:,0:].values
# 雷达图
fig = plt.figure(figsize=(28,30))  
k=1
for i in range(len(data_scaled1)):
    ax = fig.add_subplot(5,4,k,polar=True)  # 增加子网格,注意polar参数
    data_tmp = np.array(df1[i])
    angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False)  # 计算各个区间的角度
    angles = np.concatenate((angles, [angles[0]]))  # 建立相同首尾字段以便于闭合
    radar_labels = np.concatenate((labels, [labels[0]])) # 新版的matplotlib,标签要建立相同首尾字段以便于闭合
    data = np.concatenate((data_tmp, [data_tmp[0]]))  # 建立相同首尾字段以便于闭合
    ax.plot(angles, data, 'o-', c='cyan', label=i)  # 画线
    ax.fill(angles, data,color='cyan',alpha=0.25)  # 填充背景
    ax.set_thetagrids(angles * 180 / np.pi, radar_labels, fontproperties="SimHei",fontsize=16)  # 设置极坐标轴
    ax.set_title(center_num[i], fontproperties="SimHei",fontsize=20,color='red')  # 设置标题放置
    ax.set_rlim(-0.5, 1.1)  # 设置坐标轴尺度范围
    k+=1
plt.show()

从属性图上可以看出龙系各个属性值都不低,传奇龙系更是碾压各个系。

三、总体可视化展示

水系宝可梦数量最多,飞行系最少。大部分宝可梦性别不确定,不过宝可梦游戏中性别不同对能力没有影响,可能会出现性别导致的形态差异。第1、3、5代的宝可梦总数量占比超50%。

龙系的平均属性总值最高,超过了500, 虫系最低,低于400,与上面雷达图展示一致。虫系历来就是被玩家认为是最弱的属性,大多抗性也不好,很多属性对虫系都有抵抗效果,好用的虫系宝可梦,数量也相对较少。但虫系的宝可梦培育的难度比较小,可以很快的进化到最终形态,能够在游戏的前期就能发挥不小的作用,所以就看玩家自己的选择了。

抗性方面:钢系抗性总值是最好的,除了地面、格斗、火属性伤害值相对较高,其余都比较低。岩石系及冰系抗性是最弱的,岩石系对格斗、草系、地面、钢系、水系抗性较低,冰系对火系、格斗、岩石、钢系抗性较低,龙系处于中间阶段。

尺寸方面:钢系、地面、龙系属于大型宝可梦,这几个系的大型宝可梦较多,同时龙系并不会因为体型较大而影响速度。

捕获率方面:龙系捕获率最低,传奇系远低于普通系,直到第七代,传奇系捕获率才有一个明显上升。毕竟龙系及传奇系本身就很强大,越强大的宝可梦就越稀少,捕获难度自然就高。

活跃指数方面:龙系及恶系都比较低,传奇宝可梦活跃指数低于普通宝可梦。

能力方面:所有种族平均能力都在2-3个,飞行系的平均能力最多,有3个,龙系相对偏少,只有2.22。

四、龙系宝可梦数据可视化展示

本次数据龙系一共27只,以主属性龙系为准,传奇龙系的宝可梦分别是:Latias、Latios、Rayquaza、Reshiram、Zekrom、Kyurem、Zygarde。下面就龙系宝可梦作一下简单展示。

龙系宝可梦主要分布在第3、5代,占比超50%,没有第2代。传奇龙系一共7只,占比25.93%,大部分还是没有性别设定。大部分龙系都具备2到3个特性能力,传奇龙系大部分只有一个特性能力。

龙系属性总值普遍都较高,传奇龙系都在600以上。

从攻、防、特攻、特防、速度、血量可以看出,传奇龙系相比普通龙系都高出一筹,其中Rayquaza偏攻击,它的攻、特攻都很高,速度也快,身体也很长。Zygarde偏物防,特防一般,但血量很厚。

抗性上,龙系还是被冰系、龙系、妖精系克制,从种族抗性图就可以看出,fairy的against_dragon没有显示出来,结合原始数据再看,都是0,是免疫龙属性伤害的。第六世代开始妖精系的出现对于龙属性宝可梦是一个不小的打击,它出现很重要的一部分就是对于龙系的削弱,毕竟还是有游戏平衡性的考虑。

龙系宝可梦抗性最强的是Reshiram,它的属性是dragon+fire,所以冰系对它的伤害就没有增幅,但对龙系、地面、岩石抗性相对较弱。

捕捉率及活跃指数都相对偏低,传奇龙系更低。

总体上来说:龙系宝可梦是很强大的,它的属性值在目前的宝可梦世界里面,是位列第一的,妖精系出现之前,只有冰系和龙系两个弱点,对水、火、草、电这四个属性都是有不错的抗性,龙属性强势的强攻型属性 ,代表龙系的风格大部分都是以攻击性为主,几乎都是输出手。加上龙系的稀有性,进化后强悍的体型,会让很多玩家产生收集培养的欲望。

附录

1、龙系宝可梦属性图

2、龙系宝可梦图鉴 

3、其它系传奇宝可梦图鉴

猜你喜欢

转载自blog.csdn.net/weixin_46685991/article/details/126799144