当前位置:首页  >  数据可视化专题  > 

可视化实战!Python+BI,手把手教你做炫酷的NBA可视化分析

作者:Jenny.Zhang

发布时间:2022.11.17

浏览次数:3,646 次浏览

之前手痒做了一次NBA可视化分析,发个微头条,好多人追着我问教程,这两天终于闲下来了,花时间整理这篇NBA可视化分析教程,手把手教大家做一次炫酷的数据可视化分析!

先部分展示本次教程的作品:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

数据获取

本次可视化分析的数据来自于网络,有一部分是从外网下载的,还有一部分是python从NBA官网爬取的,数据集包含从上世纪90年代开始到16-17赛季,包括NBA所有球员、球队的常规赛,季后赛数据,球员各赛季的薪金等数据。

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

因为涉及的数据比较多,爬取过程比较繁杂,我就不在文中多说了,直接把数据集给大家整理好,获取方式见文末。

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

确定分析思路

因为本人不是非常专业的NBA球迷,所以再在拿到数据之后,我去科普了一下NBA比赛需要哪些数据,通过对应网站的浏览和查看,了解到数据主要分为三类,一类是比赛数据,以字段,胜场,得分,主客场胜负,胜率,净胜场,最近10场胜负为主。一类是球员数据,以命中率,PER,WS,得分为主。最后一类薪资数据,以球员薪资,占比,球队薪资,占比为主。

了解了关注点后,我查看了手上有的数据,并把其划分为4块。列出四个主题,球队分析,球员分析,薪资分析,季后赛分析。主题相应分析模块如下所示:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

根据分析模块,选择合适的可视化图表

按照上面的思路,我们可以根据分析模块提前确定好可视化图表,后面就可以按部就班制作可视化分析图表,提高效率。至于图表的选择,这块之前我在很多文章都讲过,参照下面这张图就可以了:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

除了可视化图表之外,要想让你的可视化作品更加贴合主题,还可利用一些可视化元素,比如NBA相关的图片或者图标等等,这些元素往往能够起到画龙点睛的效果。

给大家推荐几个常用的网址:

分析图片网址链接:https://unsplash.com/s/photos/

分析元素网址链接:https://www.iconfont.cn

网址配色网址链接: https://coolors.co/

基础数据整理,数据加工

上面的准备工作完成之后,接下来就是使用工具进行分析了。涉及到数据表比较多,而且需要进行的数据加工也比较繁杂,用Excel显然不是一个快捷的办法,我选择了用BI工具FineBI进行可视化分析操作。

打开FineBI,点击添加数据表,把本次分析所用到的数据表导入

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

然后利用FineBI的自助数据集功能进行数据处理,按照我们上面的数据分析思路,我利用鱼骨图梳理的四个分析主题需要用到数据表,然后分别创建自助数据集进行加工

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

利用FineBI的自助数据集加工数据的过程比Excel方便的多,它自带数据处理的工程,可以对数据进行分组求和、求平均、过滤等一系列的操作,而且每一步操作在左边的面板都会有记录,方便后续检查

点击创建自助数据集,制作球员数据宽表。

第一步,新增比赛失分列,用函数从比分列中获取比赛失分,具体的函数使用方法,系统理由非常详细的讲解,我就不多说了

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

然后再新增列,分别统计出主客场胜、负场数

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

然后按照球员和时间分组汇总,并计算出每个球员的胜率(胜率=胜场/(胜场+负场))和场均得分(场均得分=得分/场次)、场均失分(场均失分=比赛失分/场次)

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

这样一张球员数据宽表就基本完成了,整个数据加工的过程步骤比较多,但是操作上比较简便,步骤式的记录也不容易出错。用同样的方法我们再制作出上面鱼骨图中的其他数据表,最近10场比赛的数据、球队数据宽表等等,和上面的操作类似,篇幅原因我就不展示了

可视化图表制作

最复杂的数据加工环节完成之后,下一步就是进行可视化图表制作。这个过程用BI工具制作非常简单,速度比Excel快N倍,把数据指标和维度拖拽到坐标轴上,图表就自动生成了,系统还会根据你选择的指标和维度的数量,智能推荐合适的可视化图表

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

然后根据个人喜好,调整图表配色及细节

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

最后各主题分析模块的可视化图表如下:

球队分析:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

从历史数据看,SAS圣安东尼奥马刺队表现最好,以49.69胜场,63.9%的胜率居球队第一名。而近两年胜场最高的球队是GSW金州勇士队获得了115场胜场,也荣获了单年最高的72胜场,而SAS圣安东尼奥马刺队则是以102胜场保持第二名。

14年前,SAS胜场超过GSW,但近两年发挥低于GSW,再来看球队16赛季因素排名表,GSW16年夺冠,是由于其综合实力。得分、助攻、三分、篮板、盖帽等均处于领先水平,而SAS队的特点则是,稳扎稳打,犯规较多,失误较少。

球员分析:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

根据16-17赛季个人平均PER,平均得分,平均篮板,平均三分,平均助攻,得出16赛季MVP为Jarnell Stokes,得分王为Russell Westbrook ,篮板王为Hassan whitesid,三分王为Stephen Curry,助攻王为James Harden。

个人喜欢火箭就拿James Harden做了下分析,从命中热力图可知,他的得分区域主要是篮下投篮及罚球区投篮。根据八维雷达图,哈登的长处在于得分,助攻和篮板,得分远超16赛季平均水平,除了中,远距离命中率,哈登其他位置的命中率也随着时间逐步上升。PER值也是逐年上升,正值黄金时期。

薪资分析:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

平均薪资前十的球队为布鲁克林篮网,纽约尼克斯,迈阿密热火,俄克拉荷马雷霆等,进一步分析得知布鲁克林篮网因为是新球队,所以平均薪水高,整体球队薪资呈上升趋势。

个人薪资情况的话,John Wall薪资最高,且个人平均薪资在2015赛季后显著上升,单看GSW队,队内成员薪资差距大,Keven,klay,Stephen,andrew占了薪资的80%,个人薪水和赛季个人得分呈正相关,也和个人PER呈正相关

生成仪表板

最后调整仪表板上的图表布局,突出重点数据,优化图表及配色,加入准备好的NBA可视化元素,把我们分析的结论也可以添加在仪表板中,一张完整的NBA可视化分析报告就完成了:

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

但这一切都要基于一个好用的数据可视化平台。现在市面上流行的有FineBI、Power BI、DataV、鼎数,但权威机构IDC指出市场占有率第1的还是FineBI,这些都可以做数据分析

NBA数据分析,python数据爬取,可视化图形,python数据可视化案例

商业智能BI产品更多介绍:www.finebi.com


   

商务咨询

在线咨询
专业顾问帮您解答问题

电话咨询

技术问题

投诉入口

微信咨询