数据导入与概览
#导入相关分析包
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#导入数据
salesdata=pd.read_csv(r'E:\project\myproject\project1\vgsales.csv')
数据概览
##数据基本信息
salesdata.info()
数据共有11个字段,共有16598行数据,其中销售年份,发行商有部分数据缺失
• Rank - 总销售额排名
• Name - 游戏名
• Platform - 游戏发行平台(PC、PS4等)
• Year - 游戏发行年份
• Genre - 游戏类型
• Publisher - 发行厂商
• NA_Sales - 北美销量(百万)
• EU_Sales - 欧洲销量(百万)
• JP_Sales - 日本销量(百万)
• Other_Sales - 其他地区销量(百万)
• Global_Sales - 全球销售总额
##描述统计
salesdata.describe()
游戏种类汇总
salesdata['Genre'].unique()
各地区销售数据对比
#对比北美,欧洲,日本及世界其他地区销售额中不同游戏类型的情况
plt.figure(figsize=(10,5))
salesdata.groupby('Genre')[[ 'NA_Sales','EU_Sales', 'JP_Sales', 'Other_Sales']].mean().T.plot(kind='bar')
plt.title('Gamesales Comparison')
plt.show()
结论
1.北美地区是全球最大的游戏销售市场,大多数游戏类型的销售额都领先于其他地区。除北美欧洲和日本外,其他国家和地区游戏市场并不成熟,销售额远小于上述地区。
2.游戏类型偏好: 北美地区(platform,shooter),欧洲地区与北美地区相近(shooter,platform),日本地区(roleplaying)
3.Adventure 和Strategy类型游戏在全球各市场销售额都较小。
游戏发布时间
salesdata.Year.value_counts().sort_index().plot.bar()
plt.xticks(rotation=60) #x标签旋转60度
plt.title('Annual Release')
plt.show()
结论
结合上图我们可以看出每年发布游戏数量的变化趋势:
游戏发布数量由91年开始上升,2001年开始剧烈上升到2009年到达顶点(1400左右)后后开始呈逐年下降趋势。2011年后更下降至600左右。
2017年及以后的数据,显示全球发行的游戏只有不到3款,考虑这不符合实际情况,因此有可能是数据缺失导致样本量太少,后续分析暂时不考虑2017年及以后的数据
游戏发布数量的较大变化背后的逻辑,需要进一步根据数据加以分析,如下
salesdata.groupby('Year').mean()[[ 'NA_Sales','EU_Sales', 'JP_Sales', 'Other_Sales']].plot()#对比各地区游戏单部作品平均销量随时间变化趋势
plt.title('Breakdown of Game Sales')
plt.show()
salesdata.groupby('Year').sum()['Global_Sales'].plot()#游戏销售总市场变化
plt.title('Sales Summary')
plt.show()
结论
20世纪80年代,是游戏销量的黄金时代,其中北美的游戏销量平局每部超过两百万。这个阶段,游戏发行量很少,少量的游戏作品占有了新生的市场。
20世纪90年代开始,尝到甜头的厂商开始增加游戏发行量,游戏市场也开始逐渐发展,但是单部游戏的平均销量还是相应减少。
21世纪第一个十年,游戏销售市场继续蓬勃发展,到2010年达到顶峰,全球全年总销售量达到7亿。游戏发行数量也逐年递增。但是单部游戏的销售量维持在稳定水平。
2010到2017年,全球游戏销售市场逐渐萎缩。游戏发行量和单部游戏销售量都出现了下滑。这可能是由于娱乐方式变得更多元导致的。
对最大的北美市场进行单独分析
NA_genre=salesdata.pivot_table(index='Year',columns='Genre',values='NA_Sales',aggfunc=np.mean)
NA_genre=NA_genre.fillna(0) #去除空值
sns.heatmap(NA_genre,cmap='BuPu') #做热力图并自选颜色
plt.show()
结论
由于北美销量最高,我们对北美的数据单独分析可知,84-90年间北美游戏平均销量最高,其中平台游戏的销量最多。
游戏发行厂商
Publisherdata=salesdata['Publisher'].value_counts()[salesdata['Publisher'].value_counts()>50].reset_index()
sns.barplot(x='index',y='Publisher',data=Publisherdata)
plt.xlabel("Publisher")
plt.ylabel("Release")
plt.xticks(rotation = 90)
plt.title("GamesSale of Publisher")
plt.show()
可以看出Electronic Arts游戏发行量最多。因此对该发行商进行单独分析,查看该发行商发行的游戏种类
EAgames=salesdata.query("Publisher=='Electronic Arts'")
label=[]
for i in EAgames['Genre']:
if i not in label:
label.append(i)
explode=[0.08,0,0,0,0,0,0,0,0,0,0,0] #对饼图中占比最大的部分着重显示
plt.pie(EAgames.Genre.value_counts(),explode=explode,autopct='%1.1f%%',pctdistance=1.2)
#autopct 在饼图中显示各部分的比例
# pctdistance 设置数字位置
plt.legend(label,loc=' upper right',bbox_to_anchor=(1.1,1.05))
# loc bbox_to_anchor 图例位置
plt.title('EA Games Genre')
plt.show()
结论
从上图可以看出,EA这家厂商发行的游戏主要以Sports为主占比41.5%,Action,Simulation和Shooter的发行量也占很大比例。
游戏发行平台
salesdata['Platform'].value_counts().plot()
从图中可以看出游戏发行的平台较多,我们选取其中几个主要的发行平台进行分析.
#通过热力图尝试发现不同地区的游戏发行数量与平台是否有关系
MainPlatform=salesdata.loc[(salesdata.Platform=='DS')|(salesdata.Platform=='PS2')|(salesdata.Platform=='PS3')|(salesdata.Platform=='Wii')|(salesdata.Platform=='X360')|(salesdata.Platform=='PSP')|(salesdata.Platform=='PS')][[ 'NA_Sales','EU_Sales', 'JP_Sales', 'Other_Sales','Platform']]
Region_Platform=MainPlatform.pivot_table(index='Platform',aggfunc='mean')
sns.heatmap(Region_Platform,cmap='BuPu')
plt.title('Relationship between Region and Platform')
plt.show()
#针对游戏发行平台DS的数据,按照游戏类型的不同,分别分析北美,欧洲和日本的平均销量
DS_Games=salesdata[salesdata.Platform=='DS']
sns.barplot(x="Genre",y="NA_Sales",data=DS_Games,color="Green",label="NA",estimator=np.mean)
sns.barplot(x="Genre",y="EU_Sales",data=DS_Games,color="YELLOW",label="EU",estimator=np.mean)
sns.barplot(x="Genre",y="JP_Sales",data=DS_Games,color="RED",label="JP",estimator=np.mean)
plt.ylabel('sales')
plt.legend()
plt.title('DS game sales')
plt.show()
结论
从图中可以看出,在DS平台和PS2平台发行的游戏数量最多。而不同地区间游戏发行平台也有差异:北美的最主要发行平台是X360和Wii;欧洲主要发行平台是PS3,日本主要发行平台是PS。
同时针对DS平台,JP地区销量较好。销量最高的是Role-playing类型,其次是Fighting和Platform类型游戏。
销量
#对总销量大于10的游戏进行数据分析
total_data = salesdata[salesdata["Global_Sales"]>10]
sns.violinplot(y="Global_Sales",data=total_data,color="grey",inner="quartile")
sns.stripplot(y="Global_Sales",data=total_data,jitter=True,palette="Blues_d")
plt.title("Global Game Sales distribution")
plt.show()
结论
可以看到,大多数游戏全球销量在14millon左右。销量中等的游戏(40~70)数量较少,而销量大于70游戏,数量反而较多。这也反映了游戏市场的特点,部分产品如果能在与竞品的比较中胜出,就容易突破销量上的瓶颈,在市场上获得较大回报。
#对比不同游戏类型的销售情况
#根据上图可以看到,游戏的销售数据极值较多,用均值绘制柱状图不能准确的表现数据趋势,因此用箱线图来展示游戏销售情况
sns.boxplot(x="Genre",y="Global_Sales",data=total_data)
plt.title("Global Sales by Genre")
plt.xticks(rotation=60)
plt.show()
结论
从图中可以看出,Sports游戏销量最大,主流的Sports游戏销量集中在25-45之间.
Platform 销量也较大,但是相比于Puzzle和Misc类型的游戏,其销量更不均衡,少数游戏占有了大部分销量。
而Fighting和Adventure游戏销量较少。