目录

  • 一、数据集初识
  • 二、数据读取与预处理
  • 三、描述性统计分析
  • 四、时序分析

一、数据集初识

数据量: 共计16598条数据
数据来源:Video Games Sales
数据字段

字段名 含义
Rank 游戏排名
Name 游戏名
Platform 发布平台
Year 发布年份
Genre 游戏种类
Publisher 发行商
NA_Sales 北美销售量(以million为单位)
EU_Sales 欧洲销售量(以million为单位)
JP_Sales 日本销售量(以million为单位)
Other_Sales 其他地区销售量(以million为单位)
Global_Sales 全球销售总量(以million为单位)

二、数据读取与预处理

import pandas as pd
import os
import matplotlib.pyplot as plt
import numpy as np
os.chdir('C:/Users/dell/Desktop')
plt.style.use('ggplot')  #使用ggplot风格
na_values=['N/A']  #缺失值类型为N/A
df=pd.read_csv('vgsales.csv',na_values=na_values)
df=df.dropna(how='any',axis=0)

三、描述性统计分析

(1) 查看游戏类别、发布平台、发行商类别数

types=pd.DataFrame(df['Genre'].value_counts())types.plot(kind='bar',alpha=0.6,color='Blue',figsize=(12,8),
legend=False,
title='The counts of all Genres')a=np.arange(len(df))   #添加数据标签
for index,count in zip(a,types['Genre']):plt.text(index,count+50,count,ha='center',va='bottom')plt.show()


从上图来看,动作类游戏最多,其次是运动类游戏。

按照上述方式,我们还可以得到发布平台、发行商的类别数。这里,以各自的前五名进行展示

f,ax=plt.subplots(1,3,figsize=(15,6))
types=pd.DataFrame(df['Genre'].value_counts()[:5])
platform=pd.DataFrame(df['Platform'].value_counts()[:5])
publisher=pd.DataFrame(df['Publisher'].value_counts()[:5])a=np.arange(len(types))
b=np.arange(len(platform))
c=np.arange(len(publisher))types.plot(kind='bar',alpha=0.6,color='Blue',title='The counts of top 5 types',ax=ax[0])
for index,count in zip(a,types['Genre']):ax[0].text(index,count+50,count,ha='center',va='center')platform.plot(kind='bar',alpha=0.6,color='red',title='The counts of top 5 Platforms',ax=ax[1])
for index,count in zip(b,platform['Platform']):ax[1].text(index,count+30,count,ha='center',va='center')publisher.plot(kind='bar',alpha=0.6,color='Green',title='The counts of top 5 Publisher',ax=ax[2])
for index,count in zip(b,publisher['Publisher']):ax[2].text(index,count+20,count,ha='center',va='center')plt.show()


发布平台较多的是DSPS2,发行商较多的是Electirc ArtsActivision

(2) 查看受欢迎的游戏类型、平台、发行商
从类别数量来看,类别数较多的不一定受欢迎。这里,我们以销量为纵轴,看看哪些游戏类型、平台、发行商较受欢迎。为方便展示结果,这里都取前五名演示

f,ax=plt.subplots(1,3,figsize=(15,6))
#分组统计,并按全球销量降序排列,取前五名
types=pd.DataFrame(df.groupby('Genre').agg({'Global_Sales':np.sum})).sort_values(by='Global_Sales',ascending=False)[:5]platform=pd.DataFrame(df.groupby('Platform').agg({'Global_Sales':np.sum})).sort_values(by='Global_Sales',ascending=False)[:5] publisher=pd.DataFrame(df.groupby('Publisher').agg({'Global_Sales':np.sum})).sort_values(by='Global_Sales',ascending=False)[:5]font={'family':'DejaVu Sans','weight':'normal','size':12
}
types.plot(kind='bar',alpha=0.6,color='Blue',title='The Sales of top 5 Game Genres',ax=ax[0],legend=False)
ax[0].set_ylabel('Genre_Sales',font)platform.plot(kind='bar',alpha=0.6,color='red',title='The Sales of top 5 Game Platforms',ax=ax[1],legend=False)
ax[1].set_ylabel('Platform_Sales',font)publisher.plot(kind='bar',alpha=0.6,color='Green',title='The Sales of top 5 Game Publisher',ax=ax[2],legend=False)
ax[2].set_ylabel('Publisher_Sales',font)    plt.subplots_adjust(wspace=0.3)  #调整各个子图横向间距
plt.show()


从销量角度来看,最受欢迎的游戏类型是动作类游戏,最受欢迎的平台为PS2,最受欢迎的发行商为Nintendo

(3) 按地区,查看受欢迎的游戏类型、平台、发行商

data=df.pivot_table(index='Genre',values=['JP_Sales','EU_Sales','NA_Sales','Global_Sales'],aggfunc=np.sum,)data['NA_prop']=data['NA_Sales']/data['Global_Sales']
data['JP_prop']=data['JP_Sales']/data['Global_Sales']
data['EU_prop']=data['EU_Sales']/data['Global_Sales']f,ax=plt.subplots(figsize=(12,8))
index=np.arange(len(data))
minColor = (31/256,78/256,95/256)
midColor = (121/256,168/256,169/256)
maxColor = (170/256,207/256,208/256) #绘制堆积柱形图
plt.bar(index,data.NA_prop,color=minColor)
plt.bar(index,data.JP_prop,bottom=data.NA_prop, color=midColor)
plt.bar(index,data.EU_prop,bottom=data.NA_prop, color=maxColor)
font={'family':'DejaVu Sans','weight':'normal','size':12
}
plt.xticks(index,data.index,rotation=90)
plt.title('The Proportion of Different Areas',font)
plt.ylabel('Proportion',font)
plt.legend(['NA_Sales','JP_Sales','EU_Sales'],
loc='upper center',ncol=3,framealpha=0.6)
plt.show()


北美地区各类游戏销量都挺高的呢,日本也只有角色扮演类游戏销售较高。同样的方法,可得到发布平台、发行商的地区销售分布

X360、GBA、XB这三个发布平台在北美更受欢迎,PS4,PC这两个平台在欧洲更受欢迎


发行商Activision、THQ、Microsoft Game Studios在北美更受欢迎,Namco Bandai Games 在日本更受欢迎

四、时序分析

(1) 全球销量的时序变化

time=df.groupby('Year').agg({'Global_Sales':'sum'})time.plot(alpha=0.6,figsize=(12,8),legend=False,color='Blue')plt.xticks(np.arange(time.index.min(),   #调整横轴时间间隔time.index.max()),rotation=90)font1={'family' : 'Times New Roman',
'weight' : 'normal',
'size'   : 12,
}
plt.title('The Global_Sales Changing Chart',font1)
plt.ylabel('Global_Sales',font1)   plt.vlines(time.idxmax(),0,          #添加垂线int(time['Global_Sales'].max()),linestyle='--',color='red')plt.annotate('The Highest Sales is {} million'.  #标注最高销量format(int(time.Global_Sales.max())),xy=(time.idxmax(),int(time.Global_Sales.max())),xytext=(time.idxmax()+1,int(time.Global_Sales.max())+15),arrowprops=dict(color='red',headwidth=8,headlength=8),family='fantasy')
plt.show()


从上图来看,全球游戏销量在2008年总体上呈现出逐渐增大趋势,2008年达到峰值6.78亿销量,之后销量大幅度下滑,电子游戏市场逐渐惨淡。

(2) 各地区销量变化(北美、日本、欧洲)

#按年汇总各地数据
data=df.pivot_table(index='Year',values=['JP_Sales','EU_Sales','NA_Sales','Global_Sales'],aggfunc=np.sum)
#计算比例
data['NA_prop']=data['NA_Sales']/data['Global_Sales']
data['JP_prop']=data['JP_Sales']/data['Global_Sales']
data['EU_prop']=data['EU_Sales']/data['Global_Sales']f,ax=plt.subplots(figsize=(12,8))
index=np.arange(len(data))
minColor = (117/256,79/256,68/256)
midColor = (236/256,115/256,87/256)
maxColor = (253/256,214/256,146/256)plt.bar(index,data.NA_prop,color=minColor)
plt.bar(index,data.JP_prop,bottom=data.NA_prop, #通过bottom来设置这个柱子距离底部的高度color=midColor)
plt.bar(index,data.EU_prop,bottom=data.NA_prop, #通过bottom来设置这个柱子距离底部的高度color=maxColor)
font={'family':'DejaVu Sans','weight':'normal','size':12
}
plt.xticks(index,data.index,rotation=90)
plt.title('The Proportion of Different Areas',font)
plt.ylabel('Proportion',font)
plt.legend(['NA_Sales','JP_Sales','EU_Sales'],loc='upper center',ncol=3,framealpha=0.6)
plt.show()f,ax=plt.subplots(figsize=(12,8))
plt.bar(index,data.NA_prop,color=minColor)plt.bar(index,data.JP_prop,bottom=data.NA_prop, #通过bottom来设置这个柱子距离底部的高度color=midColor)
plt.bar(index,data.EU_prop,bottom=data.NA_prop,color=maxColor)
font={'family':'DejaVu Sans','weight':'normal','size':12
}
plt.xticks(index,data.index,rotation=90)
plt.title('The Proportion of Different Areas',font)
plt.ylabel('Proportion',font)plt.legend(['NA_Sales','JP_Sales','EU_Sales'],loc='upper center',ncol=3,framealpha=0.6)
plt.show()


从堆积柱形图来看,全球电子游戏的销售量主要来自于北美地区,在1983-1995年期间,日本地区的电子游戏销售市场占有较大比重,之后就销声匿迹了;随后,欧洲地区电子游戏销售市场于1996年开始,占比逐渐增大。(像2017年、2020年全球电子游戏销量只来自于日本地区和北美地区,感觉最近几年数据并没有统计完全。)

(3)    建模预测

1.保证年份的连续性,剔除2020年的数据,并对序列作差分

new_data=pd.DataFrame(df.groupby('Year').agg({'Global_Sales':np.sum}))
data=data.drop(data.index[38])

从(1)的时序图来看,序列是不平稳的,这里首先做一阶差分,进行平稳性检验并绘制差分后的时序图。

from statsmodels.tsa.stattools import adfuller as ADF
diff_data=data.diff().dropna()   #去除NA值
print('一阶差分后序列ADF检验P值为{}'.format(ADF(new_data['Global_Sales'])[1]))
diff_data.plot()



从ADF检验结果来看,P值小于0.05,故有充分理由拒绝原假设,即可认为差分后的序列是平稳的;此外,从差分时序图也可看出,序列大致围绕着0上下波动。

2.绘制ACF、PACF图,进行初步定价

from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf
plot_acf(new_data,lags=15).show()
plot_pacf(new_data,lags=15).show()


从自相关图和偏自相关相关图可知,都呈现拖尾性,可建立ARMA(1,1)

3.拟合与预测

这里,仅对差分后的序列进行拟合。(实际上应该差分的还原再预测

from statsmodels.tsa.arima_model import ARMA
model = ARMA(new_data,order=(1,1)).fit()
plt.plot(new_data,label='Origin_diff')
plt.plot(predict_ts,label='Predict_diff')
plt.legend(loc='best')
plt.show()


关于ARMA模型的差分还原,网上找了一些教程,最后执行出的结果都是NAN。这里再用R进行预测一下,emm,后面几年销量直接为负了…(可能原数据集最近几年的数据根本没有统计完全,2016年全球销量有70.9million,2017年就只有0.05million了…总感觉数据有点异常)

数据分析实战(一) Pandas分析Kaggle电子游戏销量数据集相关推荐

  1. python数据分析实战之用户分析及RFM模型分析

    理论基础知识可以看我之前的博客: 1.python之Numpy知识点详细总结 2.python最最最重要的数据分析工具之pandas 3.pandas之表连接与高级查询 也可以进入我的专栏:欢迎订阅哦 ...

  2. 《Spark大数据分析实战》——1.4节弹性分布式数据集

    本节书摘来自华章社区<Spark大数据分析实战>一书中的第1章,第1.4节弹性分布式数据集,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区"华章社区"公众号查看 1. ...

  3. 【Python基础】Python数据分析实战之分布分析

    ◆ ◆ ◆  ◆ ◆ 前言 分布分析法,一般是根据分析目的,将数据进行分组,研究各组别分布规律的一种分析方法.数据分组方式有两种:等距或不等距分组. 分布分析在实际的数据分析实践中应用非常广泛,常见的 ...

  4. python学生分布_Python数据分析实战之分布分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:严小样儿 分布分析法,一般是根据分析目的,将数据进行分组,研究各组别 ...

  5. 程度性数据python分析_python数据分析实战之AQI分析

    文章目录 1.数据分析的基本流程 2.明确需求和目的 2.1 需求和目的 3.数据收集 4.数据预处理 4.1 数据整合 4.1.1 加载相关库和数据集 4.1.2 数据总体概览 4.2 数据清洗 4 ...

  6. python数据分析实战:生存分析与电信用户流失预测

    文章目录 1.背景 1.1 生存分析.KM曲线及Cox回归 1.2 案例背景 2.AIC向前逐步回归法进行特征选择 3.Cox模型搭建 3.1 特征重要性分析 3.2 模型校准 3.3 对个体进行预测 ...

  7. pandas内置数据集_Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

    > 打算从基础开始学习数据分析,给自己一个整理内容和学习消化的时间,所以,这也将成为我的学习笔记. 1. 数据描述 原始数据集包括六个属性:Gender,Length,Diameter,Heig ...

  8. 阿里天池数据分析入门 利用Pandas分析数据

    pd.read_csv用法 ccl = pd.read_csv("1_usa_candidate/ccl.txt", sep = '|',names=['CAND_ID','CAN ...

  9. Python数据分析实战,,美国总统大选数据可视化分析[基于pandas]

    目录 前言 一.任务详情 二.数据集来源 三.实现过程 四.运行代码 前言 在学习Python数据分析的过程中,是离不开实战的. 今天跟大家带来数据分析可视化经典项目,美国总统大选数据可视化分析,希望 ...

最新文章

  1. 抽奖的箱子_王者荣耀近期问题不断,昭君星元箱子开出空气,瑶新皮涉嫌抄袭...
  2. 使用 u-boot 烧写内核——韦东山嵌入式Linux学习笔记10
  3. gcc工具链查看默认编译选项
  4. ROS笔记(36) 避障运动规划
  5. 计算机符串长度的函数,用js写一个函数,计算出字符串的长度
  6. 在Windows 7上安装ACE 6.1.0
  7. 《Python Cookbook(第3版)中文版》——1.5 实现优先级队列
  8. 飞利浦 f718 java 微信_第一次使用飞利浦F718手机感觉怎么样及优缺点
  9. ubuntu16.04安装tomcat7
  10. SMART原则是什么
  11. IE浏览器清除缓存及历史浏览数据
  12. 【操作系统】GPT和MBR分区的区别
  13. 强烈分享8个功能强大,可以极大提高工作效率的软件
  14. MySQL讲义第 45 讲——select 查询之查询练习(三)
  15. 【数据仓库】6.数据质量监控
  16. Ubuntu下运行免安装Redis及Redis开机自动启动配置
  17. 你给员工吃肉,你将迎来一群狼!
  18. 八数码 问题 BFS+Cantor
  19. 【分治算法】大整数乘法
  20. java 打印数组数字,Java数组打印出奇怪的数字和文本

热门文章

  1. windows95 mac最新版(windows95系统体验软件)支持arm
  2. 【087】China VOA-原汁原味英语听力学习
  3. JAVA中求1到100的和
  4. 亚马逊云科技数据库的五大核心理念,为企业上云发展助阵
  5. Android Ble 轻量级框架
  6. 直方图匹配(规定化)
  7. cygwin 安装php5.6,Cygwin视窗下的UNIX多面手
  8. push to origin/master was rejected错误解决方法
  9. 基于大数据spark+hadoop的图书可视化分析系统
  10. 景联文科技:四种常见的3D点云标注方法