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

article/2025/9/17 23:41:27

1 项目简介

1.1 数据描述

(1)数据来源

本次分析所采用的数据来源于kaggle上的Video Game Sales数据集 ,该数据集通过爬虫从vgchartzwangz网站上获取,主要描述了全球市场上电子游戏的一个销售情况。电子游戏(Video Games,少部分学者使用Electronic Games)又称电玩游戏(简称电玩),是指所有依托于电子设备平台而运行的交互游戏。根据媒介的不同多分为五种:主机游戏(或称家用机游戏、电视游戏)、掌机游戏、电脑游戏、街机游戏和移动游戏(主要是手机游戏)。一般市场上我们所接触的游戏都是电子游戏。

(2)数据描述

首先将数据集导入Python中进行分析,观察数据集所存在的字段及属性。

#导入常用包
import numpy as np
import pandas as pd #导入数据
data=pd.read_csv('vgsales.csv')
data.info()   #给出样本数据的相关信息概览 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 16598 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16598 non-null int64
Name            16598 non-null object
Platform        16598 non-null object
Year            16327 non-null float64
Genre           16598 non-null object
Publisher       16540 non-null object
NA_Sales        16598 non-null float64
EU_Sales        16598 non-null float64
JP_Sales        16598 non-null float64
Other_Sales     16598 non-null float64
Global_Sales    16598 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.4+ MB

可以知道数据集有16598个样本,11个字段,各个字段的主要含义如下:

1.2 分析背景及目的

根据现有的字段,可以从用户、发行商、市场三个方面去分析,得到近年来电子游戏的市场销售情况,具体关注的问题和指标如下:

(1)用户层面

最受用户喜爱的前十款游戏是什么?
用户最常玩的游戏类型是什么?
用户常用的游戏平台是什么?

(2)发行商层面

销量最好的发行商是?前十有哪些?
发行商的发布游戏数量情况?

(3)市场层面

全球市场电子游戏销售额如何变化?
四大地区市场总额如何变化?
主流游戏类型、游戏平台的变化。

(4)数据预测

预测未来两年电子游戏销售总额

1.3 分析思路

进一步,通过数据分析完成对上面问题的回答,分析思路为先采用Python进行数据清洗,再通过tableau进行数据分析及可视化。

2 数据清洗

2.1 缺失值处理

data.head()
RankNamePlatformYearGenrePublisherNA_SalesEU_SalesJP_SalesOther_SalesGlobal_Sales
01Wii SportsWii2006.0SportsNintendo41.4929.023.778.4682.74
12Super Mario Bros.NES1985.0PlatformNintendo29.083.586.810.7740.24
23Mario Kart WiiWii2008.0RacingNintendo15.8512.883.793.3135.82
34Wii Sports ResortWii2009.0SportsNintendo15.7511.013.282.9633.00
45Pokemon Red/Pokemon BlueGB1996.0Role-PlayingNintendo11.278.8910.221.0031.37
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 16598 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16598 non-null int64
Name            16598 non-null object
Platform        16598 non-null object
Year            16327 non-null float64
Genre           16598 non-null object
Publisher       16540 non-null object
NA_Sales        16598 non-null float64
EU_Sales        16598 non-null float64
JP_Sales        16598 non-null float64
Other_Sales     16598 non-null float64
Global_Sales    16598 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.4+ MB

根据上表各字段的属性可知,年份(Year)字段和Publisher(发行商)存在缺失值,根据现有信息无法进行缺失样本的年份判断,进行缺失填补也不符合常理,因此,将年份字段存在缺失值的个案删除。

df=data.dropna(subset=['Year'])  #删除Year列中存在缺失值的行
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16327 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16327 non-null int64
Name            16327 non-null object
Platform        16327 non-null object
Year            16327 non-null float64
Genre           16327 non-null object
Publisher       16291 non-null object
NA_Sales        16327 non-null float64
EU_Sales        16327 non-null float64
JP_Sales        16327 non-null float64
Other_Sales     16327 non-null float64
Global_Sales    16327 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.5+ MB

此时发行商变量还存在缺失值,考虑到所缺失的个数为36个,缺失的比例极小,可以直接将该变量缺失的个案删除。

df1=df.dropna(subset=['Publisher'])
df1.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16291 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16291 non-null int64
Name            16291 non-null object
Platform        16291 non-null object
Year            16291 non-null float64
Genre           16291 non-null object
Publisher       16291 non-null object
NA_Sales        16291 non-null float64
EU_Sales        16291 non-null float64
JP_Sales        16291 non-null float64
Other_Sales     16291 non-null float64
Global_Sales    16291 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.5+ MB

已经不存在缺失值,考虑可能存在重复个案,删除重复值。

2.2 重复值处理

df1.drop_duplicates(inplace=True)   #删除列完全重复的个案
df1.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16291 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16291 non-null int64
Name            16291 non-null object
Platform        16291 non-null object
Year            16291 non-null float64
Genre           16291 non-null object
Publisher       16291 non-null object
NA_Sales        16291 non-null float64
EU_Sales        16291 non-null float64
JP_Sales        16291 non-null float64
Other_Sales     16291 non-null float64
Global_Sales    16291 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.5+ MB

没有重复值,进一步分析数据的异常值情况。

2.3 异常值处理

考虑到数据为包含时间的面板数据,查看各年份的数据分布情况。

df1.groupby('Year').count()
RankNamePlatformGenrePublisherNA_SalesEU_SalesJP_SalesOther_SalesGlobal_Sales
Year
1980.09999999999
1981.046464646464646464646
1982.036363636363636363636
1983.017171717171717171717
1984.014141414141414141414
1985.014141414141414141414
1986.021212121212121212121
1987.016161616161616161616
1988.015151515151515151515
1989.017171717171717171717
1990.016161616161616161616
1991.041414141414141414141
1992.043434343434343434343
1993.060606060606060606060
1994.0121121121121121121121121121121
1995.0219219219219219219219219219219
1996.0263263263263263263263263263263
1997.0289289289289289289289289289289
1998.0379379379379379379379379379379
1999.0338338338338338338338338338338
2000.0349349349349349349349349349349
2001.0482482482482482482482482482482
2002.0829829829829829829829829829829
2003.0775775775775775775775775775775
2004.0744744744744744744744744744744
2005.0936936936936936936936936936936
2006.01008100810081008100810081008100810081008
2007.01201120112011201120112011201120112011201
2008.01428142814281428142814281428142814281428
2009.01431143114311431143114311431143114311431
2010.01257125712571257125712571257125712571257
2011.01136113611361136113611361136113611361136
2012.0655655655655655655655655655655
2013.0546546546546546546546546546546
2014.0580580580580580580580580580580
2015.0614614614614614614614614614614
2016.0342342342342342342342342342342
2017.03333333333
2020.01111111111

发现2017年和2020年的数据量过少,且两者之间年份不连续,存在2018、2019年数据的缺失,因此删除2017和2020年的数据再进行分析。

'''data.name.isin([筛选元素])
对dataframe的某列(name为列名)进行筛选,加负号的原因是想删除符合条件的行,不写负号是筛选出符合条件的行'''
df2=df1[-df1.Year.isin([2017])]
df2=df2[-df2.Year.isin([2020])]
df2.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16287 entries, 0 to 16597
Data columns (total 11 columns):
Rank            16287 non-null int64
Name            16287 non-null object
Platform        16287 non-null object
Year            16287 non-null float64
Genre           16287 non-null object
Publisher       16287 non-null object
NA_Sales        16287 non-null float64
EU_Sales        16287 non-null float64
JP_Sales        16287 non-null float64
Other_Sales     16287 non-null float64
Global_Sales    16287 non-null float64
dtypes: float64(6), int64(1), object(4)
memory usage: 1.5+ MB

得到处理后的数据df2,对其进行描述性统计分析,了解数据基本情况。

df2.describe().T
countmeanstdmin25%50%75%max
Rank16287.08288.9698534792.1385971.004131.508291.0012437.5016600.00
Year16287.02006.4027755.8303821980.002003.002007.002010.002016.00
NA_Sales16287.00.2656950.8225250.000.000.080.2441.49
EU_Sales16287.00.1477680.5093600.000.000.020.1129.02
JP_Sales16287.00.0788490.3119160.000.000.000.0410.22
Other_Sales16287.00.0484370.1901050.000.000.010.0410.57
Global_Sales16287.00.5410221.5675200.010.060.170.4882.74
df2.describe(include='object').T
countuniquetopfreq
Name1628711322Need for Speed: Most Wanted12
Platform1628731DS2130
Genre1628712Action3250
Publisher16287576Electronic Arts1339

由描述统计结果可知,该数据集包括1980-2016年的电子游戏销售情况,其中涉及到11322款游戏,由576个发行商,31中游戏类型,12类游戏平台。

3 数据分析

接下来将数据导入tableau中进行分析,以期望得到前文所关注的各类问题。

3.1 用户

#将字段名重命名为中文名,便于分析
feild={'Rank':'销售排名','Name':'游戏名','Platform':'平台','Genre':'游戏类型','Publisher':'发行商','NA_Sales':'北美销售额','EU_Sales':'欧洲销售额','JP_Sales':'日本销售额','Other_Sales':'其他地区的销售额','Global_Sales':'全球总销售额'}  #创建字典df2.rename(columns=feild,inplace=True)  #对df2重命名
#导出数据为CSV格式
df2.to_csv('vgnew.csv')

关注的问题

最受用户喜爱的前十款游戏是什么?
用户最常玩的游戏类型是什么?
用户常用的游戏平台是什么?

由上图可知,在1980-2016年这段时间,销售量最高的10款游戏分别是Call of Duty: Black Ops II、Call of Duty: Modern Warfare 3、Grand Theft Auto V、Mario Kart Wii、New Super Mario Bros、Pokemon Red/Pokemon Blue、Super Mario Bros、Tetris、Wii Sports、Wii Sports Resort,销量最高的平台是PS2,销量最高的游戏类型是Action动作类游戏,动作类游戏比较受到玩家的喜爱。

3.2 发行商

关注的问题:

销量最好的发行商是?前十有哪些?
前十发行商的发布游戏数量情况?

在这里插入图片描述

上图为游戏销售额排行前十的发行商以及各个发型上对应的游戏发行数量,可以发现游戏发行数量与发行商的排名不一致,并非是发行游戏越多的厂商其销售额约好,排行第六的Take-Two Interactive 发行的游戏数量远比排名在他后面的厂商低,这表明该厂商发行的游戏质量较高或者是出现了爆款游戏。

3.3 市场

问题

全球市场电子游戏销售额如何变化?
四大地区市场总额如何变化?
市场销售额变动的主要来源是?各类游戏的销售额占比情况变化?

在这里插入图片描述

根据上图,对1980-2016年的电子游戏行业市场情况进一步分析。总体来看,1980-1995年电子游戏市场呈现平稳发展的趋势,1995-2007年电子游戏市场蓬勃发展,呈现爆发式提升,2007、2008年电子游戏行业达到巅峰,此后开始,电子游戏行业又逐步回落,直到2016年,全球销售总额已经低于1995年的水平,电子游戏行业市场陷入了低迷期。

分地区市场来看,1980-2016年全球的电子游戏行业总销售额中北美和欧洲占据主导,其次是日本,其他地区的总销售额均低于这三大地区,观察历年各地区的销售额情况变化,发现近年来北美和欧洲市场依旧是占据大头,而日本和其他地区的市场销售额差距不大。

观察历年来游戏类型的一个变化情况,1981-1995年占据主要市场的是Puzzle和Platform,而从1995年起至2016,Action、Misc、Sports、Shooter占据了主要市场。

观察历年来游戏平台的变化情况,主流游戏平台由PS转向PS2,进而变成PS2、DS、WII,逐步发展为PS3、DS、WII、X360,而随着市场的减弱,DS、WII、X360衰落,主流平台变成了PS4,出现了Xone新平台争抢市场。

3.4 预测分析

预测未来2017-2022年的电子游戏销售总额。
在这里插入图片描述
采用tableau进行预测分析,不考虑季节性,考虑趋势为累乘,得到2017-2022年的预测值,预测在未来几年里,电子游戏的销售额继续降低。

4 研究总结

本项目主要是利用Video Game Sales数据集对于1980-2016年全球电子游戏行业销售情况进行分析,了解电子游戏行业的发展情况。分析思路是先通过Python进行数据清洗,然后采用Tableau进行可视化分析。具体研究内容从用户、发行商、市场三个视角进行,在用户层面,探究了最受欢迎的游戏、游戏平台、游戏类型;在发行商层面,求出了销量最好的发行商,并分析了其历年发布游戏数量的变化;在市场层面,分析了全球市场电子游戏销售额如何变化,四大地区市场总额如何变化,并分析了历年来主流游戏类型和游戏平台的变化,最后对2017-2022年的电子游戏销售总额进行了预测。


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

相关文章

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

本文主要参考了黎湘艳、叶洋的经典著作《游戏数据分析实战》。这本书堪称游戏数据分析的开山之作&#xff0c;这里向两位作者表示感谢。 关于留存率的模型&#xff0c;参考4.4.2节。 我们要先计算出1日留存率&#xff0c;2日留存率&#xff0c;……&#xff0c;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英雄联盟全球总决赛冠军&#xff0c;这场比赛让所有观赛者热血沸腾&#xff0c;也唤起了我这个沉睡多年老玩家对MOBA游戏的兴趣&#xff0c;兴冲冲地下载了英雄联盟&#xff0c;却发现这并不是一个可以轻松上手的游戏。 对于时下最流行的MOBA类游戏—…

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

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

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

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

电子游戏数据分析报告

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

python游戏数据分析

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

游戏数据分析小总结

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

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

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

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

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

游戏的数据和分析

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

游戏数据分析

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

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

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

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

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

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

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

jQuery 上拉加载更多

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

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…

史上最全的使用RecyclerView实现下拉刷新和上拉加载更多

前言&#xff1a; 纵观多数App&#xff0c;下拉刷新和上拉加载更多是很常见的功能&#xff0c;但是谷歌官方只有一个SwipeRefreshLayout用来下拉刷新&#xff0c;上拉加载更多还要自己做。 本篇文章基于RecyclerView简单封装了这两个操作&#xff0c;下拉刷新支持LinearLayoutM…

一种Flutter加载更多的实现方法

转载注明出处&#xff1a;https://blog.csdn.net/skysukai 1、why flutter&#xff1f; 我们在进行Android开发的时候&#xff0c;比如布局文件&#xff0c;会创建一个xml来存放布局。写熟悉了觉得没什么&#xff0c;可是&#xff0c;用xml来存放布局文件是十年前的技术了。在…