微信改版,加星标不迷路!

用Python分析如何才能高效吃鸡?

作者:阿广

概述

  • 前言

  • 获取数据

  • 观察数据

  • 数据处理

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

  • 分析热度图

  • 期望研究的问题

  • 结论

  • 阿广说

  • 推荐阅读

前言

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

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

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

获取数据

首先,我们需要加载Python库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import 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 number
coun 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.000000
mean 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.238095
std  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.122052
min  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.000000
25%  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.000000
50%  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.000000
75%  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.000000
max  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-name
12  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列拆分成年月日列和小时列,下面是数据清理:

#复制一个备用df
Fortnite_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_hour
12  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:00
18  0019  1  1  1  0.02  5  2  4000  1351  250  225  214  8096  1  608  1156  Team  Alvin  2018-05-22  21:24:00
25  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:00
26  0027  2  3  0  0.18  6  0  2000  1955  100  451  541  23633  1  594  1188  Team  Alvin  2018-05-28  21:58:00
27  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_numberprecision`cause_damage这几个我们惯常看的吃鸡指标中显示非常不突出,甚至还不如很多排名比较靠后的数据。之后筛选出伤害高于606的数据

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

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

并不是这样的,我们的眼光落在了afford_damagebuilding_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_numberprecisioncause_damage这几个数据对于吃鸡固然重要,但是要是在4人小组中,围绕1到2个输出位,配置1到2为抗住伤害的肉盾和负责拆板子的机枪手,对吃鸡是大有益处的。

dfData = Fortnite_one.corr()
plt.subplots(figsize=(8, 8)) # 设置画面大小
sns.heatmap(dfData, annot=True, vmax=1, square=True, cmap="Blues")
plt.show()

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

https://github.com/zandaoguang/eattingchicken

或者点击查看原文可查看源码

分析热度图

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

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

期望研究的问题

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

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

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

结论

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

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

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

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

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

阿广说

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

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

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

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

推荐阅读

一起睡了四年的大学舍友

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

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

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

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

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

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

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

  4. 用Python分析了1w四六级数据,教你如何通过四六级!

    微信改版,加星标不迷路! 用Python分析了1w四六级数据,教你如何通过四六级! 作者:阿广 概述 前言 数据介绍 预期结果 实现过程 搞笑一刻 阿广说 每日问题 前言 陈奕迅说过:在有生的瞬间,考 ...

  5. 用 Python 分析了 10000 场吃鸡数据,原来吃鸡要这么玩!

    作者 | 阿广 责编 | 屠敏 前言    绝地求生在国内火的一塌糊涂的时候,一款名叫 Fortnite 的游戏在国外刮起了堡垒旋风,这款同样为大逃杀玩法的沙盒类游戏,在绝地求生逐渐走低的形势下,堡垒 ...

  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. 不破不立~EDG夺冠,用Python分析词云图展示粉丝弹幕数据,来感受粉丝的热情吧

    大家好~我是恰恰,好久不见啦~Python的乐趣就在于在互联网时代,能实现很多人工做不到的事~    虽然我不是经常玩游戏,但是我这该死的爱国情怀,在EDG夺冠的时候,我也是十分激动的! 北京时间11 ...

最新文章

  1. 从学术界到产业界,阿里云李飞飞谈数据库为何要开源? | 《新程序员》
  2. 分享经济:我的,就是你的
  3. Play Framework介绍:主要概念(转)
  4. input内的字体颜色_嘉兴市硅胶喷涂颜色油订制
  5. 截止角频率和截止频率的关系_开关电源的控制环截止频率和开关频率有什么关系?...
  6. python利用myqr库生成二维码
  7. 新版开发工具?全新智能设备?华为开发者大会2021(Together)来了!
  8. 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
  9. C# ping 局域网扫描
  10. 图像处理——打开DICOM图像
  11. MAC下载Android源码下载 Android10详解
  12. Axure 9 实战案例,母版的应用 3,用母版绘制高逼格APP原型
  13. Element UI 中国省市区级联数据js
  14. linux音响会产生pulse文件,Linux声音系统和PulseAudio简介
  15. Jquery 禁止键盘Backspace键
  16. windows下管理员用户与标准用户切换过程中的坑
  17. java swing表格翻页_让Swing表格支持远程后台数据翻页
  18. Opencv——图像的矩
  19. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发
  20. 程序员真的是吃青春饭吗?分享我的6点面试经验,分分钟搞定!

热门文章

  1. 2021年最有用的数据清洗 Python 库
  2. 使用 Python 开发一个恐龙跑跑小游戏,玩起来
  3. 2020年AI产业报告:100个岗位抢1个人,计算机视觉成最大缺口
  4. Google经典面试题解析
  5. 程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?
  6. 云计算赋能人工智能,未来的红利在哪?
  7. 免费报名 | 机器学习的第二次入门(入群有福利)
  8. 这家中国芯片公司年利润追上英伟达了?假的
  9. 面试:TCP协议经典十五连问!
  10. 4次优化,我把 Redis 性能 “压榨” 到极致!