吃鸡数据不完全分析

326 阅读1分钟

先解释下,之所以叫做不完全分析呢,一是水平有限,二是重复操作,因为很多需要的结果都套用的是同一种方法,所以就不重复操作,毕竟本人也不玩吃鸡【掩面遁】

数据量大概在一千万左右,这个文件没去看,刚才看的是另一个文件是一千三百万条

环境 py3.6

  • 导入数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('E:\\datasets\\chijidata\\deaths\\kill_match_stats_final_0.csv')
"""
字段如下
killed_by	killer_name	killer_placement	killer_position_x	killer_position_y	map	match_id	time	victim_name	victim_placement	victim_position_x	victim_position_y
"""
  • 看下人数
killer_sort = data.groupby('killer_name').size()
"""
killer_name
#unknown          61471
0----erhu----0        1
0---HaMMaN---0        6
0---Wan---0           3
0---noon              4
dtype: int64
"""

有一行unknown,这个对于用户名统计来说是不必的,下面需要删掉

killer_sort = killer_sort.drop('#unknown')
#排序
killer_sort = killer_sort.sort_values(ascending = False)
"""
hzxiaobin           425
JZalan              406
feitengdedan        358
Ashbur_             352
siliymaui125        325
"""
  • 接下来是被杀的人的统计,它也有unknown,所以也要去掉
victim_sort =  data.groupby('victim_name').size().drop('#unknown').sort_values(ascending = False)
#合并两张表
kill_victim = pd.concat([killer_sort,victim_sort], axis=1,sort=True)

得到初始的表格数据

name 0 1
0----erhu----0 1.0 1.0
0---HaMMaN---0 6.0 2.0
0---Wan---0 3.0 1.0
0---noon 4.0 1.0
0--0IHotdog 1.0 1.0
#改一下列名
kill_victim = kill_victim.rename(columns = {0:'kill',1:'beKill'})
#按照杀人数排序
kill_victim = kill_victim.sort_values(by='kill',ascending = False)
name kill beKill
hzxiaobin 425.0 241.0
JZalan 406.0 263.0
feitengdedan 358.0 211.0
Ashbur_ 352.0 149.0
siliymaui125 325.0 181.0
#丢弃掉空行
kill_victim = kill_victim.dropna()
#增加胜率列并统计胜率
kill_victim['success_rate'] = (kill_victim['kill']-kill_victim['beKill'])/kill_victim['kill']
#按照胜率排名
kill_victim.sort_values(by='success_rate',ascending = False).head()

这边就没什么好看的了。结果是居然有杀140人死1人的,这不知道是开挂还是怎么回事,所以胜率最高是99%以上。

#画一下最常杀人地点
data.plot(kind="scatter",x = 'killer_position_x',y='killer_position_y',alpha = 0.01)
#统计一下什么枪用的最多
gun_most = data.groupby('killed_by').count()
gun_most = gun_most.rename(columns = {'killer_name':'count'}).sort_values(by='count',ascending = False)
gun_most = gun_most.drop(data.columns[2:], axis=1,inplace=False)
#获取地图信息
map_count = data.groupby('map').count()