2020-王者荣耀英雄分析
前言:
作者本是想写最近参加的第三届泰迪杯分析题目,可惜因第三届泰迪杯分析比赛涉及敏感话题,因此博客无法发出,不过如有码友有需求的话,可以私聊本人。此题是本人无聊下练习的一个数据分析题目,各位码友有兴趣的可以看一下。
数据下载地址:
https://datamore.qq.com/project/wzmatch/dist/index.html#/
此次训练是王者荣耀英雄数据
先让我们看一下数据表:
此次的任务是给各英雄建立画像(简单来说就是为英雄贴上各自的标签)
任务1:数据处理
数据分析离不开数据的预处理环节,因此数据分析前都得做数据预处理
首先我们得查看数据各列是什么格式的,是否有空值,重复值
实现代码:
import pandas as pd
data=pd.read_excel(r"D:\大数据学习\数据分析与挖掘\20年王者数据\原数据表\英雄数据.xls")#读取数据
data.dtypes#检测数据中各列表是何种类型
data.isnull().sum()#查看数据表是否有空值
data.duplicated().any()#查看数据表是否有重复值
因为此数据是官方出的数据,因此数据是无空值无重复值的
数据列表类型:
此次我提取出除出场率为0的英雄,因为本人认为出场率为0的英雄为无信息系列。
因此数据为:
任务2:数据可视化与分析
一般在数据分析中是数据可视化后再数据分析,但是在此因是训练,因此二者结合在一起。
我们的任务是给各英雄贴上标签,那先明白何为标签:
举个通俗的例子,我们买水果时,不同的水果就会有不同的标签,例如:甜的,酸的,贵的、便宜的等,这些就是水果的标签。在此次任务中,我们是为英雄贴上标签,因此要结合英雄的不同数据进行分析,最终得出应该贴何种标签。
在进行分析前,表中的部分列表应该先了解清楚它的意思
列表解释:Pick场数:被选择的场数;GPM:每分钟金币收入;XPM:每分钟经验收入;被Ban场数:被禁止场数
2.1选择要处理的列
首先我们先做出有关GPM与XPM的英雄标签,因为这个在王者荣耀中属于定位关系
因此我们需要提取出列:“英雄”,“GPM”,“XPM”
实现代码:
data_GX=data1[['英雄','GPM','XPM']]
data_GX
结果:
2.2数据可视化
提取出数据后,就要对数据进行可视化,观察其规律与关系
实现代码:
import matplotlib.pyplot as plt
import seaborn as sns
X=data_GX[['GPM','XPM']]#先得出GPM与XPM的数据,对该数据进行可视化
sns.lmplot(x='GPM',y='XPM',data=X,fit_reg=False,scatter_kws={
'alpha':0.8},legend_out=False)#制作散点图,观察其关系与规律
plt.show()
结果:
观察此图,我们很难发现出其规律所在,因此我们需要对数据进行聚类算法计算,在此我使用的是KMeans聚类算法,有兴趣的可以了解一下KMeans聚类算法。
2.3聚类算法
KMeans聚类算法是需要指定需要多少类,因此我们需要知道应该聚几类最为合适。
可使用KMeans中的拐点法与轮廓系数法算出应聚几类最为合适。
拐点法实现代码:
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn import preprocessing
import numpy as np
def k_SSE(X, clusters):
K = range(1,clusters