学习完SQL并做过练习后,我们就可以尝试著用SQL初步分析一些数据包。我使用的是MySQL和Navicat,操作比较简单,具体的安装问题看这里

猴子:超级详细的mysql安装指南?

zhuanlan.zhihu.com
图标
猴子:Mysql客户端:Navicat安装教程及问题汇总?

zhuanlan.zhihu.com
图标

我在网站上下了一个2016年电子游戏的销量排名数据包,数据包含2016年截至的游戏销量统计排名、数据名称、分地区销量、全球总销量、网站评分、评分人数等。

数据来源 : Video Game Sales with Ratings

如果你找不到满意的数据包,想自己爬取一些数据来练习分析,取数方法可以看这里

cloehui:傻瓜爬虫软体使用教程101?

zhuanlan.zhihu.com
图标

为方便导入数据,我们最好将各种格式的Excel表另存为*.xls格式,按以下步骤导入Navicate

单击导入,选择*.xls格式的文件

有些表第一行不是表头,这里需注意设置

输入表名,新建一张表,或导入原有表

重要!手动设置一下数据类型

点击开始,导入数据

这张表已经导入到资料库里了


现在我们有了一张名称为 vgsales2016 的表,共有16519条数据,包含信息如下:

vgsales2016(Game, Platform, Year_of_Release, Genre, Publisher, NA_Sales, EU_Sales, JP_Sales, Other_sales, Global_Sales, Critic_Score, Critic_Count, User_Score, User_Count, Developer, Rating)

Game:游戏名称

Platform:游戏运行平台

Year_of_Release:游戏发行年份

Genre:游戏类型

Publisher:游戏发行人

NA_Sales:北美销售量(百万套)

EU_Sales:欧盟销售量(百万套)

JP_Sales:日本销售量(百万套)

Other_sales:其余国家销售量(百万套)

Global_Sales:全球总销售量(百万套)

Critic_Score:Metacritic网站显示的总评分

Critic_Count:用于计算评分的评论数

User_Score:Metacritic用户给出的评分

User_Count:给出评分的用户人数

Developer:游戏开发者

Rating:ESRB评级,分级如下

【EC】Early Childhood 幼儿 (3+),【E】Everyone 所有人 (6+),

【K-A】儿童到成人,后归入【E】,【E 10+】Everyone 10+ 10岁以上的所有人 (10+),【T】Teen 青少年 (13+),【M】Mature 成熟期 (17+),【AO】Adults Only 仅成人 (18+),【RP】Rating Pending 待定级(只用于预告片)


部分游戏销量排名信息

1.游戏平台的市场占有率

首先我们看看各游戏平台的市场占有率,可以用在不同平台的游戏的销售情况来做近似

SELECT Platform, ROUND(SUM(Global_Sales), 2) AS PF_sales,
CONCAT(ROUND(100 * SUM(Global_Sales)/(SELECT SUM(Global_Sales) FROM vgsales2016), 2), %) AS PF_Percentage
FROM vgsales2016
GROUP BY Platform
ORDER BY SUM(Global_Sales) DESC;

结果如下

各游戏平台市场占有率排名

我们可以看出PS2市场占有率排第一,为14.08%,之后分别为X360,PS3,Wii,DS等,是为主流的游戏平台;而排在最后的TG16,3DO,PCFX几乎没有用户。

2. 不同类型游戏的受欢迎程度

我们可以分别计算不同类型的游戏的销量,来看哪种类型的游戏更受欢迎

SELECT Genre, ROUND(SUM(Global_Sales), 2) AS Genre_sales,
CONCAT(ROUND(100 * SUM(Global_Sales)/(SELECT SUM(Global_Sales) FROM vgsales2016), 2), %) AS Genre_Percentage
FROM vgsales2016
GROUP BY Genre
ORDER BY SUM(Global_Sales) DESC;

结果如下

各类型游戏的受欢迎程度

我们可以看出最受欢迎的是Action动作游戏,占据了19.57%的市场,与体育游戏、射击游戏、角色扮演游戏共占56.8%的市场。

3. 不同评级的游戏的销量情况

我们可以统计不同评级的游戏的销量情况,看哪种分级游戏最主流

SELECT DISTINCT Rating, ROUND(SUM(Global_Sales), 2) AS Rating_Sales,
CONCAT(ROUND(100 * SUM(Global_Sales)/(SELECT SUM(Global_Sales) FROM vgsales2016), 2), %) AS Rating_Perc
FROM vgsales2016
GROUP BY Rating
HAVING Rating <> -- 有些Rating值为空白,但不是NULL
ORDER BY SUM(Global_Sales) DESC;

结果如下

不同评级游戏的销量情况

和预想相同,受众越广的游戏销量越大,完全给儿童和完全给成人设计的游戏销量排名在后面

4. 不同地区对电子游戏的购买量

SELECT ROUND(SUM(NA_Sales), 2) AS NA, CONCAT(ROUND(SUM(NA_Sales)/SUM(Global_Sales) * 100, 2), %) AS NA_Perc,
ROUND(SUM(EU_Sales), 2) AS EU, CONCAT(ROUND(SUM(EU_Sales)/SUM(Global_Sales) * 100, 2), %) AS EU_Perc,
ROUND(SUM(JP_Sales), 2) AS JP, CONCAT(ROUND(SUM(JP_Sales)/SUM(Global_Sales) * 100, 2), %) AS JP_Perc,
ROUND(SUM(Other_Sales), 2) AS Rest, CONCAT(ROUND(SUM(Other_Sales)/SUM(Global_Sales) * 100, 2), %) AS Other_Perc,
ROUND(SUM(Global_Sales), 2) AS Total, CONCAT(ROUND(SUM(Global_Sales)/SUM(Global_Sales) * 100, 2), %) AS Total_Perc
FROM vgsales2016;

结果如下

不同地区对电子游戏的购买量

我们看到北美地区、欧盟地区和日本是电子游戏的主要购买力来源,购买量分别占49.36%、 27.19% 和 14.52%,而其他所有国家只占 8.88%

5. 不同类型游戏的评分情况

我们可以计算不同类型游戏的网站评分和用户评分,

SELECT Genre, ROUND(AVG(Critic_Score), 2) AS AVG_Critic_Score,
ROUND(AVG(User_Score), 2) AS AVG_User_Score
FROM vgsales2016
GROUP BY Genre
ORDER BY AVG(Critic_Score) DESC;

结果如下

各类游戏平均得分

数据按照网站给的平均分降序排列,我们可以看出网站和玩家给出最高均分的都是Role-Playing 角色扮演游戏,但之后的分数排序并不完全一致

6. 不同开发者所作游戏的分级情况

通过计算不同Developer所制作游戏的分级情况,可以看出开发者的制作偏好,由于游戏公司实在太多,我们只选择前20大Developer来看

先选出制作游戏数量排名前20的Developer,忽略没有Developer信息的数据

SELECT DISTINCT Developer, COUNT(Game) AS Game_num
FROM vgsales2016
WHERE Developer <> -- 有些数据Developer为空白,但不是NULL
GROUP BY Developer
ORDER BY COUNT(Game) DESC
LIMIT 0, 20; -- 限制返回记录个数,0偏移量,20条

结果如下

游戏制作量前20的Developer

之后我们可以统计各大开发公司所作不同评级的游戏的数量,来观察各公司的偏好

SELECT DISTINCT Developer,
SUM(CASE WHEN Rating = EC THEN 1 ELSE 0 END) AS EC,
SUM(CASE WHEN (Rating = E OR Rating = K-A) THEN 1 ELSE 0 END) AS E,
SUM(CASE WHEN Rating = E10+ THEN 1 ELSE 0 END) AS E10,
SUM(CASE WHEN Rating = T THEN 1 ELSE 0 END) AS T,
SUM(CASE WHEN Rating = M THEN 1 ELSE 0 END) AS M,
SUM(CASE WHEN Rating = AO THEN 1 ELSE 0 END) AS AO,
SUM(CASE WHEN Rating = RP THEN 1 ELSE 0 END) AS RP
FROM vgsales2016
WHERE Developer IN (Ubisoft, EA Sports, EA Canada, Konami, Capcom,
EA Tiburon, Electronic Arts, Ubisoft Montreal, Visual Concepts, Omega Force,
Travellers Tales, Vicarious Visions, Activision, TT Games, Nintendo, THQ,
Namco, Artificial Mind and Movement, Codemasters, Midway)
GROUP BY Developer
ORDER BY E DESC;

结果如下

前20的Developer所作游戏评级分布

可以看出大部分公司主要作品都是E级,面向全年龄玩家,所有公司都没有成人向作品,但Capcom、Ubisoft Montreal、Midway、Ubisoft、Namco、Konami 有很多面向青少年及以上人群的 游戏, TT Games 和Omega Force只做面向10岁以上及青少年的游戏

7. 不同游戏开发者的游戏评分及销售情况

和6中一样,我们只选择制作游戏数排前20的Developer,来统计网站和用户对他们所作游戏的评分,以及游戏的全球销售情况

SELECT DISTINCT Developer, ROUND(AVG(Critic_Score), 2) AS AVG_Critic_Score,
ROUND(AVG(User_Score), 2) AS AVG_User_Score, ROUND(SUM(Global_Sales), 2) AS Game_Sales
FROM vgsales2016
WHERE Developer IN (Ubisoft, EA Sports, EA Canada, Konami, Capcom,
EA Tiburon, Electronic Arts, Ubisoft Montreal, Visual Concepts, Omega Force,
Travellers Tales, Vicarious Visions, Activision, TT Games, Nintendo, THQ,
Namco, Artificial Mind and Movement, Codemasters, Midway)
GROUP BY Developer
ORDER BY Game_Sales DESC;
-- ORDER BY AVG_Critic_Score DESC;
-- ORDER BY AVG_User_Score DESC;

结果如下

按销量排序

我们可以看出,Nintendo的游戏销量最大,接著是EA和Ubisoft

按网站评分排序

数据显示最受网站好评的Developer是Visual Concepts 和 EA Sports,均分都在80以上,Artificial Mind and Movement 和 Activision 表现最差,均在60分以下

按玩家评分排序

最受玩家喜爱的Developer为Namco和Nintendo,评分均在8以上,Activision和THQ排名最低,但也都在6分以上


这篇文章只是粗浅的分析了一些表内数据反映出的情况,但分析数据是很有意思的,在思考的过程中会有越来越多的想法冒出来,看到结果的时候也会有类似『哇,原来这个公司设计过这么多游戏』的新奇感,非常好玩,但由于篇幅限制就不做更多的分析了。

学会SQL真的是一个很方便的事情,以后在生活中遇到各方面的数据,如果感到好奇,都可以自己写一些语句来看看数据之间有什么联系,能反映出什么信息,非常有趣又涨知识哟。

那,大家一起加油鸭

数据来源 : Video Game Sales with Ratings

我之前的SQL学习笔记

cloehui:SQL基础教程学习笔记1-简单操作?

zhuanlan.zhihu.com图标cloehui:SQL基础教程学习笔记2-进阶操作?

zhuanlan.zhihu.com
图标
cloehui:SQLZOO 习题记录?

zhuanlan.zhihu.com
图标

推荐阅读:

查看原文 >>
相关文章