使用Google Colab对PUBG的玩家死亡数据集进行可视化分析
数据集
数据集可以在Kaggle(https://www.kaggle.com/)中找到。需要注册Kaggle账号后,Account → API, 选择 ”Create New API Token” 并下载.之后把token文件上传到Colab的文件夹中。
配置数据集
! pip install kaggle
! mkdir ~/.kaggle
! cp .json ~/.kaggle/
! chmod 600 ~/.kaggle/kaggle.json
//下载并解压PUBG数据集,可能需要花几分钟
! kaggle datasets download skihikingkevin/pubg-match-deaths
! unzip pubg-match-deaths.zip
一些画图的模块,主要是pandas library
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cmap
%matplotlib inline
数据准备
导入数据集中的地图
死亡位置散点图
首先需要对一些不在地图边界内的死亡数据进行剔除,并且设置散点图的坐标。
在scatter中,s参数代表点的大小,alpha代表透明度,color代表颜色。为了保证在能看清背景图片的情况下,对散点图和热图进行分析,我选择了0.6的alpha值。
死亡位置热图
hm_cells()函数主要用于计算每个热图单元中的死亡人数,主要用参数n来控制单元的大小。
heatmap()函数用于绘制热图。对于单元的大小,单元至少需要覆盖整个地形,例如整个城市、整个山顶等。这样得出的单元就更有代表性。
对于log参数,该函数使用log2来计算输入数据单元的基数2的对数,并将任何元素的负值或零值设置为零,这对于跨越几个数量级的数据的可视化很有用。然而,在这个实验室中,我使用的数据集不是很大,所以没有使用对数参数。
对于阿尔法参数,有必要使热图尽可能清晰,同时仍能看到背景地形。经过几次实验,我认为0.6是比较合理的。
不同武器造成的死亡位置热图
首先需要对不同的武器设置标签,包括步枪、狙击枪、散弹枪、爆炸物、车辆等等。
绘制不同武器造成死亡的位置热图,我只分析了步枪、散弹枪、爆炸物和车辆这些有代表性的。
我认为这些死亡位置的差异主要是由于不同的武器适用于不同的地形。一方面,玩家喜欢在该地形上使用合适的武器,另一方面,使用该武器击杀的可能性更大。
对于步枪来说,整个地图都适合使用,所以热图的分布比较均匀。对于霰弹枪来说,它适合于城市地形,那里有更多的掩体,而且离敌人更近。爆炸物适用于敌人难以移动的狭窄地形。车辆在公路或平原上更容易产生击杀。四个图一起比较可以看出,车辆和爆炸物产生的击杀数远低于枪械,因为它们更容易被躲避。
击杀距离热图
首先需要重写cell()函数,通过击杀者和被击杀者的位置返回击杀距离。然后用新的cell()函数绘制热图。
死亡距离的热图显示,除了开阔的平原地区死亡距离比较远之外,各地区的死亡距离没有太大差别。我认为这是因为武器射程的差别很小,而且其它地区有更多的掩体。