IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python之电子游戏销售数据Seaborn可视化笔记 -> 正文阅读

[Python知识库]Python之电子游戏销售数据Seaborn可视化笔记

这个笔记是in R:https://www.kaggle.com/umeshnarayanappa/explore-video-games-sales中的作品启发的。
笔记的目标是尽可能简单地实现在上面的R笔记本中创建的可视化,使用Python以及一些附加的情节,并添加了一些评论和解释,以帮助Seborn/Python初学者他们的数据可视化/自定义。我们通过玩不同的颜色来保持事物的趣味性。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Matplotlib is building the font cache using fc-list. This may take a moment.

使用熊猫在数据集中阅读。我们看到每一行条目对应于特定的游戏,数据包含游戏的名称、发布的年份以及一些分类特征,如平台、类型和发行者。最后,我们看到,游戏(行)条目还包括累计销售所取得的,按区域,按该特定的游戏。

df = pd.read_csv("/home/kesci/input/Datasets6073/vgsales.csv")
df.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

检查最大年值,我们看到它是2020年,这是一个不可能的发布日期。

year_data = df['Year']
print("Max Year Value: ", year_data.max())
Max Year Value:  2020.0

通过错误年份查看条目的名称,我们可以在网上搜索游戏的发布日期,并将当前值替换为正确的发布日期。

max_entry = year_data.idxmax()
print(max_entry)
max_entry = df.iloc[max_entry]
pd.DataFrame(max_entry).T
5957
RankNamePlatformYearGenrePublisherNA_SalesEU_SalesJP_SalesOther_SalesGlobal_Sales
59575959Imagine: Makeup ArtistDS2020SimulationUbisoft0.27000.020.29
df['Year'] = df['Year'].replace(2020.0, 2009.0)
print("Max Year Value: ", year_data.max())
Max Year Value:  2017.0

下面我们检查游戏(行)的数量和独特的发行者、平台和类型的数量,以了解我们在数据集中的游戏是如何被明确地分布的。

print("Number of games: ", len(df))
publishers = df['Publisher'].unique()
print("Number of publishers: ", len(publishers))
platforms = df['Platform'].unique()
print("Number of platforms: ", len(platforms))
genres = df['Genre'].unique()
print("Number of genres: ", len(genres))
Number of games:  16598
Number of publishers:  579
Number of platforms:  31
Number of genres:  12

我们做一个简单的空值检查。我们可能会在网上搜索所有缺少的出版年份和出版商,但现在我们只需删除那些没有所有数据的游戏的条目。

print(df.isnull().sum())
df = df.dropna()
Rank              0
Name              0
Platform          0
Year            271
Genre             0
Publisher        58
NA_Sales          0
EU_Sales          0
JP_Sales          0
Other_Sales       0
Global_Sales      0
dtype: int64

下面我们创建一个简单的列图表来表示视频游戏每年的“全球销售”总量。我们通过数据获取我们的数据–我们所有的电子游戏销售数据,按“年份”分组,然后调用.sum()来获得每年的总数。这将创建一个以我们的年份作为索引或行名的数据RAME,以及该年总销售额的条目。

在数据集中,表示年份的索引是浮点数,例如“2006.0”而不是“2006年”。我们通过把这些值作为整数来得到我们的x项。一旦数据准备就绪,我们就简单地将x和y变量传递给我们的SebornBarart函数。我们还设置了我们的x标签名称,标题,我们还旋转我们的xtickLabel和更改它们的fontSize。

y = df.groupby(['Year']).sum()
y = y['Global_Sales']
x = y.index.astype(int)

plt.figure(figsize=(12,8))
ax = sns.barplot(y = y, x = x)
ax.set_xlabel(xlabel='$ Millions', fontsize=16)
ax.set_xticklabels(labels = x, fontsize=12, rotation=50)
ax.set_ylabel(ylabel='Year', fontsize=16)
ax.set_title(label='Game Sales in $ Millions Per Year', fontsize=20)
plt.show();

img

下面我们创建了一个简单的列图来表示每年发布的电子游戏的总数量,但是有一点扭曲,它是横向的,这意味着我们的年份条目,通常是我们的X轴,现在在Y轴上,而“Global_Sales”条目的计数通常在Y轴上,现在在X轴上。

x = df.groupby(['Year']).count()
x = x['Global_Sales']
y = x.index.astype(int)

plt.figure(figsize=(12,8))
colors = sns.color_palette("muted")
ax = sns.barplot(y = y, x = x, orient='h', palette=colors)
ax.set_xlabel(xlabel='Number of releases', fontsize=16)
ax.set_ylabel(ylabel='Year', fontsize=16)
ax.set_title(label='Game Releases Per Year', fontsize=20)
Text(0.5, 1.0, 'Game Releases Per Year')

img

下面我们创建了一个要点图,每个出版商每年的销售额都是最高的。全球销售额在Y轴上,年份在X轴上,我们使用切入点图的参数“hue”来代表最高的发行者。

我们使用一个支点表,它使计算“出版商”很容易,出版商的名字按年销售额计算,以及“销售额”,即该出版商每年产生的全球销售额。

注意,Pivot表接受一个函数要应用的参数,该参数具有其他选项,如均值、中值和模式。这个切入点需要一个dataframe,然后您可以简单地将列名添加到x、y和hue。我们还通过旋转和改变它们的大小来定制我们的xtick标签。

table = df.pivot_table('Global_Sales', index='Publisher', columns='Year', aggfunc='sum')
publishers = table.idxmax()
sales = table.max()
years = table.columns.astype(int)
data = pd.concat([publishers, sales], axis=1)
data.columns = ['Publisher', 'Global Sales']

plt.figure(figsize=(12,8))
ax = sns.pointplot(y = 'Global Sales', x = years, hue='Publisher', data=data, size=15)
ax.set_xlabel(xlabel='Year', fontsize=16)
ax.set_ylabel(ylabel='Global Sales Per Year', fontsize=16)
ax.set_title(label='Highest Publisher Revenue in $ Millions Per Year', fontsize=20)
ax.set_xticklabels(labels = years, fontsize=12, rotation=50)
plt.show();

img

下面,我们创建了一个游戏产生的全球销售,它每年赚的钱最多。我们还返回了下面的数据,以供参考。你可以为每个游戏映射不同的颜色,但是在一个有这么多条目的情节中添加一个传奇会让一个情节看起来很混乱。

此图的数据创建与上面类似,不包括使用色调来表示数据中的类别。相反,我们使用调色板,将我们想要的特定调色板中的颜色数传递给它。

table = df.pivot_table('Global_Sales', index='Name', columns='Year')
table.columns = table.columns.astype(int)
games = table.idxmax()
sales = table.max()
years = table.columns
data = pd.concat([games, sales], axis=1)
data.columns = ['Game', 'Global Sales']

colors = sns.color_palette("GnBu_d", len(years))
plt.figure(figsize=(12,8))
ax = sns.barplot(y = years , x = 'Global Sales', data=data, orient='h', palette=colors)
ax.set_xlabel(xlabel='Global Sales Per Year', fontsize=16)
ax.set_ylabel(ylabel='Year', fontsize=16)
ax.set_title(label='Highest Revenue Per Game in $ Millions Per Year', fontsize=20)
plt.show();
data

img

GameGlobal Sales
Year
1980Asteroids4.310
1981Pitfall!4.500
1982Pac-Man7.810
1983Baseball3.200
1984Duck Hunt28.310
1985Super Mario Bros.40.240
1986The Legend of Zelda6.510
1987Zelda II: The Adventure of Link4.380
1988Super Mario Bros. 317.280
1989Tetris30.260
1990Super Mario World20.610
1991The Legend of Zelda: A Link to the Past4.610
1992Super Mario Land 2: 6 Golden Coins11.180
1993Super Mario All-Stars10.550
1994Donkey Kong Country9.300
1995Donkey Kong Country 2: Diddy’s Kong Quest5.150
1996Pokemon Red/Pokemon Blue31.370
1997Gran Turismo10.950
1998Pokémon Yellow: Special Pikachu Edition14.640
1999Pokemon Gold/Pokemon Silver23.100
2000Pokémon Crystal Version6.390
2001Gran Turismo 3: A-Spec14.980
2002Grand Theft Auto: Vice City16.150
2003Mario Kart: Double Dash!!6.950
2004Grand Theft Auto: San Andreas20.810
2005Nintendogs24.760
2006Wii Sports82.740
2007Wii Fit22.720
2008Mario Kart Wii35.820
2009Wii Sports Resort33.000
2010Kinect Adventures!21.820
2011Mario Kart 712.210
2012New Super Mario Bros. 29.820
2013Grand Theft Auto V18.890
2014Pokemon Omega Ruby/Pokemon Alpha Sapphire11.330
2015Call of Duty: Black Ops 35.064
2016Uncharted 4: A Thief’s End4.200
2017Phantasy Star Online 2 Episode 4: Deluxe Package0.020
data = df.groupby(['Publisher']).count().iloc[:,0]
data = pd.DataFrame(data.sort_values(ascending=False))[0:10]
publishers = data.index
data.columns = ['Releases']

colors = sns.color_palette("spring", len(data))
plt.figure(figsize=(12,8))
ax = sns.barplot(y = publishers , x = 'Releases', data=data, orient='h', palette=colors)
ax.set_xlabel(xlabel='Number of Releases', fontsize=16)
ax.set_ylabel(ylabel='Publisher', fontsize=16)
ax.set_title(label='Top 10 Total Publisher Games Released', fontsize=20)
ax.set_yticklabels(labels = publishers, fontsize=14)
plt.show();

img

data = df.groupby(['Publisher']).sum()['Global_Sales']
data = pd.DataFrame(data.sort_values(ascending=False))[0:10]
publishers = data.index
data.columns = ['Global Sales']

colors = sns.color_palette("cool", len(data))
plt.figure(figsize=(12,8))
ax = sns.barplot(y = publishers , x = 'Global Sales', data=data, orient='h', palette=colors)
ax.set_xlabel(xlabel='Revenue in $ Millions', fontsize=16)
ax.set_ylabel(ylabel='Publisher', fontsize=16)
ax.set_title(label='Top 10 Total Publisher Game Revenue', fontsize=20)
ax.set_yticklabels(labels = publishers, fontsize=14)
plt.show();

img

rel = df.groupby(['Genre']).count().iloc[:,0]
rel = pd.DataFrame(rel.sort_values(ascending=False))
genres = rel.index
rel.columns = ['Releases']
colors = sns.color_palette("summer", len(rel))
plt.figure(figsize=(12,8))
ax = sns.barplot(y = genres , x = 'Releases', data=rel, orient='h', palette=colors)
ax.set_xlabel(xlabel='Number of Releases', fontsize=16)
ax.set_ylabel(ylabel='Genre', fontsize=16)
ax.set_title(label='Genres by Total Number of Games Released', fontsize=20)
ax.set_yticklabels(labels = genres, fontsize=14)
plt.show();

img

rev = df.groupby(['Genre']).sum()['Global_Sales']
rev = pd.DataFrame(rev.sort_values(ascending=False))
genres = rev.index
rev.columns = ['Revenue']

colors = sns.color_palette('Set3', len(rev))
plt.figure(figsize=(12,8))
ax = sns.barplot(y = genres , x = 'Revenue', data=rev, orient='h', palette=colors)
ax.set_xlabel(xlabel='Revenue in $ Millions', fontsize=16)
ax.set_ylabel(ylabel='Genre', fontsize=16)
ax.set_title(label='Genres by Total Revenue Generated in $ Millions', fontsize=20)
ax.set_yticklabels(labels = genres, fontsize=14)
plt.show();

img

在这里插入图片描述

我是白又白i,一名喜欢分享知识的程序媛??

如果没有接触过编程这块的朋友看到这篇博客,发现不会编程或者想要学习的,可以直接留言+私我呀【非常感谢你的点赞、收藏、关注、评论,一键四连支持】

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:09:51  更:2021-08-25 12:10:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 13:28:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计