宝可梦数据分析

article/2025/9/17 23:47:45

pokemon_analysis

  • 一、分析背景
  • 二、分析步骤
  • 三、其他分析
  • 特别说明

一、分析背景

宝可梦数据分析-平民最强宝可梦选择方案

二、分析步骤

  • 下载数据集
  • 数据预处理
  • 数据分析及数据可视化
  • 结论

阿里云
导入库

#导入库
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

读取数据、查看前5行

#读取数据
df = pd.read_csv("pokemon.csv")
#查看前5行
df.head()

在这里插入图片描述
查看数据尺寸

#查看数据尺寸
df.shape

在这里插入图片描述
查看详细的每个列的信息

#详细的每个列的信息
df.info()

在这里插入图片描述
说明:可以看出数据有缺失

计算出每个特征有多少百分比是缺失的

# 计算出每个特征有多少百分比是缺失的
percent_missing = df.isnull().sum() * 100 / len(df)
missing_value_df = pd.DataFrame({'column_name': df.columns,'percent_missing': percent_missing
})
missing_value_df.sort_values(by='percent_missing', ascending=False).head(10)

在这里插入图片描述
说明:通过查看以上数据,我们可以发现,type2 这个字段缺失的比率最高,达到了 48% 左右。说明超过半数的宝可梦还是单纯的只有一个属性,剩下一般的则具有两种属性。

然后第二个问题就是:这么多宝可梦,每代分别有几只?这里我们可以通过简单的 df[‘generation’].value_counts() 来得到。但是为了更加直观的表现出不同代的宝可梦的数量差别,这里我们可以用pandas自带的画图的功能来绘制一个柱状图:通过查看以上数据,我们可以发现,type2 这个字段缺失的比率最高,达到了 48% 左右。说明超过半数的宝可梦还是单纯的只有一个属性,剩下一般的则具有两种属性。

然后第二个问题就是:这么多宝可梦,每代分别有几只?这里我们可以通过简单的 df[‘generation’].value_counts() 来得到。但是为了更加直观的表现出不同代的宝可梦的数量差别,这里我们可以用pandas自带的画图的功能来绘制一个柱状图:

查看各代口袋妖怪的数量

# 查看各代口袋妖怪的数量
df['generation'].value_counts().sort_values(ascending=False).plot.bar()

在这里插入图片描述
说明:不难发现,宝可梦数量最多的是在第5代,最少的是在第6代。然后我们再来看不同的主属性的分布。 这里我们可以先做一些简单的假设,比如虫属性的宝可梦种类比较多因为在剧中出现的频率相当高,而且有很多种进化。

查看每个系口袋妖怪的数量

# 查看每个系口袋妖怪的数量
df['type1'].value_counts().sort_values(ascending=True).plot.barh()

在这里插入图片描述
说明:这里我们将之前的柱状图横过来了,更便于观察。这里我们可以看到,数量最多的宝可梦是水系,然后是普通,然后是草系。虫系只排在了第四,并没有和预期中那样那么多。

看完了基础的一些分布,接下来我会想做一些简单的相关性分析。我们可以通过以下的代码生成相关性图来了解不同特征之间的关联,这对我们了解宝可梦的特性很有帮助。

相关性热力图分析

# 相关性热力图分析
plt.subplots(figsize=(20,15))
ax = plt.axes()
ax.set_title("Correlation Heatmap")
corr = df.corr()
sns.heatmap(corr, xticklabels=corr.columns.values,yticklabels=corr.columns.values)

在这里插入图片描述
说明:比如通过观察 attack 这一个特征和 height_m 是正相关的,我们可以得出:越高的宝可梦,攻击力越高。但是再看 height_m,我们会发现它和 base_happiness 是负相关的。这个时候我们可以作出另外一个结论:长得高的宝可梦可能都不太开心。

从宝可梦在实战中的角度来分析这组数据

接下来我们从宝可梦在实战中的角度来分析这组数据。这里我们只关注六个基础值:血量,攻击力,防御力,特攻,特防,速度。因为只有这六个基础值决定了一只宝可梦的战斗力在不考虑派系克制的情况下。

interested = ['hp','attack','defense','sp_attack','sp_defense','speed']
sns.pairplot(df[interested])

在这里插入图片描述
说明:这里我们可以看到大部分都是成正比例的,一个值的提高往往会拉高另外一个值。这点我们通过相关性热力图也可以看到

通过相关性分析heatmap分析五个基础属性

# 通过相关性分析heatmap分析五个基础属性
plt.subplots(figsize=(10,8))
ax = plt.axes()
ax.set_title("Correlation Heatmap")
corr = df[interested].corr()
sns.heatmap(corr, xticklabels=corr.columns.values,yticklabels=corr.columns.values,annot=True, fmt="f",cmap="YlGnBu")

在这里插入图片描述
看完这些以后,我们就可以开始计算种族值然后来选取我们的平民神兽了。毕竟不是每个人都能收服代欧奇希斯,超梦,梦幻这种传说级别的宝可梦。这里我们可以通过如下方式,先做一个特征类型转化,然后再计算

for c in interested:df[c] = df[c].astype(float)
df = df.assign(total_stats = df[interested].sum(axis=1)) 
df[df.total_stats >= 525].shape

在这里插入图片描述

df.info()

在这里插入图片描述
这样我们就完成了用 total_stats 这个字段来存储种族值这一特征。我们可以做个柱状图可视化来看看种族值的分布是什么样的:

种族值分布

# 种族值分布
total_stats = df.total_stats
plt.hist(total_stats,bins=35)
plt.xlabel('total_stats')
plt.ylabel('Frequency')

在这里插入图片描述
同时我们还可以根据不同的属性来看:

plt.subplots(figsize=(20,12))
ax = sns.violinplot(x="type1", y="total_stats",data=df, palette="muted")

在这里插入图片描述
找到非传说宝可梦但是种族值达到了的传说宝可梦级别的 最后我们就可以通过简单的过滤和排序来找到我们应该去捕捉的宝可梦了:

# 种族值大于570的,但是不是神兽的
df[(df.total_stats >= 570) & (df.is_legendary == 0)]['name'].head(10)

在这里插入图片描述
结论:
从结果上来看,我们平民宝可梦训练师应该考虑的Top10宝可梦应该是:妙蛙花,喷火龙,水箭龟,比雕,胡地,呆河马,耿鬼,袋兽,大甲,暴鲤龙。

三、其他分析

sns.jointplot("base_egg_steps", "experience_growth", data=df, height=5, ratio=3, color="g")

在这里插入图片描述

sns.jointplot("attack", "hp", data=df, kind="kde")

在这里插入图片描述

# 双系宝可梦数量统计
plt.subplots(figsize=(10, 10))sns.heatmap(df[df['type2']!='None'].groupby(['type1', 'type2']).size().unstack(),linewidths=1,annot=True,cmap="Blues"
)plt.xticks(rotation=35)
plt.show()

在这里插入图片描述

特别说明

本文章是参加阿里云Python训练营期间去的学习笔记


http://chatgpt.dhexx.cn/article/ed6RRSKQ.shtml

相关文章

4000字干货 | 如何搭建游戏数据分析平台?

本文作者为数数科技某游戏客户的运营总监,在使用数数科技的产品之前,他们在内部尝试自建数据分析平台,“从入门到放弃”。上线数数科技的大数据分析平台后,该公司一款全球下载量5000W+的休闲游戏每天所有的数据都在平台上流转。 1 为什么需要数据分析 移动游戏已经进入…

电子游戏销售数据分析(基于Python+Tableau)

1 项目简介 1.1 数据描述 (1)数据来源 本次分析所采用的数据来源于kaggle上的Video Game Sales数据集 ,该数据集通过爬虫从vgchartzwangz网站上获取,主要描述了全球市场上电子游戏的一个销售情况。电子游戏(Video G…

游戏数据分析用到的模型(二)留存率预估

本文主要参考了黎湘艳、叶洋的经典著作《游戏数据分析实战》。这本书堪称游戏数据分析的开山之作,这里向两位作者表示感谢。 关于留存率的模型,参考4.4.2节。 我们要先计算出1日留存率,2日留存率,……,N日留存率。 作…

数据分析实战—Video Game Sales电子游戏销售分析

文章目录 一、项目背景及目的1.1项目背景1.2分析目的 二、数据收集与整理2.1数据来源2.2数据说明2.3理解数据 三、数据清洗3.1导入数据3.2列字段重命名3.3缺失值处理3.4数据类型转换3.5异常值处理3.6保存数据为csv格式 四、数据分析4.1 从总体角度4.2 从平台角度4.3从类型角度4…

Python | 英雄联盟游戏数据分析

一、项目背景 EDG夺得2021英雄联盟全球总决赛冠军,这场比赛让所有观赛者热血沸腾,也唤起了我这个沉睡多年老玩家对MOBA游戏的兴趣,兴冲冲地下载了英雄联盟,却发现这并不是一个可以轻松上手的游戏。 对于时下最流行的MOBA类游戏—…

【毕业设计】大数据 - 网络游戏数据分析可视化

文章目录 1. 数据集说明2. 数据处理3. 数据分析可视化3.1 新增用户3.2 用户活跃度3.3 用户消费情况3.4 用户游戏情况 4 最后 🧿 选题指导, 项目分享: https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5…

游戏数据分析方法-活跃向

许多公司都会做数据分析系统。而不同游戏产品,一个产品的不同阶段,不同版本所分析的内容都是会跟进实际需求而不一样的。所以除了一些通用的数据指标外,针对不同的问题,分析方法也不一样,这里举几个案例来展示一般的数…

电子游戏数据分析报告

数据分析报告结论: 1.时间维度分析,从全球各地区的销售额变化趋势来看,全球销售额整体是从1980年开始逐步上升直到2008年达到销量顶峰后逐步降低,2008年后直接逐步下降,局部在2000年及2003年都有稍有下跌,…

python游戏数据分析

python游戏数据分析 数据分析思维导图 1.项目背景简介 本次项目分析所用数据集来源于kaggle steam游戏各地区销售数据,可以通过不同国家、发布者、游戏类型,地区收益等因素,对销售数据进行分析,提出有效的建议,帮助…

游戏数据分析小总结

数据分析步骤 明确要求 数据收集 企业内部数据 企业外部数据 数据处理 数据分析 数据分析即用适当的数据分析方法及工具,对处理过的数据进行分 析,提取有价值的数据,形成有效结论的过程。常用的分析方法有对比分析法、分组分析法、结构…

《游戏数据分析实战》总结思考

对于一个游戏行业的门外汉,这本书对于了解游戏业务具有很强的指导性,通过大量的案例说明了游戏这一具有特殊行业逻辑的行业,如何针对性地进行数据分析。 一、游戏关键数据指标 1、转化率——从点击广告到付费的每一步转化(常使用…

【数据分析项目实战】篇1:游戏数据分析——新增、付费和用户行为评估

目录 0 结论 1 背景介绍 1.1 游戏介绍 1.2 数据集介绍 2 分析思路 3 新增用户分析 3.1 新增用户数: 3.2 每日新增用户数: 3.3 分析 4 活跃度分析 4.1 用户平均在线时长 4.2 付费用户平均在线时长 4.3 日活跃用户(日平均在线时长…

游戏的数据和分析

一、关于数据 数据可以分为两类,一类为运营指标数据。一类为业务行为数据。 1.运营指标数据 比如DAU,PCU,LTV,ROI等常用的代表游戏目前线上运营状态的一些数据指标,用单个指标或者多个指标组合来反映游戏目前的线上运营状态,指标之间一般都有…

游戏数据分析

游戏数据分析 学习目标 知道游戏行业关键数据指标掌握ARPU, ARPPU等指标的计算方法 一、游戏行业关键数据指标 1.1 运营数据 激活数据 总激活码发放量、总激活量、总登录账号数激活率、激活登录率 激活率 激活量 / 安装量(激活码的)激活率 激活量 / 激活码发放…

游戏数据分析 | 用户流失原因分析

流失用户分析的方法有很多,常见的方法有流失等级分布、 等级停滞率、分渠道和平台的留存率对比、主线任务持有率。本文将从合理定义流失用户、客户端卸载原因和5W1H分析法来分析流失用户,并且用聚类分析对活跃用户进行细分,其目标在于更好地了…

Google Play Store谷歌应用商店游戏数据分析

数据集:Google Play Store Apps 网址:https://www.kaggle.com/lava18/google-play-store-apps?selectgoogleplaystore.csv 此数据集包含了两个csv文件,一个是Google play store app的整体数据,一个是Google play store用户评论的…

Vue向下滚动加载更多数据-scroll-案例

vue-infinite-scroll 安装 npm install vue-infinite-scroll --save尽管官方也推荐了几种载入方式,但“最vue”的方式肯定是在main.js中加入 import infiniteScroll from vue-infinite-scroll Vue.use(infiniteScroll)实现范例 官方给的代码范例是假设你在根组件…

jQuery 上拉加载更多

上拉加载,当用户浏览到页面底部时候,自动加载下一页的内容 不管是上拉加载还是下拉刷新,其实都离不开一个关键的事件:滚动条滚动事件。 本demo是窗口的滚动条事件,如果需要指定某个元素做上拉加载功能,请手…

uniapp实现上拉加载更多

目录 一、添加全部 1.在主页面中添加一列 2.改云函数 3.插件市场导入 加载中组件 二、实现上拉加载 1.云函数中可以接收参数 2.获取下拉事件 3.写触发这个下拉干嘛 在 显示加载中的组件里面 一、添加全部 1.在主页面中添加一列 data.unshift({name:全部}) //添加一列 …

element-ui,实现点击“加载更多“

首先&#xff0c;实现的大概效果如下&#xff1a; 接下来代码如下: <el-dialog v-el-drag-dialog title"预览" :visible.sync"dialogFormPreview" width"500px" ><div v-for"item in logList.slice(0,loadNum)" :key"i…