电子游戏数据分析

电子游戏数据分析

使用 python 和 Jupyter notebook 进行视频游戏数据分析

Photo by JESHOOTS.COM on 不飞溅

抽象的

大家好,在这个绝佳的机会我将分享我最新的项目数据分析。为此,我非常感谢 木星 为他们的数据分析程序提供大约 60 小时的平台,并为我通过具有挑战性的最终任务。

起初我很难从 木星 平台,我几乎放弃了,决定专注于对电子表格、SQL和powerbi进行数据分析。

但我再次尝试并尽我所能将最终任务完善到最高质量,然后我通过了。这是我数据分析生涯中最伟大的经历之一,因为我刚刚进入数据分析生涯。

至于项目,我将分享最终的任务项目 木星 这里。

技术介绍

作者将从头到尾使用 python 和 Jupyter notebook,至于数据集,作者是从 Kaggle 收到的。

文件: IMDB 电子游戏

数据分析师:作者本人

工具:Python 和 Jupyter 笔记本

目标:从数据集中找到销售洞察力

目标决策是基于文件中给定的数据集,纯粹从作者的角度和知识经验来推断这种行为。

Video games dataset

准备

对于这一步,作者将准备好所有必要的库,例如 opendatasets、NumPy、pandas、matplotlib、os 和 seaborn。

编码:

进口 ** 数字货币** 作为 ** np** _
进口_ ** 熊猫** 作为 ** PD** _
进口_ ** matplotlib.pyplot** 作为 ** plt** _
进口_ ** 海运** 作为 ** sns** _
进口_ ** 开放数据集** 作为 ** ** _
%matplotlib 内联_

注意:matplotlib inline 用于在 jupyter 行上显示数据可视化,而不是作为弹出模式

第 1 步:选择真实世界的数据集

我们将使用 opendatasets 库导入数据集。

编码:

进口 ** 开放数据集** 作为 ** ** _
_ ** ** 。下载(' https://www.kaggle.com/datasets/gregorut/videogamesales' )

 请提供您的 Kaggle 凭据以下载此数据集。学到更多:[ http://bit.ly/kaggle-creds](https://bit.ly/kaggle-creds)  
 你的 Kaggle 用户名:armansyahhakim  
 你的 Kaggle 密钥:········  
 将 videogamesales.zip 下载到 ./videogamesales 100%|██████████| 381k/381k [00:00<00:00, 104MB/s]

注意:当您尝试下载数据集时,系统会要求您提供用户名和 API 密钥,因为您尝试从 kaggle 获取数据集。您可以简单地查找您的个人资料并搜索帐户选项卡。在 API 部分下,您可以单击创建新 API 令牌以在 txt 文件中获取您的用户名和 api 密钥

现在我们将看到数据集列表

编码:

进口 ** 操作系统** _
_ ** 操作系统** .listdir('videogamesales')

 ['vgsales.csv']

现在让我们用 pandas 打开数据集

编码:

df = ** PD** .read_csv('videogamesales/vgsales.csv')
df

dataset

关于数据集

该数据集包含销量超过 100,000 份的视频游戏列表。它是由 vgchartz.com 的抓取生成的。

以下是每列的定义:

  • Rank - 总销售额的排名
  • 名称 - 游戏名称
  • 平台 — 游戏发布平台(即 PC、PS4 等)
  • Year - 游戏发行年份
  • 流派——游戏的流派
  • Publisher——游戏的发行商
  • NA_Sales — 北美销售额(百万)
  • EU_Sales — 在欧洲的销售额(以百万计)
  • JP_Sales — 日本的销售额(百万)
  • Other_Sales — 世界其他地区的销售额(百万)
  • Global_Sales — 全球总销售额。

注意:抓取数据的脚本可在 https://github.com/GregorUT/vgchartzScrape .它基于使用 Python 的 BeautifulSoup。有 16,598 条记录。由于信息不完整,有 2 条记录被删除。

现在我们将看到列列表

编码:

df.columns

 Index(['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales',  
 'EU_Sales'、'JP_Sales'、'Other_Sales'、'Global_Sales']、  
 dtype='对象')

而且我们可以看到每一列的数据类型

编码:

df.info()

 <class 'pandas.core.frame.DataFrame'>  
 RangeIndex:16598 个条目,0 到 16597  
 数据列(共11列):  
 # 列非空计数 Dtype  
 --- ------ -------------- -----  
 0 Rank 16598 非空 int64  
 1 名称 16598 非空对象  
 2 平台 16598 非空对象  
 3 年 16327 非空 float64  
 4 类型 16598 非空对象  
 5 Publisher 16540 非空对象  
 6 NA_Sales 16598 非空 float64  
 7 EU_Sales 16598 非空 float64  
 8 JP_Sales 16598 非空 float64  
 9 Other_Sales 16598 非空 float64  
 10 Global_Sales 16598 非空 float64  
 数据类型:float64(6)、int64(1)、object(4)  
 内存使用:1.4+ MB

我们将看到基于数据集的基本统计信息

编码:

df.describe()

dataset describe

最后我们将看到总行数和总列数

编码:

df.shape

 (16598, 11)

现在我们已经完成了这些步骤,让我们进行下一步数据准备和数据清洗

第 2 步:执行数据准备和清理

第一步,我们将尝试查找任何重复的数据

编码:

df.duplicated().sum()

 0

似乎数据集中没有重复的数据。但只是为了确保我们将反转以对所有非重复数据求和,行结果必须与当前行的总数相同。

编码:

(~df.duplicated()).sum()

 16598

现在让我们检查数据集总行

编码:

df.shape

 (16598, 11)

是的,总行结果是一样的!

现在进行第二步,我们将检查是否有任何空数据

编码:

df.isna().sum()

df_isna_sum

'Year' 和 'Publisher' 都有空数据。所以让我们检查一下

编码:

df[df['年份'].isna()]

null data year

对于“年份”列,有 271 个数据包含空值。我们可以从其他数据中检查是否可以用其他有用的数据替换,如果不能,我们可以用 0 替换它。

编码:

df['年份'].value_counts()

 2009.0 1431  
 2008.0 1428  
 2010.0 1259  
 2007.0 1202  
 2011.0 1139  
 2006.0 1008  
 2005.0 941  
 2002.0 829  
 2003.0 775  
 2004.0 763  
 2012.0 657  
 2015.0 614  
 2014.0 582  
 2013.0 546  
 2001.0 482  
 1998.0 379  
 2000.0 349  
 2016.0 344  
 1999.0 338  
 1997.0 289  
 1996.0 263  
 1995.0 219  
 1994.0 121  
 1993.0 60  
 1981.0 46  
 1992.0 43  
 1991.0 41  
 1982.0 36  
 1986.0 21  
 1989.0 17  
 1983.0 17  
 1990.0 16  
 1987.0 16  
 1988.0 15  
 1985.0 14  
 1984.0 14  
 1980.0 9  
 2017.0 3  
 2020.0 1  
 名称:年份,数据类型:int64

因为我们根本没有“年份”列的线索。我们可以用 0 代替它

编码:

df['年份'].fillna(0, inplace=True)

让我们再次检查数据集

编码:

df.isna().sum()

 排名 0  
 名称 0  
 平台 0  
 0 年  
 类型 0  
 出版商 58  
 NA_销售  
 EU_Sales 0  
 JP_销售额 0  
 其他_销售 0  
 Global_Sales 0  
 数据类型:int64

是的,'Year' 列中的所有空数据都被 0 替换。现在我们将继续下一列; '出版商'。

发布者是定义游戏发布者的列。现在我们将看到空数据。

编码:

df[df['Publisher'].isna()]

null data publisher

与“年份”列类似的情况。我们根本没有线索。一般情况下,数据分析师应该向数据工程师或其他部门索要这个空数据。在这种情况下,作者将简单地将空数据替换为“未知”。

编码:

df['Publisher'].fillna('Unknown', inplace=True)

df.isna().sum()

 排名 0  
 名称 0  
 平台 0  
 0 年  
 类型 0  
 发布者 0  
 NA_销售  
 EU_Sales 0  
 JP_销售额 0  
 其他_销售 0  
 Global_Sales 0  
 数据类型:int64

是的。我们不再有任何空数据。

第 3 步:执行探索性分析和可视化

在我们提问之前。如果我们对数据集有深入的了解并根据每一列进行可视化,这将更简单。

  • Rank — 总销售额排名

  • 名称 - 游戏名称

  • 平台 — 游戏发布平台(即 PC、PS4 等)

  • Year - 游戏发行年份

  • 流派——游戏的流派

  • Publisher — 游戏的发行商

  • NA_Sales — 北美销售额(以百万计)

  • EU_Sales — 在欧洲的销售额(以百万计)

  • JP_Sales — 日本的销售额(百万)

  • Other_Sales — 世界其他地区的销售额(以百万计)

    • Global_Sales — 全球总销售额。

注意:我们只会从每列中获得最终见解,而不是从头开始解释第 3 部分的所有内容

让我们先看看数据集

dataset

现在我们将看到前 10 名和后 10 名

top 10 games

bottom 10 games

似乎整体销售额的排名是根据“Global_sales”列确定的。只需查看“排名”列,我们就可以轻松了解每款游戏的总销售额。该假设基于前 10 名游戏,但查看后 10 名游戏。

似乎有来自“Global_Sales”的多个数据共享相同的数据。这会导致数据不明确。

对于后 10 名,排名系统不再有意义,因为没有评分系统来说明为什么将一场比赛放在该行的下方或上方。

姓名

top 10 games by global sales

bottom 10 games by global sales

对于这种情况,由于大量的低排名位置共享相似的数据,我们很难确定最低的游戏全球销量,但我们可以很容易地从上面的数据中看到前 10 名的游戏。

平台

total global sales sum by platform

按平台计算的全球销售额。 Playstation 2 在排行榜上占据主导地位,同时,PCFX 是最不受欢迎的平台。

each highest game by platform 1

each highest game by platform 2

但是寻找上面的数据。当涉及到每个平台上最高的特定游戏销售额时。 Wii 的游戏 Wii 运动销量最高,而 PlayStation 2 的游戏名为 GTA:圣安地列斯。

the total sum of each year by global sales

从图表中,我们可以确定2008年是游戏行业最赚钱的一年。从上图看,2013 年是利润最低的一年。

类型

total game of each genre

从上面的数据我们知道类型动作比其他动作有更多的游戏发布。虽然拼图游戏的总发行量最少。

the total sum of the genre by global sales

同样从上图中,按总销售额计算,动作是世界上最赚钱的类型。虽然该策略是利润最低的类型。

出版商

top 20 publishers with a total count of games

根据图表,Electronic Arts 发行商的游戏发行总量最多,而 505 款游戏的发行总量最少。

第 4 步:询问和回答有关数据的问题

通过探索数据集的各个列,我们已经获得了关于受访者和编程社区的一些见解。让我们提出一些问题并尝试使用数据框操作和可视化来回答它们。

这是问题列表:

1. 全球及各销售地区(北美、欧洲、日本等)销量最高的游戏有哪些
2. 全球和各销售区域(北美、欧洲、日本等)最受欢迎的平台有哪些
3. 全球和各销售区域(北美、欧洲、日本等)最不受欢迎的平台是什么
4、游戏行业哪一年最赚钱
5. 游戏行​​业哪一年利润最低
6. 全球和各销售地区(北美、欧洲、日本等)最受欢迎的类型是什么
7. 全球和各销售地区(北美、欧洲、日本等)最不受欢迎的性别是什么
8. 制作一款游戏最活跃的发行商是什么(最赚钱的发行商)
9. 根据数据集列,哪个销售区域的利润最高
10. 根据数据集列,哪个销售区域的利润最低。

1. 全球及各销售地区(北美、欧洲、日本等)销量最高的游戏有哪些

top 10 games by global sales

top 10 games by North America sales

top 10 games by European sales

top 10 games by japan sales

top 10 games by other sales(other than North America, Europe, and Japan)

基于以上数据可视化,Wii 运动在北美、欧洲乃至全球都占据主导地位。但在日本口袋妖怪系列更受欢迎,有趣的是,日本是唯一一个销售额的地区,他们的前 10 名游戏几乎与其他地区的销售额不相似。与此同时,全球、北美、欧洲和其他地区的数据也有相似之处。

2. 全球最受欢迎的平台及各销售区域(北美、欧洲、日本等)

top 10 platforms by global sales

top 10 platforms by North America sales

top 10 platforms by Europe sales

top 10 platforms by Japan sales

top 10 platforms by other sales

基于以上数据可视化,PS2 和 PS3 相互竞争,主导着除日本以外的每个地区的销售。在日本,任天堂 ds 的总销量高于 PlayStation。

3. 全球和各销售区域(北美、欧洲、日本等)最不受欢迎的平台是什么

bottom 10 platforms by global sales

bottom 10 platforms by North America sales

bottom 10 platforms by European sales

bottom 10 platforms by Japan sales

bottom 10 platforms by other sales

基于数据可视化,北美、欧洲等共享相似度最低的平台;总体而言,PCFX 最不受欢迎。同时,在日本,watari 2600 在日本是最不受欢迎的。

4. 游戏行​​业哪一年盈利最多,哪一年盈利最少

game profit of each year by global sales

game profit for each year by North America sales

game profit for each year by European sales

game profit for each year by Japan sales

game profit for each year by other sales

根据以上所有地区销售额的数据,2007-2010 年可能是每个地区销售额最高的年份,除了日本是 2006 年销售额最高的年份。而 2017 年和 2020 年是每个地区销售额中利润最低的年份。

5. 世界上和每个销售地区(北美、欧洲、日本等)最受欢迎和最不受欢迎的类型是什么

game profit for each year by global sales

game profit by each genre by North America sales

game profit for each genre by European sales

game profit for each genre by Japan sales

game profit by each genre by other sales

根据以上数据。动作类型在除日本以外的所有地区销售中占主导地位。角色扮演在日本销量最高。同时,策略在每个地区的销售额中都排在最后,日本除外,而射击类型则排在列表的底部。

6. 什么发行商制作一款游戏最多(最赚钱的发行商)

top 20 publishers by global sales

top 20 publishers by North America sales

top 20 publishers by European sales

top 20 publishers by Japan sales

top 20 publishers by other sales

根据上面的数据可视化,我们可以假设任天堂主导了除其他销售之外的每个地区的销售。根据数据,我们仍然不知道另一列中列出的是哪个国家。但我们可以假设它是除北美、欧洲和日本之外的国家列表。话虽如此,电子艺术似乎首次在其他地区的销售中占据主导地位,因为日本取得了与其他地区不同的结果。

7. 根据数据集列,哪个销售区域的利润最高和最低

comparison for each region's sales total profit

comparison for each region's sales total profit in a fraction

第 5 步:总结你的推论并写下结论

以下是我们从数据中发现的所有发现的摘要

  • 根据数据,PlayStation 似乎在平台变量方面主宰了世界,尤其是 PlayStation 2 和 PlayStation 3。

  • Wii 运动在游戏变量的大部分地区销售中占主导地位,而 PCFX 是最不受欢迎的地区。

  • 2007-2010 年是世界游戏行业利润最高的一年,而 201 年和 2020 年是利润最低的一年。

  • 根据数据,动作类型被认为是最受欢迎的类型,而策略是最不流行的类型。

  • 任天堂是该地区大部分地区最赚钱的游戏开发商公司。

  • 北美是世界游戏行业销售额最高的地区,其次是欧洲、日本和其他地区。

  • 同样从这个数据集中,我们了解到日本几乎每个类别都有不同的数据结果。有趣的是,日本可以在游戏行业拥有自己的市场,这是任何想要在日本建立游戏公司的游戏开发商都需要考虑的一件事

  • 北美和欧洲总是(几乎)在每个国家共享相似的数据。

第 6 步:参考文献

数据集来自 Kaggle 你可以在这里查看 https://www.kaggle.com/datasets/muhammadadiltalay/imdb-video-games

熊猫用户指南: https://pandas.pydata.org/docs/user_guide/index.html

Matplotlib 用户指南: https://matplotlib.org/3.3.1/users/index.html

Seaborn 用户指南: https://seaborn.pydata.org/tutorial.html

Numpy 用户指南: https://numpy.org/doc/stable/reference/

开放数据集用户指南: https://github.com/JovianML/opendatasets

概括

作为入门级数据分析师,python 是最难的数据分析师工具。作者必须从一开始就学习编程的基础知识。但是作者很幸运,因为有很多在线平台,尤其是Jovian,从一开始就教会了我们。

作者试图磨练自己的技能,尤其是对于 pandas 库和 matplotlib 库。此外,我们还必须了解 Jupyter notebook 中的几个命令和快捷方式。

作者发现 pandas 和 matplotlib 足以进行数据分析,但当然,这取决于数据集级别和需求。如果我们必须做复杂的数学函数,Numpy 会支持我们。如果我们想要更高级的可视化,seaborn 将比 matplotlib 完成这项工作。但这真的取决于我们作为数据分析师来进行数据分析。至于作者,还是先研究pandas和matplotlib比较简单,后面的就跟上。

作者计划继续使用电子表格、powerbi 和 python 创建项目。谢谢你。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/40266/51160117

posted @ 2022-10-01 17:51  哈哈哈来了啊啊啊  阅读(203)  评论(0编辑  收藏  举报