作者 | 阿广

责编 | 屠敏

前言   

绝地求生在国内火的一塌糊涂的时候,一款名叫 Fortnite 的游戏在国外刮起了堡垒旋风,这款同样为大逃杀玩法的沙盒类游戏,在绝地求生逐渐走低的形势下,堡垒之夜却夺得多项提名,众多明星主播转战堡垒!

上天入地,盖楼修路,铺陷阱设弹床;想和太阳肩并肩,一发火箭就上天。

鉴于“二百斤灵魂”小胖舍友经常痴迷于吃鸡类游戏,为了帮助他提高游戏胜率,我爬取并分析了 1w 余场吃鸡数据。下面让我们来看一下能吃鸡得强相关条件是什么?

获取数据

首先,我们需要加载 Python 库:

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline

然后载入Fortnite数据,检查数据的质量和整洁度,然后整理和清理数据集,以便进行后续的清理工作。

#录入Fornite的CSV数据Fortnite_data = pd.read_csv('aguang.csv')

为了对数据集有一个大致的了解,不妨先输出数据的前几行。

Fortnite_data.head()

结果为:

serial_number  knockout_number  assist-number  save_number  precision  hit_the_target  exact_strike  marching_course  material collection  material-using  afford damage  cause_damage  building-damage  grade  Total-score  Total-experience  teams number  match-time  competitor-name0  1  4  1  0  0.33  69  19  4000  1325  670  554  815  3709  3  448.0  762.0  1  2018/5/14 11:37  Alvin1  2  2  1  0  0.31  28  0  2000  733  110  292  268  7733  9  282.0  536.0  2  2018/5/17 17:48  Alvin2  3  3  0  1  0.21  33  12  3000  1806  350  245  543  7727  8  291.0  597.0  4  2018/5/18 18:05  Alvin3  4  2  0  3  0.05  6  0  3000  700  420  746  163  19008  3  NaN  NaN  4  2018/5/18 18:26  Alvin4  5  1  4  1  0.12  32  7  3000  668  370  212  432  13108  4  358.0  734.0  4  2018/5/18 18:53  Alvin

观察数据

本数据集包含了1w余把游戏数据,其中可能有“二百斤”的小胖网瘾记录(惨不忍睹:joy:)。该数据集中的缺失值被标记为NaN。数据列名的含义如下:

serial_number:         游戏场次编号  knockout_number:  本场淘汰人数  assist_number:        助攻数  save_number:          救起队友人数  precision:                 射击精度  hit_the_target:         命中  exact_strike:             精准打击  marching_course:     行进历程(m)material_collection:  材料已收集  material-using:         使用材料  afford_damage:        承受伤害  cause_damage:         玩家伤害  building-damage:     建筑伤害  total_score:               总分total_experience:      总经验teams_number:        参赛情况(1人为Solo,两人为Double,4人为team,3人参赛自动填充为4人)match_time:             游戏时间competitor_name:   该条记录的所有人

数据处理

查看数据类型和数据有无缺失值:

#查看数据类型和数据有无缺失Fortnite_data.info()

查看一下有无重复数据:

#查看一下有无重复数据Fortnite_data[Fortnite_data.duplicated()]

结果为:

serial_number  knockout_number  assist-number  save_number  precision  hit_the_target  exact_strike  marching_course  material collection  material-using  afford damage  cause_damage  building-damage  grade  Total-score  Total-experience  teams number  match-time  competitor-name

查看数据的描述统计:

#查看数据的描述统计Fortnite_data.describe()

结果为:

serial_number  knockout_number  assist-number  save_number  precision  hit_the_target  exact_strike  marching_course  material collection  material-using  afford damage  cause_damage  building-damage  grade  Total-score  Total-experience  teams numbercoun 42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  42.000000  20.000000  20.000000  42.000000mean 21.500000  2.642857  1.261905  0.380952  0.246429  38.452381  6.976190  2576.142857  1092.785714  312.619048  350.047619  567.309524  9336.119048  6.000000  362.700000  676.350000  3.238095std  12.267844  2.818246  1.415240  0.660834  0.168520  32.539809  8.529684  781.055339  617.643932  213.781967  160.616336  434.419966  6366.174673  4.928761  151.638802  274.785519  1.122052min  1.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  481.000000  200.000000  0.000000  52.000000  0.000000  1755.000000  1.000000  84.000000  168.000000  1.00000025%  11.250000  1.000000  0.000000  0.000000  0.172500  10.250000  2.000000  2000.000000  694.750000  162.500000  273.000000  262.750000  5780.000000  3.000000  277.750000  507.750000  2.00000050%  21.500000  2.000000  1.000000  0.000000  0.240000  32.500000  3.500000  3000.000000  905.500000  260.000000  326.000000  513.000000  7819.000000  4.000000  328.500000  602.500000  4.00000075%  31.750000  3.000000  2.000000  1.000000  0.305000  56.000000  10.250000  3000.000000  1453.750000  367.500000  403.000000  692.500000  10799.500000  7.750000  403.000000  775.250000  4.000000max  42.000000  15.000000  5.000000  3.000000  1.000000  126.000000  39.000000  4000.000000  2728.000000  1060.000000  877.000000  1970.000000  32963.000000  18.000000  728.000000  1238.000000  4.000000

经过分析数据,发现一场淘汰13人的数据,可能存在误差,单独输出看一下:

Fortnite_data[Fortnite_data['knockout_number']==13]

结果为:

serial_number  knockout_number  assist-number  save_number  precision  hit_the_target  exact_strike  marching_course  material collection  material-using  afford damage  cause_damage  building-damage  grade  Total-score  Total-experience  teams number  match-time  competitor-name12  13  15  1  0  0.24  103  18  3000  1488  660  52  1970  8612  1  728.0  1238.0  1  2018/5/19 21:47  Wal-Mart

经过分析,这条属于正常数据,可能是“有趣的灵魂”小胖同学这场异常生猛,一人杀了13个,一路高歌在吃鸡的道路上,且只有3000m的行进举例说明基本上没有跑毒的困扰,可以说天时地利了!

为了提高清洁度,将match-time列拆分成年月日列和小时列,下面是数据清理:

#复制一个备用dfFortnite_clean = Fortnite_data.copy()

吃鸡到底和哪个数据相关性最强?

在完成数据整理和清理之后,我接下来进行探索性数据分析。首先确定研究问题,然后可以输出描述性统计值,查看有没有值得研究的点(途中可以因为了解到更好的点而调整问题方向),创建可视化图表,解决你在前面提出的研究问题。

探究问题:获得第一名(吃鸡)到底跟那个数据相关性最高?

Fortnite_clean.head()#对整理好的数据输出描述性统计Fortnite_clean.describe()#选出获得第一名的数据Fortnite_clean[Fortnite_clean['grade']==1]

结果为:

serial_number  knockout_number  assist_number  save_number  precision  hit_the_target  exact_strike  marching_course  material_collection  material_using  afford_damage  cause_damage  building_damage  grade  total_score  total_experience  teams_number  data_sources  match_day  match_hour12  0013  15  1  0  0.24  103  18  3000  1488  660  52  1970  8612  1  728  1238  Solo  Wal-Mart  2018-05-19  21:47:0018  0019  1  1  1  0.02  5  2  4000  1351  250  225  214  8096  1  608  1156  Team  Alvin  2018-05-22  21:24:0025  0026  5  3  1  0.26  62  2  4000  2728  330  83  1040  7096  1  0  0  Team  Wal-Mart  2018-05-28  21:58:0026  0027  2  3  0  0.18  6  0  2000  1955  100  451  541  23633  1  594  1188  Team  Alvin  2018-05-28  21:58:0027  0028  2  4  0  0.19  48  3  3000  1755  590  283  605  20733  1  0  0  Team  Kaka  2018-05-28  21:58:00

奇怪的是,在吃鸡的数据中,Wal-Mart的数据明显偏优良,Alivn和Kaka的数据看起来似乎并不怎么样,在knockout_number,precision和`cause_damage这几个我们惯常看的吃鸡指标中显示非常不突出,甚至还不如很多排名比较靠后的数据。之后筛选出伤害高于606的数据

#筛选出造成伤害高于606的数据Fortnite_clean[Fortnite_clean['cause_damage']>=606]

我们可以看到高于吃鸡的Alvin和Kaka记录的那次只造成541和605伤害的数据多如牛毛,但是成绩貌似并不怎么样,成绩才在第六名徘徊!那是什么原因造成Alvin和Kaka吃鸡的呢,难道只是搭上了“二百斤”小胖沃尔玛的快船,两位都是划水之辈么!

并不是这样的,我们的眼光落在了afford_damage和building_damage上,两位都有很高的承受伤害和建筑伤害,(堡垒之夜是可以自己搭建筑作为掩体的)那他们是不是去帮主火力手沃尔玛去吸引火力和打掉地方简直给沃尔玛输出空间的呢,让我们继续研究。

那么,引来了一个分支问题:围绕主输出手,一个有着afford_damage和building_damage的队友对吃鸡有功效吗?

解决代码如下:

Fortnite_clean[Fortnite_clean['afford_damage']>=451].grade.mean()output:3.125

Fortnite_clean[Fortnite_clean['building_damage']>=20000].grade.mean()output:1.75

可推断,knockout_number,precision和cause_damage这几个数据对于吃鸡固然重要,但是要是在4人小组中,围绕1到2个输出位,配置1到2为抗住伤害的肉盾和负责拆板子的机枪手,对吃鸡是大有益处的。

经过数据的可视化,热度图如下:

分析热度图

在热力图中,与吃鸡(grade)相关性比较高的前三项是:材料收集、淘汰人数和造成伤害。

之前比较看好的命中和精准打击相关性不太高,难道良好的FPS手感在堡垒之夜中已经不太重要了么,这就还需要更多的数据来研究。

期望研究的问题

  • 是否天命圈与能否吃鸡是不是有相关性?(marching_course<2000)

  • 比赛中使用更多的板子与能否吃鸡是不是有相关性?(material_using)

注:由于数据量太小,以后能收集到更多的数据,是希望可以对上面以及更多的方向进行研究。

结论

根据上面的热力图可以得出如下结果:

  • 与吃鸡相关性比较高的前三项是:材料收集、淘汰人数和造成伤害,基本复合预期;

  • 材料使用的相关性高是因为被淘汰的玩家爆出的装备和材料被捡起也视作材料收集;

  • 组队如果想要取得好成绩,围绕1到2个输出位,配置1到2为抗住伤害的肉盾和负责拆板子的机枪手,才是正道;

  • 正如前面所说,这个分析出来的结果更偏向于单人吃鸡,组队吃鸡,队员之间的工作分配也是非常重要的。

最后想说的话

用时间和生命兑换虚拟的快感和对现实的逃避,最终还是一无所获。疏远了自己的朋友,家人,越打越孤独,越孤独越打。

每一局都好像重新开始,每一局都不过是重复上演。一局又一局,看不到尽头。炫耀的是战绩,流失的是生命。

每次该做正事了,仔细规划一番后:好可怕,要好长时间哦。先打一盘游戏压压惊...就这样,一日复一日,一年复一年,时间在别人的圈套中浪费掉,我们和理想的距离也越来越远。

游戏初始画面里都写着,适度游戏益脑,切勿沉迷游戏。我希望每一个打游戏的朋友,都能够做到:吃鸡是一种态度,不是生活的全部!

GitHub 地址:https://github.com/zandaoguang/eattingchicken

作者简介:阿广,本文首发于个人公众号「视学算法」。

「视学算法」是专注于大数据、人工智能和算法的学习平台,也是一个保送中科院软件研究所直博生的自留地。人生苦短,我愿做您最忠实的技术支持伙伴!一起用代码改变世界!

【完】


微信改版了,

想快速看到CSDN的热乎文章,

赶快把CSDN公众号设为星标吧,

打开公众号,点击“设为星标”就可以啦!

推荐阅读:

  • 5G 爆发前夕,这些科技巨头们聚在一起“密谋”了些什么?!

  • 为什么越来越少的人用 jQuery?

  • 写了 300000 行基础设施代码,我学到了这五条经验

  • 老码农冒死揭开行业黑幕:如何编写无法维护的代码

  • 2018最后一战:25天编程PK赛!

  • 想让马云成为你的老大?揭秘阿里面试情景

  • 通证简史|从日进斗金到夹缝求存, 细数Token的前世今生

  • 如何用 Python 实现选择排序?

用 Python 分析了 10000 场吃鸡数据,原来吃鸡要这么玩!相关推荐

  1. 用Python分析了1982场英雄联盟数据,开局前预测游戏对局胜负!

    微信改版,加星标不迷路! 用Python分析如何打好英雄联盟? 作者:阿广 概述 前言 假设 游戏对战数据获取 分析和训练数据 游戏对战胜负预测 期望研究的问题 结论 阿广说 推荐阅读 前言 如今,只 ...

  2. 用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!

    前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...

  3. python英雄对战代码_用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!...

    前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...

  4. 用Python分析了1w场吃鸡数据,原来吃鸡要这么玩!

    微信改版,加星标不迷路! 用Python分析如何才能高效吃鸡? 作者:阿广 概述 前言 获取数据 观察数据 数据处理 吃鸡到底和哪个数据相关性最强? 分析热度图 期望研究的问题 结论 阿广说 推荐阅读 ...

  5. Python分析香港26281套在售二手房数据!寸土寸金啊!

    背景 香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异.早在60年代末香港房价就经历了暴涨,人们早已对不动产的金融属性了如指掌,全港的投资情绪一直都相当火热.即便香港当前失业率高企 ...

  6. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  7. 用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  8. Python分析A股市场财务报表经验总结

    1.读取具体目录下的文件名或目录名 import os path_root = 'F:\\data\\A股报表大全' dirs = os.listdir(path_root) for dir in d ...

  9. Python分析香港26281套在售二手房数据

    公众号后台回复"图书",了解更多号主新书内容 作者:J哥 来源:菜J学Python 背景 香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异.早在60年代末香港房 ...

最新文章

  1. DeepDive-信息抽取工具安装教程
  2. 小型电商服务器平台搭建(一)
  3. (转)linux如何让历史记录不记录敏感命令
  4. 喜欢 Netflix 么?你应该感谢 FreeBSD
  5. Redis的常用命令——set的常用命令
  6. 怎样在线把别人web前端代码抓下_自学web前端8个月,我是怎样拿下7K薪资的?
  7. 【Python】Python爬虫快速入门,BeautifulSoup基本使用及实践
  8. flask+sqlite3+echarts2+ajax数据可视化--静态图
  9. Asterisk SIP连通测试(X-Lite eyebeam)
  10. solidworks属性管理器_老式经典|如何提高SOLIDWORKS的运行速度
  11. python小型编程_学习Python编程的11个资源
  12. Android技术栈总结
  13. UI基础--烟花动画
  14. TransCAD实用技术梗概
  15. Keras入门(八)K折交叉验证
  16. Python根据字幕文件自动给视频添加字幕
  17. 黑马程序员————小牛皮糖学习笔记————IO流之未使用缓冲区读写文件
  18. MFC实现简易绘图软件
  19. A ConvNet for the 2020s
  20. 折半查找(二分查找)的理解

热门文章

  1. 记录——《C Primer Plus (第五版)》第七章编程练习第六题
  2. 在ubuntu中使用cv2.imshow()报错 No protocol specified qt.qpa.xcb: could not connect to display :0
  3. GoLand连接Linux子系统远程开发
  4. Flutter布局锦囊---蜡笔画的表单
  5. 制炭机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. plsql中oracle定时任务日志,速掌握一个简单的Oracle定时任务
  7. mysql数据库的远程访问_mysql数据库远程访问设置方法
  8. 上怎么图片和字环绕_计算机上的0和1是怎么变成我们屏幕上看到的图片、视频和声音的?...
  9. “操作系统不以 C 开头和结尾,C 不等于整个世界”
  10. 代码审查反馈提交修复时,是否应该压缩提交?