先解释下,之所以叫做不完全分析呢,一是水平有限,二是重复操作,因为很多需要的结果都套用的是同一种方法,所以就不重复操作,毕竟本人也不玩吃鸡【掩面遁】
数据量大概在一千万左右,这个文件没去看,刚才看的是另一个文件是一千三百万条
环境 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()
复制代码