用Python分析了1w场吃鸡数据,原来吃鸡要这么玩!
微信改版,加星标不迷路!
用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_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为抗住伤害的肉盾和负责拆板子的机枪手,对吃鸡是大有益处的。
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场吃鸡数据,原来吃鸡要这么玩!相关推荐
- 用Python分析了1982场英雄联盟数据,开局前预测游戏对局胜负!
微信改版,加星标不迷路! 用Python分析如何打好英雄联盟? 作者:阿广 概述 前言 假设 游戏对战数据获取 分析和训练数据 游戏对战胜负预测 期望研究的问题 结论 阿广说 推荐阅读 前言 如今,只 ...
- 用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!
前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...
- python英雄对战代码_用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!...
前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...
- 用Python分析了1w四六级数据,教你如何通过四六级!
微信改版,加星标不迷路! 用Python分析了1w四六级数据,教你如何通过四六级! 作者:阿广 概述 前言 数据介绍 预期结果 实现过程 搞笑一刻 阿广说 每日问题 前言 陈奕迅说过:在有生的瞬间,考 ...
- 用 Python 分析了 10000 场吃鸡数据,原来吃鸡要这么玩!
作者 | 阿广 责编 | 屠敏 前言 绝地求生在国内火的一塌糊涂的时候,一款名叫 Fortnite 的游戏在国外刮起了堡垒旋风,这款同样为大逃杀玩法的沙盒类游戏,在绝地求生逐渐走低的形势下,堡垒 ...
- python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...
英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...
- 用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!
英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...
- Python分析A股市场财务报表经验总结
1.读取具体目录下的文件名或目录名 import os path_root = 'F:\\data\\A股报表大全' dirs = os.listdir(path_root) for dir in d ...
- 不破不立~EDG夺冠,用Python分析词云图展示粉丝弹幕数据,来感受粉丝的热情吧
大家好~我是恰恰,好久不见啦~Python的乐趣就在于在互联网时代,能实现很多人工做不到的事~ 虽然我不是经常玩游戏,但是我这该死的爱国情怀,在EDG夺冠的时候,我也是十分激动的! 北京时间11 ...
最新文章
- 从学术界到产业界,阿里云李飞飞谈数据库为何要开源? | 《新程序员》
- 分享经济:我的,就是你的
- Play Framework介绍:主要概念(转)
- input内的字体颜色_嘉兴市硅胶喷涂颜色油订制
- 截止角频率和截止频率的关系_开关电源的控制环截止频率和开关频率有什么关系?...
- python利用myqr库生成二维码
- 新版开发工具?全新智能设备?华为开发者大会2021(Together)来了!
- 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
- C# ping 局域网扫描
- 图像处理——打开DICOM图像
- MAC下载Android源码下载 Android10详解
- Axure 9 实战案例,母版的应用 3,用母版绘制高逼格APP原型
- Element UI 中国省市区级联数据js
- linux音响会产生pulse文件,Linux声音系统和PulseAudio简介
- Jquery 禁止键盘Backspace键
- windows下管理员用户与标准用户切换过程中的坑
- java swing表格翻页_让Swing表格支持远程后台数据翻页
- Opencv——图像的矩
- java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发
- 程序员真的是吃青春饭吗?分享我的6点面试经验,分分钟搞定!