关注公众号:『AI学习星球
』
回复:宠物小精灵
即可获取数据下载。
算法学习
、4对1辅导
、论文辅导
或核心期刊
可以通过公众号
或?v:codebiubiu
滴滴我
精灵宝可梦系列是一套由日本任天堂株式会社于1996年推出的一款游戏。独特的游戏系统广受大众的欢迎,年度产品销量近千万。
精灵宝可梦作品包括游戏、动画、漫画、卡片游戏及相关产品。宝可梦同时也是宝可梦世界所有虚构出来的物种所拥有的共同的名字。截至2017年10月,全系列的宝可梦共有805种。
基于此,我们可以对Pokémon的数据/变量进行统计分析,并从中发掘他们之间的关系,用可视化的方式进行直观的查看。
字段名称 | 字段描述 | 数据类型 |
---|---|---|
Number | Pokédex中的Pokémon ID | 整型 |
Name | Pokémon名称 | 字符串 |
Type_1 | 主要类别 | 字符串 |
Type_2 | 副类别 | 字符串 |
Total | 基本统计值的和 | 整型 |
1. HP | 生命值 | 整型 |
2. Attack | 攻击值 | 整型 |
3. Defense | 防御值 | 整型 |
4. Sp_Atk | 特殊攻击值 | 整型 |
5. Sp_Def | 特殊防御值 | 整型 |
6. Speed | 速度值 | 整型 |
Generation | 属于第几代Pokémon | 整型 |
isLegendary | 是否为传说中的Pokémon | 布尔值 |
Color | Pokémon颜色 | 字符串 |
hasGender | 是否有性别 | 布尔值 |
Pr_male | 可能为男性的概率 | 浮点型 |
Egg_Group_1 | 蛋群分组1 | 字符串 |
Egg_Group_2 | 蛋群分组2(如果有的话) | 字符串 |
hasMegaEvolution | 是否拥有Mega进化的能力 | 布尔值 |
Height_m | Pokémon的高度(单位为m) | 浮点型 |
Weight_kg | Pokémon的重量(单位为kg) | 浮点型 |
Catch_Rate | 捕获率 | 整型 |
Body_Style | 身体形状 | 字符串 |
# 引入必要的包
import csv
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
pokemon_data = pd.read_csv('pokemon.csv')
pokemon_data.head()
plt.figure(figsize=(10, 5))
# Type_1 的数量统计图
ax1 = plt.subplot(1, 2, 1)
sns.countplot(x='Type_1', data=pokemon_data)
plt.title('主要类别的数量统计')
plt.xticks(rotation='vertical')
plt.xlabel('主要类别')
plt.ylabel('数量')
# Type_2 的数量统计图
plt.subplot(1, 2, 2, sharey=ax1)
sns.countplot(x='Type_2', data=pokemon_data)
plt.title('副类别的数量统计')
plt.xticks(rotation='vertical')
plt.xlabel('副类别')
plt.ylabel('数量')
plt.tight_layout()
plt.figure(figsize=(10, 5))
# Egg_Group_1 的数量统计图
ax1 = plt.subplot(1, 2, 1)
sns.countplot(x='Egg_Group_1', data=pokemon_data)
plt.title('蛋群分组1的数量统计')
plt.xticks(rotation=60)
plt.xlabel('蛋群分组1')
plt.ylabel('数量')
# Egg_Group_2 的数量统计图
plt.subplot(1, 2, 2, sharey=ax1)
sns.countplot(x='Egg_Group_2', data=pokemon_data)
plt.title('蛋群分组2的数量统计')
plt.xticks(rotation=60)
plt.xlabel('蛋群分组2')
plt.ylabel('数量')
plt.tight_layout()
# 其余单变量数量统计
plt.figure(figsize=(10, 5))
# isLegendary 的数量统计图
ax1 = plt.subplot(2, 3, 1)
sns.countplot(x='isLegendary', data=pokemon_data)
plt.title('是否为传说类型的数量统计')
plt.xlabel('是否为“传说”')
plt.ylabel('数量')
# hasGender 的数量统计图
plt.subplot(2, 3, 2, sharey=ax1)
sns.countplot(x='hasGender', data=pokemon_data)
plt.title('是否有性别的数量统计')
plt.xlabel('是否有性别')
plt.ylabel('数量')
# hasMegaEvolution 的数量统计图
plt.subplot(2, 3, 3, sharey=ax1)
sns.countplot(x='hasMegaEvolution', data=pokemon_data)
plt.title('是否有Mega进化的数量统计')
plt.xlabel('是否有Mega进化')
plt.ylabel('数量')
# 颜色 的数量统计图
plt.subplot(2, 3, 4)
sns.countplot(x='Color', data=pokemon_data)
plt.xticks(rotation=60)
plt.title('颜色的数量统计')
plt.xlabel('颜色')
plt.ylabel('数量')
# 身形 的数量统计图
plt.subplot(2, 3, 5)
sns.countplot(x='Body_Style', data=pokemon_data)
plt.xticks(rotation=90)
plt.title('身形的数量统计')
plt.xlabel('身形')
plt.ylabel('数量')
# 第n代 的数量统计图
plt.subplot(2, 3, 6)
sns.countplot(x='Generation', data=pokemon_data)
plt.title('第n代的数量统计')
plt.xlabel('第n代')
plt.ylabel('数量')
plt.tight_layout()
# 数值型数据分布统计
plt.figure(figsize=(10, 5))
numeric_cols = ['Total', 'HP', 'Attack', 'Defense', 'Sp_Atk', 'Sp_Def', 'Speed', 'Pr_Male', 'Height_m', 'Weight_kg', 'Catch_Rate']
for i in range(len(numeric_cols)):
plt.subplot(4, 3, i + 1)
sns.distplot(pokemon_data[numeric_cols[i]].dropna())
plt.xlabel(numeric_cols[i])
plt.tight_layout()
plt.figure()
sns.pairplot(pokemon_data.dropna(), vars=numeric_cols, size=1)
corr_df = pokemon_data[numeric_cols].corr()
corr_df
plt.figure()
# 关闭格子线 (grid line)
ax = plt.gca()
ax.grid(False)
plt.imshow(corr_df, cmap='jet')
plt.xticks(range(len(numeric_cols)), numeric_cols, rotation='vertical')
plt.yticks(range(len(numeric_cols)), numeric_cols)
plt.colorbar()
plt.tight_layout()
该项目通过分析Pokemon数据,实践了Python数据分析常用的可视化操作,包括:
关注公众号:『AI学习星球
』
回复:宠物小精灵
即可获取数据下载。
算法学习
、4对1辅导
、论文辅导
或核心期刊
可以通过公众号
或?v:codebiubiu
滴滴我