王者荣耀英雄分析之统计分析,聚类分析

王者荣耀英雄分析之统计分析,聚类分析

在了解了如何绘制饼图和雷达图之后,我们就可以正式的对王者荣耀数据进行分析了。
首先来看看这个数据集吧
包含的内容还是挺多的,有69个英雄,还有他们的一些属性。因为我不会玩王者荣耀,所以对这些信息也不是很了解,接下来有可能分析的不到位,还请大家多多包涵。
我还是选择的使用python来分析,因为简单嘛,然后平台的话还是选择aistudio真的很好用,强烈推荐,一些使用方法可以查看我之前写的博客。
链接:https://blog.csdn.net/weixin_46570668/article/details/115438389.
在这里插入图片描述

关联性分析

首先当然是关联性分析,先配置好字体,导入我们需要的包

import pandas as pd
import numpy as np
from matplotlib import pyplot
from matplotlib import font_manager
font = font_manager.FontProperties(fname='font/simhei.ttf')
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
# 用热力图呈现 features_mean 字段之间的相关性
corr = data[features].corr()
plt.figure(figsize=(14,14))
# annot=True 显示每个方格的数据
sns.heatmap(corr, annot=True)
plt.xticks(range(0, 18),fontproperties=font)
plt.yticks(range(0, 18),fontproperties=font)
plt.show()

在这里插入图片描述

统计分析

首先我们来统计一下主要定位

dd=data1[u'主要定位'].value_counts()
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
labels =list(dd.index)
sizes = list(dd)

explode = [0.05,0.05,0.05,0.05,0.05,0.05]
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=-45, textprops={'fontproperties':font})
plt.title("主要定位统计分析", fontproperties=font)
plt.legend(loc='right', bbox_to_anchor=[0.75, 0.4, 0.5, 0.5], prop=font)
plt.show()

在这里插入图片描述接着我们来统计一下攻击范围

dd=data1[u'攻击范围'].value_counts()
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
labels =list(dd.index)
sizes = list(dd)
explode = [0.05,0.05]
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=-45, textprops={'fontproperties':font})
plt.title("攻击范围统计分析", fontproperties=font)
plt.legend(loc='right', bbox_to_anchor=[0.75, 0.4, 0.5, 0.5], prop=font)
plt.show()

在这里插入图片描述以此类推,大家想统计什么只需要修改一下这句话的参数就可以了
dd=data1[u’攻击范围’].value_counts()

接下来我们查看一下前三的最大生命

ddg=data1[['英雄','最大生命','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝','最大攻速','主要定位']].sort_values(by='最大生命',ascending=False)
ddg[:3]

在这里插入图片描述

分别把他们画在雷达图上面

s=[2016,427,514,128,50]
x1 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '廉颇']
x2 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '白起']
x3 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '程咬金']
y1=x1.values.tolist()[0]
y2=x2.values.tolist()[0]
y3=x3.values.tolist()[0]
z1=y1[1:6]
z2=y2[1:6]
z3=y3[1:6]
for i in range(5):
    z1[i]=z1[i]/s[i]
for i in range(5):
    z2[i]=z2[i]/s[i]
for i in range(5):
    z3[i]=z3[i]/s[i]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
 
# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
 
# 构造数据
values = z1
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
 
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(values), endpoint=False)
 
# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
angles=np.concatenate((angles,[angles[0]]))
values_2=z2
values_2=np.concatenate([values_2,[values_2[0]]])
values_3 = z3
values_3=np.concatenate([values_3,[values_3[0]]])
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2,label='廉颇')
ax.plot(angles, values_2, 'o-', linewidth=2,label='白起')
ax.plot(angles, values_3, 'o-', linewidth=2,label='程咬金')
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('前三最大生命',fontproperties=font)
plt.legend(loc=(1,0.8), prop=font)
ax.grid(True)
plt.show()

在这里插入图片描述依次类推我们来看一下前三最大法力

ddg=data1[['英雄','最大生命','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝','最大攻速','主要定位']].sort_values(by='最大法力',ascending=False)
ddg[:3]

在这里插入图片描述

s=[2016,427,514,128,50]
x1 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '妲己']
x2 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '扁鹊']
x3 = data1[['英雄','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['英雄'] == '姜子牙']
y1=x1.values.tolist()[0]
y2=x2.values.tolist()[0]
y3=x3.values.tolist()[0]
z1=y1[1:6]
z2=y2[1:6]
z3=y3[1:6]
for i in range(5):
    z1[i]=z1[i]/s[i]
for i in range(5):
    z2[i]=z2[i]/s[i]
for i in range(5):
    z3[i]=z3[i]/s[i]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
 
# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
 
# 构造数据
values = z1
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
 
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(values), endpoint=False)
 
# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
angles=np.concatenate((angles,[angles[0]]))
values_2=z2
values_2=np.concatenate([values_2,[values_2[0]]])
values_3 = z3
values_3=np.concatenate([values_3,[values_3[0]]])
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2,label='妲己')
ax.plot(angles, values_2, 'o-', linewidth=2,label='扁鹊')
ax.plot(angles, values_3, 'o-', linewidth=2,label='姜子牙')
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('前三最大法力',fontproperties=font)
plt.legend(loc=(1,0.8), prop=font)
ax.grid(True)
plt.show()

在这里插入图片描述依次类推,大家可以查看任意属性的前三
接下来我们来看看法师都是什么样子的

s=[2016,427,514,128,50]
x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '法师']
y=x.values.tolist()
z=[[]]*len(y)
for i in range(len(y)):
    z[i]=y[i][2:7]
for i in range(len(y)):
    for j in range(5):
        z[i][j]=z[i][j]/s[j]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
angles=np.concatenate((angles,[angles[0]]))
for i in range(len(y)):
    values = z[i]
    values=np.concatenate((values,[values[0]]))
    ax.plot(angles, values, 'o-', linewidth=2,label=y[i][0])
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('法师',fontproperties=font)
plt.legend(loc=(1.5,0), prop=font)
ax.grid(True)
plt.show()

在这里插入图片描述想要查看那个定位的英雄只要修改一下参数即可,修改一下这句话中的‘主要定位’后面的参数

x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '法师']

那我们再来看一下战士

s=[2016,427,514,128,50]
x = data1[['英雄','主要定位','最大法力','最高物攻','最大物防','最大每5秒回血','最大每5秒回蓝']].loc[data1['主要定位'] == '战士']
y=x.values.tolist()
z=[[]]*len(y)
for i in range(len(y)):
    z[i]=y[i][2:7]
for i in range(len(y)):
    for j in range(5):
        z[i][j]=z[i][j]/s[j]
import numpy as np
import matplotlib.pyplot as plt
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')
feature = ['最大法力', '最高物攻', '最大物防', '最大每五秒回血', '最大每五秒回蓝']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
fig=plt.figure()
ax = fig.add_subplot(111, polar=True)
angles=np.concatenate((angles,[angles[0]]))
for i in range(len(y)):
    values = z[i]
    values=np.concatenate((values,[values[0]]))
    ax.plot(angles, values, 'o-', linewidth=2,label=y[i][0])
ax.set_thetagrids(angles * 180/np.pi, feature,fontproperties=font)
ax.set_ylim(0,1)
plt.title('战士',fontproperties=font)
plt.legend(loc=(1.5,0), prop=font)
ax.grid(True)
plt.show()

在这里插入图片描述基本上就是这样啦,大家相分析哪方面的内容都可以修改一下参数,如果大家有一些我没想到的分析内容,请一定要评论告诉我哦。
完整项目和运行结果已经上传资源:
https://download.csdn.net/download/weixin_46570668/16455298.

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值