数据分析-20-宠物小精灵数据挖掘(包含数据代码)

0. 数据代码获取

关注公众号:『AI学习星球
回复:宠物小精灵 即可获取数据下载。
算法学习4对1辅导论文辅导核心期刊可以通过公众号或➕v:codebiubiubiu滴滴我
在这里插入图片描述


1. 项目描述

精灵宝可梦系列是一套由日本任天堂株式会社于1996年推出的一款游戏。独特的游戏系统广受大众的欢迎,年度产品销量近千万。

精灵宝可梦作品包括游戏、动画、漫画、卡片游戏及相关产品。宝可梦同时也是宝可梦世界所有虚构出来的物种所拥有的共同的名字。截至2017年10月,全系列的宝可梦共有805种。

基于此,我们可以对Pokémon的数据/变量进行统计分析,并从中发掘他们之间的关系,用可视化的方式进行直观的查看。

2. 数据集描述

字段名称字段描述数据类型
NumberPokédex中的Pokémon ID整型
NamePoké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布尔值
ColorPokémon颜色字符串
hasGender是否有性别布尔值
Pr_male可能为男性的概率浮点型
Egg_Group_1蛋群分组1字符串
Egg_Group_2蛋群分组2(如果有的话)字符串
hasMegaEvolution是否拥有Mega进化的能力布尔值
Height_mPokémon的高度(单位为m)浮点型
Weight_kgPokémon的重量(单位为kg)浮点型
Catch_Rate捕获率整型
Body_Style身体形状字符串

3. 项目任务

  • 单变量分析
  • 变量间关系分析

4. 项目实现

# 引入必要的包
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()

在这里插入图片描述

4.1 单变量分析

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()

在这里插入图片描述

4.2 变量间关系分析

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()

在这里插入图片描述

5. 项目总结

该项目通过分析Pokemon数据,实践了Python数据分析常用的可视化操作,包括:

  • 单变量数据可视化
  • 变量间关系可视化

关注公众号:『AI学习星球
回复:宠物小精灵 即可获取数据下载。
算法学习4对1辅导论文辅导核心期刊可以通过公众号或➕v:codebiubiu滴滴我
在这里插入图片描述

  • 40
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值