游戏销售情况数据可视化分析笔记①

目录

参考来源

代码及学习笔记

导入库、数据存储位置、文件结构以及快速检查文件内容

导入数据,获取数据结构规模和空值情况,并获取数值列的描述性统计信息

销量前十数据可视化 (条形图)

数据处理

数据可视化 

综合排名前十名次数据可视化 (条形图)


参考来源

Global Video Game Sales of Data Analysis (kaggle.com)

代码及学习笔记


导入库、检查数据存储位置、文件结构以及文件内容

使用os模块遍历指定目录(/kaggle/input),列出该目录及其子目录下的所有文件,并打印每个文件的完整路径。这是一种常见的数据分析任务中的基本操作,用于了解数据存储位置、文件结构以及快速检查文件内容。

  • os是Python标准库中的一个模块,提供了访问操作系统功能的方法。
  • os.walk()函数用于遍历指定目录及其子目录下的所有文件和文件夹。
  • os.path.join()函数用于构建文件的完整路径。
import numpy as np
import pandas as pd
import os
for dirname, _, filenames in os.walk('/kaggle/input'): #了解数据存储位置、文件结构以及快速检查文件内容
    for filename in filenames:
        print(os.path.join(dirname, filename)) 

导入数据,获取数据结构规模和空值情况,并获取数值列的描述性统计信息

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt #导入库
df=pd.read_csv("/kaggle/input/global-video-game-sales/vgsales.csv") #读取文件
df.head() #查看前五行数据
df.shape #数据维度
df.isnull().sum() #统计数据空值
df.info() #每列的数据类型非空值的数量和占用的内存
df.describe() #数值列的描述性统计信息

销量前十数据可视化 (条形图)

数据处理
top_videogames = df[['Rank', 'Name', 'Global_Sales']].groupby('Name').sum().sort_values(by='Global_Sales', ascending=False)
#对数据框中的三列以名称分组求和,按照全球销量降序分类
top_videogames.head(10) #取前十行
数据可视化 
ax = top_videogames.head(10).plot(kind='bar', figsize=(12, 7), title='Global Sales Per Name')
#选取前十行数据绘制条形统计图,指定图像大小,统计图标题
for p in ax.patches:
    ax.annotate(str(p.get_height()), (p.get_x() + p.get_width() / 2, p.get_height()), rotation=90, ha='center', va='bottom')
#针对一个 Matplotlib 的图形对象中的每个条形图或柱形图(patches)进行迭代,并在每个条形图的顶部标注它的高度值
# `ax` 是 Matplotlib 中的轴对象
#str(p.get_height()) 获取其高度值并转换成字符串
#`p.get_x()` 获取条形图的左边界位置
#`p.get_width()` 获取条形图的宽度
#`p.get_height()` 获取条形图的高度
#`ax.annotate()` 在每个条形图的中心位置添加标注,依次为:字符串,坐标,`rotation=90` 使得标注沿着条形图的高度方向旋转,`ha='center'` 和 `va='bottom'` 分别指定水平和垂直方向的对齐方式。
plt.show()

综合排名前十名次数据可视化 (条形图)

top_rank = df[['Rank', 'Name',]].groupby('Name').sum().sort_values(by='Rank', ascending=True) #取序号和名称,按名称分类对序号求和,以序号升序排序
top_rank.head(10) #取前十
ax = top_rank.head(10).plot(kind='bar', figsize=(12, 7), title='Top 10 Rank Video Games')
for p in ax.patches:
    ax.annotate(str(p.get_height()), (p.get_x() + p.get_width() / 2, p.get_height()), ha='center', va='bottom')
plt.show() #数据可视化

最初我没能理解首行数据处理的含义,对于对序号求和有两处疑惑:

  1. 为什么对序号求和?得到的数据意义是什么?
  2. sum()方法为什么对Rank列求和?

解答如下:

有一行叫SuperMarioBros,另一行叫NewSuperMarioBros。 然后一个对应的Rank是2,另一个Rank是7, 它在求和的过程当中, 它把这两个的序号Rank求和求到一起了, 然后得出了一个9。

作为同名的游戏,在按照全球销量降序排列的情况下,前作和后作这两个游戏的总排名的和可以作为它们在销量上的一个综合指标,代表它们在销量上的综合表现。具体来说:

- 如果前作和后作的总排名的和较低,比如说前作排名为 2,后作排名为 7,总和为 9,那么这可能意味着两个游戏的综合销量表现相对较好,它们的销量总和在所有游戏中排名靠前。
- 如果前作和后作的总排名的和较高,比如说前作排名为 2,后作排名为 100,总和为 102,那么这可能意味着两个游戏的综合销量表现相对较差,它们的销量总和在所有游戏中排名较低。

在 Pandas 中,如果对多列使用了 `groupby()` 方法,并跟随着 `sum()` 方法,那么 `sum()` 方法将会对每个分组中的所有数值列进行求和操作。例如,假设有一个 DataFrame 包含 'Name'、'Age' 和 'Salary' 三列,对 'Name' 列进行分组,并且使用了 `sum()` 方法,那么 `sum()` 方法将会对每个分组中的 'Age' 和 'Salary' 列进行求和操作,得到每个 'Name' 对应的总年龄和总工资。这意味着 `sum()` 方法对于多列的情况下,会对所有数值列进行求和。

如果只想对某一列进行求和,而不是对所有数值列进行求和,可以在 `sum()` 方法中指定要进行求和的列。例如,如果只想对 'Salary' 列进行求和,可以这样做:
salary_sum = df.groupby('Name')['Salary'].sum()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值