女朋友还是游戏?一起来分析下游戏的开发与销售情况

发布时间:2025-05-24 17:37:01 作者:益华网络 来源:undefined 浏览量(0) 点赞(0)
摘要:有人问:游戏重要还是女朋友重要? 我想说,你是不是傻?游戏没了可以再下! 要是女朋友没了…… 就没人会打扰你玩游戏了, 哈哈哈哈哈哈哈哈哈哈! 大部分男生都喜欢游戏,但对游戏的了

有人问:游戏重要还是女朋友重要?

我想说,你是不是傻?游戏没了可以再下!

要是女朋友没了……

就没人会打扰你玩游戏了,

哈哈哈哈哈哈哈哈哈哈!

大部分男生都喜欢游戏,但对游戏的了解却不是很多,让我们来分析一下“ 男生的女朋友——游戏”。

数据中含有1980-2017年近40年各出版商发行的游戏,在这份数据的基础上分析一下哪些游戏平台和游戏出版商实力更强?什么游戏类型是更受人们喜爱的?在不同地区游戏的销售概况是如何的?简简单单几个步骤就足以得到答案!

这里补充一句哈:本文在交互模式jupyter中完成!

1、导入必须的库

在对相关数据进行分析之前,先导入必要的库:

import pandas as pd import matplotlib.pyplot as plt import numpy as np #为了中文能正常显示 from matplotlib import font_manager #让图片显示在交互页面 %matplotlib inline

2、代码正文

从csv文件中导入数据

pandas是作为Python进行数据分析的工具库,含有大量简单便捷的方法,在进行数据处理是实用性极强。其中read_csv方法能够从csv文件中读取数据并保存至DataFrame对象中,方法如下

#读取csv文件 df = pd.read_csv(vgsales.csv) #显示文件前5行 df.head()

结果如下:

数据清洗与整理

有爬虫经验的小伙伴应该清楚, 在爬取大量数据时,难免会有数据的缺失或者数据错误的情况出现,所以导入数据后最关键的一步就是观察数据是否有上述情况出现,清洗与整理后的数据分析出的结果更加准确。

常见的数据清洗方法有:填充缺失或错误数据或删去含有缺失或错误数据的一行。本文采用后者,方法如下:

#检查是否有缺失值,True表示含有缺失数据 df.isnull().any()
#删去缺失值 df = df.dropna() df.info()

数据分析

第一个实例对游戏平台进行分析,因为数据比较庞大,所以我们只分析载有游戏多于100的游戏平台。

首先根据DataFrame索引出游戏平台(Platform)这一列数据,然后使用value_counts()方法对游戏平台载有的游戏统计,最后截取出我们需要的数据。

#取载有游戏多于100的游戏平台 pf = df[Platform].value_counts().sort_values()#sort_values()为排列操作 pf = pf[pf>100] pf
#游戏平台名称形成列表作为Y轴数据 pf_name = pf.index.tolist() #载有游戏个数形成列表作为X轴数据 pf_number = pf.values.tolist() #建立画布 fig,ax = plt.subplots(figsize = (16,10),dpi = 80) #y轴范围 length = np.arange(len(pf_name)) #绘制条形图 ax.barh(length,pf_number,tick_label = pf_name) #设置标题和标签 ax.set_title("The top 20 of Platform",fontsize = 18) ax.set_xlabel("Number",fontsize = 16) #添加数据标签 for a,b in zip(length,pf_number):  ax.text(b+40,a-0.15,b,ha = "center",fontsize = 12) plt.savefig(E:/jupyter/result/Game_sale1.jpg) plt.show(

结果如下图:

那如果我们想知道各个地区游戏的销售情况,该怎么办呢?

#查看年份是否有不适合的值 df[Year].value_counts().sort_index()

得到了如下销售情况:

在看到年份的索引时,奇怪的出现了还未到的2020年,说明是数据错误,就需要对这一行数据进行清洗。方法如下:

df = df[~df["Year"].isin([2020.0])]#~表示取反 df[Year].value_counts().sort_index()

敲黑板!这里我们要获取每一年的各个地区所有游戏销售额总值,我们就要用到cumsum这个方法——cumsum方法通俗说是一个累加和,注意红框里的数据,这里是依据年份将每部游戏的销售额相加

#cumsum函数是累加和,即按照Year这一列,将相同年份的销售额相加 df[sum_sales] = df[Global_Sales].groupby(df[Year]).cumsum() df[NA_sum_sales] = df[NA_Sales].groupby(df[Year]).cumsum() df[EU_sum_sales] = df[EU_Sales].groupby(df[Year]).cumsum() df[JP_sum_sales] = df[JP_Sales].groupby(df[Year]).cumsum() df[Other_sum_sales] = df[Other_Sales].groupby(df[Year]).cumsum() df.head(10)

得到如下结果:

用小脑瓜想一想,需要的数据是一年的总销售额,所以只需要保留每一年最后一行的销售额,这里可以用drop_duplicates去重,并keep参数保留最后一行即可。

#去重——得到每年各个游戏的销售值 sale_df = df.drop_duplicates(subset=[Year],keep=last) sale_df.head() #强制转换类型 sale_df[Year] = sale_df[Year].astype(int) sale_df.head() #按照年份序列排序-升序(ascending调节升序或降序) sale_df = sale_df.sort_values(by="Year" , ascending=True) sale_df.head()

为了方便看到销售额变化趋势,我们绘出其变化曲线图如下:

#绘制条形图 my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc") #准备数据 y_1 = sale_df[sum_sales].values.tolist() y_2 = sale_df[NA_sum_sales].values.tolist() y_3 = sale_df[EU_sum_sales].values.tolist() y_4 = sale_df[JP_sum_sales].values.tolist() y_5 = sale_df[Other_sum_sales].values.tolist() x_1 = sale_df[Year].values.tolist() #x轴范围 x = range(len(x_1)) #建立画布 plt.figure(figsize=(20,10),dpi=80) #绘制折线图,label为lengend的标签 plt.plot(x,y_1,label = 全球) plt.plot(x,y_2,label = 北美) plt.plot(x,y_3,label = 欧洲) plt.plot(x,y_4,label = 日本) plt.plot(x,y_5,label = 其他) #调整x轴刻度 _xtick_labels = [{}年.format(i) for i in x_1] plt.xticks(list(x)[::3],_xtick_labels[::3],fontproperties = my_font,fontsize = 16) #填写x,y轴标签 plt.xlabel(年份,fontproperties = my_font,fontsize = 16) plt.ylabel(销售额,fontproperties = my_font,fontsize = 16) plt.title(销售额的变化曲线,fontproperties = my_font,fontsize = 18) #栅栏 plt.grid(alpha=0.5) plt.legend(prop = my_font,loc = upper left) plt.savefig(E:/jupyter/result/Game_sale2.jpg) plt.show()

得到销售额的变化曲线:

接下来我们来了解一下世界前十的游戏出版商。方法类似于第一个实例,请看注释:

#获取出版商前十 pb = df[Publisher].value_counts().sort_values(ascending=False).head(10)#ascending可调整降序或升序 #设置画布的尺寸 plt.figure(figsize=(8,8)) #将出版商的名字作为对应数据的标签 labels = pb.index #准备数据 x = pb.values #绘制空心饼图 x1 = [1,0,0,0,0,0,0,0,0,0]#用于空心 plt.pie(x , radius=1.0,pctdistance = 0.75,labels=labels,autopct=%1.1f%%) plt.pie(x1, radius=0.5,colors = w) plt.title(Top 10 of Publisher,fontsize = 16) plt.savefig(E:/jupyter/result/Game_sale3.jpg) plt.show()

世界前十游戏出版商如下:

萝卜青菜各有所爱,每个人喜欢的都不一样,游戏也是如此,那么什么游戏类型最受大众喜爱呢?我们需要一个只包含游戏类型和销售额的DataFrame对象,先用sum()方法统计,后用loc索引即可。方法如下

#按照游戏类型将每一处的销售额相加 Group = df.groupby([Genre]).sum().loc[:,NA_Sales:Other_Sales] Group

得到如下喜好结果:

直观显示,绘制出不同游戏类型的销售额图,看看小伙伴们喜欢什么类型的游戏!

#显示中文 my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc") #建立画布 plt.figure(figsize=(8, 12)) #x轴标签 xlabel = [NA_Sales,EU_Sales,JP_Sales,Other_Sales] #y轴范围与标签 y = range(len(Group.index)) ylabel = Group.index #绘制热力图 plt.imshow(Group, interpolation=nearest, cmap=plt.cm.pink,aspect=auto)#cmap为热力图颜色变化 #调整x,y轴刻度 plt.xticks(list(range(4))[::1],xlabel[::1],fontproperties = my_font,fontsize = 12) plt.yticks(list(y)[::1],ylabel[::1],fontproperties = my_font,fontsize = 12) #设置x,y轴标签 plt.xlabel(销售额,fontproperties = my_font,fontsize = 14) plt.ylabel(游戏类型,fontproperties = my_font,fontsize = 14) plt.colorbar(shrink=0.8)#改变Bar的长度 plt.title(The Heat Map of Sales,fontproperties = my_font,fontsize = 16) plt.savefig(E:/jupyter/result/Game_sale4.jpg) plt.show()

得到的销售额情况如下,左边坐标表示不同游戏类型,色度情况表示销售量,颜色越浅表示销量越高!

3、分析总结

通过以上数据分析及可视化,我们终于得到了一些因吹斯汀的信息,一起来看看吧!

DS和PS远超其他平台位列前端 北美和欧洲是游戏的主要市场,销售额碾压其他地区 《FIFA》《极品飞车》的出版商Electronic Arts(EA)一枝独秀 动作、运动、射击游戏深受大众喜爱,销售额远超其他类型游戏

我要是有个女朋友,我绝对就不打游戏了,哈哈哈哈哈!

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!