python 热度图_python可视化(七)绘制詹姆斯、杜兰特、伦纳德生涯数据热度图...

由于系统编辑器限制,所有加粗的无序列表表示代码行!

在上篇文章python数据可视化(六)seaborn绘制盒图、小提琴图我们绘制了漂亮的盒图和小提琴图,学会了seaborn.boxplot()和seaborn.violinplot()函数的用法。而本篇文章我们做一件比较有趣的事情,那就是用热度图绘制NBA联盟中詹姆斯、杜兰特和伦纳德的职业生涯数据,从各个数据指标看看他们的成长。

老詹赛季数据

在绘制之前,我们先来学习下热度图函数heatmap()的用法及热度图表示的含义。

seaborn.heatmap()

首先,函数heatmap()是用颜色来表现矩阵数据各元素的大小,热度图横轴上的数据对应矩阵列索引,热度图纵轴上的数据对应矩阵行号(行索引),其中的色块就是矩阵中的元素值,这样讲可能显得有点抽象,所以我们先造一个简单的矩阵,然后绘制出热度图,从图上给大家解释,如下:

#导入依赖包%matplotlib inlineimport matplotlib.pyplot as pltimport numpy as np;import pandas as pdimport seaborn as sns;sns.set()#构造一个3行3列的矩阵:np.random.seed(0)test_data=np.random.rand(3, 3)*10

矩阵数据预览

可以看到这是个3行3列的数据,矩阵中共有9个元素,现在将这些数据传给热度图函数,看看在图上是如何表现的,如下:

sns.heatmap(test_data)

矩阵数据热度图

如上图,这个热度图一共有9个色块,这9个色块就是9个数据,色块的颜色代表对应数值,颜色的深浅和数据大小关系在热度图右侧用数值柱图来表示,从图上我们看到上半部分红色较多,表示矩阵第一行的数据比较大,其中矩阵第3行第2列数据为0.2是所有元素中最小的数据,表现到热度图上就是颜色最黑的那一个色块,这就是热度图要表现的内容。对于热度图函数的用法,我们在下面绘制图形的过程中一起学习。

詹姆斯生涯数据绘制

上面我们已经讲了热度图所表现的含义,下面我们就将詹姆斯的生涯数据进行清洗并传给热度图函数,看看詹姆斯是如何成为“皇帝的”。首先,我们用pandas读取出詹姆斯生涯数据,如下:

LeBron_James=pd.read_excel(r"C:Userspython_wanba_player_data.xlsx",header=0,sheet_name="LeBron-James")

詹姆斯生涯数据

可以看到,上面的数据是个标准的矩阵格式,行数据表示赛季,行对应的每个列是赛季具体指标数据,根据上面热图度的要求,显然球队这一列是没办法用数据展示的,所以我们进行一个行转列的操作。

如下:

LeBron_James = LeBron_James.pivot("球队", "年度", "命中率")LeBron_James.head()

按球队进行转换后的数据

pandas.DataFrame.pivot(ndex=None, columns=None, values=None)这个方法实现的就是将数据进行按指定的列进行转换的功能,上面我们以年度作为列,球队作为索引,命中率作为值进行一个转换,可以看到由于詹姆斯今年刚加入湖人队,所以湖人队对应的空数据最多。

下面我们就将命中率数据传入到热度图中,看看詹姆斯哪个赛季命中率最高。

#解决中文不法显示的问题plt.rcParams['font.sans-serif'] = ['SimHei']#传入数据sns.heatmap(LeBron_James,linewidths=.3)

詹姆斯命中率数据热度图

从上面的热度图中我们可以看到,詹姆斯的命中率是越来越高,且在2013-2014这个赛季达到最高,这个超过55%的命中率,让我们想到了詹韦连线,那是一个劲爆。下面我们分别他生涯中得分、篮板和助攻数热度图。

如下:

LeBron_James_score = LeBron_James.pivot("球队", "年度", "得分")sns.heatmap(LeBron_James_score,linewidths=.3,annot=True)

詹姆斯生涯场均得分热度图

LeBron_James_rebounds = LeBron_James.pivot("球队", "年度", "篮板")sns.heatmap(LeBron_James_score,linewidths=.3,annot=True)

詹姆斯生涯场均篮板数

LeBron_James_assists = LeBron_James.pivot("球队", "年度", "助攻")sns.heatmap(LeBron_James_assists,linewidths=.3,annot=True)

詹姆斯生涯场均助攻数

上面我们对詹姆斯生涯数据的主要指标进行了热度图绘制,可以从色块上可以看出,詹姆斯在不断成长。

杜兰特生涯数据绘制

由于上面已经详细讲解了热图度函数的用法,这里不在详细讲解,直接将杜兰特生涯数据传给函数,下面我们依次演示杜兰特职业数据的命中率、场均得分、场均篮板数和场均助攻的热度图,如下:

#绘图数据转换Kevin_Durant_shotting=Kevin_Durant.pivot("球队", "年度", "命中率")Kevin_Durant_score=Kevin_Durant.pivot("球队", "年度", "得分")Kevin_Durant_rebounds=Kevin_Durant.pivot("球队", "年度", "篮板")Kevin_Durant_assists=Kevin_Durant.pivot("球队", "年度", "助攻")#分别绘制各指标热力图sns.heatmap(Kevin_Durant_shotting,linewidths=.3,annot=True)sns.heatmap(Kevin_Durant_score,linewidths=.3,annot=True)sns.heatmap(Kevin_Durant_rebounds,linewidths=.3,annot=True)sns.heatmap(Kevin_Durant_assists,linewidths=.3,annot=True)

杜兰特生涯命中率热度图

杜兰特生涯场均得分热度图

杜兰特生涯场均篮板热度图

杜兰特生涯场均助攻热度图

伦纳德生涯数据绘制

同上,我们还是直接作图,如下:

#读取excel文件Kawhi_Leonard=pd.read_excel(r"C:Userspython_wan\nba_player_data.xlsx",header=0,sheet_name="Kawhi-Leonard")#绘图数据转换Kawhi_Leonard_shotting=Kawhi_Leonard.pivot("球队", "年度", "命中率")Kawhi_Leonard_score=Kawhi_Leonard.pivot("球队", "年度", "得分")Kawhi_Leonard_rebounds=Kawhi_Leonard.pivot("球队", "年度", "篮板")Kawhi_Leonard_assists=Kawhi_Leonard.pivot("球队", "年度", "助攻")#分别绘制各指标热力图plt.rcParams['font.sans-serif'] = ['SimHei']sns.heatmap(Kawhi_Leonard_shotting,linewidths=.2,annot=True,cmap="YlGnBu")sns.heatmap(Kawhi_Leonard_score,linewidths=.2,annot=True,cmap="YlGnBu")sns.heatmap(Kawhi_Leonard_rebounds,linewidths=.2,annot=True,cmap="YlGnBu")sns.heatmap(Kawhi_Leonard_assists,linewidths=.2,annot=True,cmap="YlGnBu")

伦纳德赛季命中率热度图

伦纳德赛季场均得分热度图

伦纳德赛季场均篮板热度图

伦纳德赛季场均助攻热度图

三人对比绘制

上面我们从所在球队的维度分别绘制了赛季命中率、得分、篮板和助攻热度图,下面我们从球员维度,分别对比绘制出三位球星在每个赛季的命中率、得分、篮板、助攻热度图。如下:

#读取数据career_data=pd.read_excel(r"C:Userspython_wanba_player_data.xlsx",header=0,sheet_name="all_stars")#数据转换,行转列career_data_shotting=career_data.pivot("姓名", "年度", "命中率")career_data_score=career_data.pivot("姓名", "年度", "得分")career_data_rebounds=career_data.pivot("姓名", "年度", "篮板")career_data_assists=career_data.pivot("姓名", "年度", "助攻")#分别绘制各指标热力图sns.heatmap(career_data_shotting,annot=True,cmap="hot")sns.heatmap(career_data_score,annot=True,cmap="nipy_spectral")sns.heatmap(career_data_rebounds,annot=True,cmap="tab10")sns.heatmap(career_data_assists,annot=True,cmap="jet")

三人赛季命中率热度图

三人赛季场均得分热度图

三人赛季场均篮板热度图

三人赛季场均助攻热度图

好了,以上就是詹姆斯、杜兰特、伦纳德赛季数据热度图,下篇文章我将讲解seaborn多图绘制,喜欢的请点击关注吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值