相关数据下载,请关注公众号"一行数据",回复"pubg"可得
既然学习一段时间python了,那么得拿些好玩的东西练练手,这里通过加载几万局的吃鸡数据,来对吃鸡胜率进行可视化分析。
通过绘制击杀地图和被击杀地图查找LYB的藏身之地
下面贴上代码,和分析。
#这个代码,是通过展示地图击杀和死亡最多的地方,让我们可以挑选出有哪些好玩的地方
#加载模块
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from scipy.misc.pilutil import imread
f = open(r'F:\spyder\kernel项目\pubg\PUBG_MatchData_Flattened.tsv')#添加路径
df = pd.read_csv(f,sep = '\t')
#edf和mdf是两个地图,下面把两张地图分开进行处理
edf = df.loc[df['map_id'] == 'ERANGEL']
mdf = df.loc[df['map_id'] == 'MIRAMAR']
#print(edf.head())
def killer_victim_df_maker(df):
#挑出地图中击杀和被杀玩家的坐标
df = edf
victim_x_df = df.filter(regex = 'victim_position_x')
victim_y_df = df.filter(regex = 'victim_position_y')
killer_x_df = df.filter(regex = 'killer_position_x')
killer_y_df = df.filter(regex = 'killer_position_y')
#ravel()将多维矩阵变成一维
victim_x_s = pd.Series(victim_x_df.values.ravel('F'))
victim_y_s = pd.Series(victim_y_df.values.ravel('F'))
killer_x_s = pd.Series(killer_x_df.values.ravel('F'))
killer_y_s = pd.Series(killer_y_df.values.ravel('F'))
vdata = {
'x':victim_x_s, 'y':victim_y_s}
kdata = {
'x':killer_x_s, 'y':killer_y_s}
#dropna(how = 'any')删除带nan的行
#再留下坐标等于0(在边界上的异常数据)剔除
victim_df = pd.DataFrame(data = vdata).dropna(how = 'any')
victim_df = victim_df[victim_df['x'] > 0]
killer_df = pd.DataFrame(data = kdata).dropna(how = 'any')
killer_df = killer_df[killer_df['x'] > 0]
return killer_df, victim_df
ekdf,evdf = killer_victim_df_maker(edf)
mkdf,mvdf = killer_victim_df_maker(mdf)
# print(ekdf.head())#在森林击杀的坐标数据
# print(evdf.head())#在森林被杀的坐标数据
# print(mkdf.head())
# print(mvdf.head())
# print(len(ekdf), len(evdf), len(mkdf), len(mvdf))
#将dataframe转换成numpy array
plot_data_ev = evdf[['x','y']].values
plot_data_ek = ekdf[['x','y']].values
plot_data_mv = mvdf[['x','y']].values
plot_data_mk = mkdf[['x','y']].values
#将获得的坐标数据与地图上的坐标数据进行匹配
plot_data_ev = plot_data_ev * 4040 /