金州勇士4年3冠的成功秘訣!Python數據可視化分析告訴你答案

2021-02-18 Python中文社區

xiaoyu,一個半路轉行的數據挖掘工程師

https://zhuanlan.zhihu.com/pypcfx


▍前言

2015年6月,記得那時候我正在忙著研究生畢業,也是在那個時候,NBA總決賽的開始了。當時,金州勇士隊作為一匹黑馬收到很多人看好,果然不負所望,勇士隊一路過關斬將一舉拿下了總冠軍。也是在那個時候,由於庫裡的出色表現,給大家留下了深刻的印象,成為勇士當家球員。

可以說,從那時起,勇士隊開始起飛了。2016年,3比4惜敗騎士,但隨後2017和2018年又相繼拿下了總冠軍,四年拿下三個總冠軍,這在NBA歷史上也是很少有的成績了。

我並不是勇士隊的球迷,但我卻想知道究竟是什麼原因讓它可以突然出現在人們眼前,並且可以不斷地創造輝煌。這背後肯定是有原因的,大家各有各的說法,但我覺得數據不會說謊,我想通過數據來分析勇士隊成功背後的原因。

▍數據源

對於數據源,我並沒有採用爬蟲去採集數據,因為我的重點是分析數據,因此選擇直接使用了現有數據源。

數據源來自Kaggle,提供了2012-2018年的所有球員的個人技術統計和球隊戰績,連結如下:

https://www.kaggle.com/pablote/nba-enhanced-stats

本篇採用2017-18年的統計數據對勇士隊進行分析。

▍技術指標排名

對所有球隊的技術指標進行場均值排名,包括均分,均助攻,均蓋帽,均二分球得分率,均三分球得分率,並只針對排名前五名進行可視化對比。

1. 場均得分排名

勇士隊場均得分113.46,排名第一


2. 場均排名

勇士隊場均助攻29.32,排名第一

3. 場均蓋帽排名


4. 場均二分球得分率排名

勇士隊場均二分球命中率0.56,排名第一


5. 場均三分球得分率排名

勇士隊場均三分球命中率0.39,排名第一

我們查看了五個主要技術指標,勇士隊均是排名第一,常規賽的數據要不要太完美,無論進攻還是防守數據都非常亮眼。

▍勇士隊勝負場中兩分與三分球得分情況

既然勇士隊得分均排名第一,那麼我們想要看一下在勇士隊勝場和負場中,兩分球和三分球的得分情況。下面通過可視化將勝負場和兩分與三分關係圖聯繫起來觀察。

左側圖為所有比賽中兩分球得分率與三分球得分率的散點關係圖。右側圖為所有比賽中隊伍總得分與對手總得分的關係圖(紅色為負場,綠色為勝場)。並且,左右這兩個圖的點是一一對應的。

通過左圖得到一些基本觀察:

從y軸三分得分率看:勇士隊的三分得分率基本在30%至50%之間浮動,其中40%至50%居多。

從x軸兩分得分率看:勇士隊的兩分得分率基本在40%至65%之間浮動,其中55%至65%居多。

二者關係:每場比賽的兩分球和三分球得分率還是比較均衡和穩定的,大部分在正常浮動範圍內,有極少數情況下的離散點(兩分球得分率少於45%,三分球少於30%的)。

通過上面二者關係分析,我們把兩分球得分率45%以上,且同時三分球得分率30%以上的比賽定義為正常發揮,而其它一個高一個低或者都低的離散點定義為失常發揮。

通過右圖得到一些基本觀察:

下面對圖形進行動態的交互式操作,將兩個圖聯繫起來進一步詳細分析。

勝場得分情況

勝場中對應的兩分和三分得分率還是很集中的,基本符合我們所說的正常發揮情況。

敗場得分情況

敗場中對應的兩分和三分得分率比較離散,有些正常發揮的情況下也輸了比賽,不過數量不多,應該是棋逢對手,遇到強隊了。

總體來說,勇士隊發揮比較穩定,且在正常發揮的情況下大多抓住了機會,拿下了比賽,獲得了常規賽季58勝24負的卓越戰績,排名第一是有道理的。

交互式可視化部分代碼如下:


from bokeh.plotting import figure, show
from bokeh.io import output_file
from bokeh.models import ColumnDataSource, CategoricalColorMapper, NumeralTickFormatter
from bokeh.layouts import gridplot


gm_stats_cds = ColumnDataSource(phi_gm_stats_2)


output_file('phi-gm-linked-selections.html',
            title='76ers Percentages vs. Win-Loss')


win_loss_mapper = CategoricalColorMapper(factors = ['W', 'L'], palette=['Green', 'Red'])


toolList = ['lasso_select', 'tap', 'reset', 'save']


pctFig = figure(title='2PT FG % vs 3PT FG %, 2017-18 Regular Season',
                plot_height=400, plot_width=400, tools=toolList,
                x_axis_label='2PT FG%', y_axis_label='3PT FG%')


pctFig.circle(x='team2P%', y='team3P%', source=gm_stats_cds, 
              size=12, color='black')


pctFig.xaxis[0].formatter = NumeralTickFormatter(format='00.0%')
pctFig.yaxis[0].formatter = NumeralTickFormatter(format='00.0%')


totFig = figure(title='Team Points vs Opponent Points, 2017-18 Regular Season',
                plot_height=400, plot_width=400, tools=toolList,
                x_axis_label='Team Points', y_axis_label='Opponent Points')


totFig.square(x='teamPTS', y='opptPTS', source=gm_stats_cds, size=10,
              color=dict(field='winLoss', transform=win_loss_mapper))


grid = gridplot([[pctFig, totFig]])


show(grid)

▍勇士隊三分球得分情況


看過NBA比賽的朋友都知道,勇士隊三分球特別牛逼,動不動就來一頓三分雨真是讓對手受不了。下面我們來看一下勇士隊球員三分球在NBA所有隊伍中是個什麼水平,什麼如此厲害。

由於一些位置(比如中鋒)幾乎沒有三分,因此我過濾掉了所有投射三分球次數低於100的球員。

下面是交互式操作展示了勇士隊的三分命中率情況。

圖中x軸為三分總投射次數,y軸為三分球命中的次數,樣本是投射三分球次數大於100的所有NBA球員。紅色為勇士隊隊員,藍色為其它非勇士隊隊員。

我們看到,在所篩選的球員中,勇士隊一共有7人。其中4人命中率在40%以上,分別是史蒂芬.庫裡克萊.湯普森凱文.杜蘭特奎因.庫克。尼克楊也是基本接近40%的。這麼人的高命中率真的很嚇人,雖在不同位置,卻都有著驚人的三分準確率,這確實讓勇士隊在三分球上佔據絕對的優勢了。

連續比賽的技術指標追蹤

下面我們繼續深度追蹤一下勇士隊連續比賽期間隨時間變化而有的一些技術影響。還是一樣,對於這種複雜的觀察,我們藉助交互式可視化來進行分析。

圖中4個圖是關聯的,分別記錄得分,助攻,籃板,失誤隨比賽連續進行二出現的情況。紅色為負場,綠色為勝場。

通過上面觀察,我們可以看到常規賽季在前階段很少出現失敗,大部分都是一直連勝的。而到最後階段,即66至75之間,出現了連續的失敗,次數偏多。很明顯地,這個時候的技術指標度不如前階段。前面一路高歌,最後階段輸球多的原因可能是戰術性的放水,或者是怕球員受傷,為最後季後賽以及總冠軍養精蓄銳。

可視化分析實現部分代碼如下:


from bokeh.plotting import figure, show
from bokeh.io import output_file
from bokeh.models import ColumnDataSource, CategoricalColorMapper, Div
from bokeh.layouts import gridplot, column


output_file('ps-gm-linked-stats.html',
                title='Golden State Game Log')


gm_stats_cds = ColumnDataSource(gs_gm_stats)


grid = gridplot([[stat_figs['Points'], stat_figs['Assists']], 
                [stat_figs['Rebounds'], stat_figs['Turnovers']]])


stat_figs['Points'].x_range = 
    stat_figs['Assists'].x_range = 
    stat_figs['Rebounds'].x_range = 
    stat_figs['Turnovers'].x_range


html = """<h3>Golden State Game Log</h3>
<b><i>2017-18 Regular Season</i>
<br>
</b><i>Wins in green, losses in red</i>
"""
sup_title = Div(text=html)


show(column(sup_title, grid))

▍勇士隊球員技術對比

我們通過可視化再看一下勇士隊裡所有隊員的平均得分,助攻,搶斷,籃板對比情況。下麵餅形圖展示了所有球員的個人技術指標。

從上面可視化分析觀察到:得分(PTS)來看,貢獻最大的前兩名是庫裡和杜蘭特,場均都約26.3分,第三名湯神略遜一籌場均約20分,第四是格林11分。助攻(AST)來看,格林排第一,場均7.2個助攻,庫裡第二,場均6助攻,然後是杜蘭特場均5.4助攻。

從上面可視化分析觀察到:搶斷(STL)來看,庫裡最多,場均1.56搶斷,第二是格林,場均1.36搶斷,第三是伊戈達拉。蓋帽(BLK)來看,杜蘭特排第一,場均1.75個封蓋,格林第二,場均1.3個封蓋,然後是維斯特場均1封蓋。

從這4個技術指標來看,庫裡杜蘭特無疑是球隊的核心了,得分並列第一,助攻前三,其次是湯神。但同時,還有另一個非常關鍵的人物,格林。如果仔細觀察,你會發現雖然格林除了在得分中排第四,其它每個指標中都是前三。不得不說,這位球員真的非常全面,防守助攻能力特別強,並且也有自己的得分手段。此外,伊戈達拉也同樣擁有著不錯的表現。基於這種實力的排位,這五位也是上賽季常規賽勇士隊的首發五虎陣容。

可視化部分代碼實現如下:

fig = {
  "data": [
    {
      "values": gs_players_pts['playPTS'],
      "labels": gs_players_pts.index,
      "domain": {"x": [0, .48]},
      "name": "PTS",

      "hole": .4,
      "type": "pie"
    },
    {
      "values": gs_players_pts['playAST'],
      "labels": gs_players_pts.index,
      "text":["AST"],
      "textposition":"inside",
      "domain": {"x": [.52, 1]},
      "name": "AST",

      "hole": .4,
      "type": "pie"
    }],
  "layout": {
        "title":"Golden State Players PTS vs AST",
        "annotations": [
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "PTS",
                "x": 0.20,
                "y": 0.5
            },
            {
                "font": {
                    "size": 20
                },
                "showarrow": False,
                "text": "AST",
                "x": 0.8,
                "y": 0.5
            }
        ]
    }
}
py.iplot(fig)

▍勇士隊核心球員技能指標


核心球員是整個球隊的關鍵,因此下面對勇士核心球員庫裡與詹姆斯進行一下簡單的對比,分別從總投籃命中率,兩分命中率,三分命中率,罰球命中率來對比一下。

庫裡 vs 詹姆斯

上面左右兩圖的比例不同,因此大小面積不能代表能力強。

可以發現詹皇在個人突破強吃得分上很佔優勢,兩分球命中率極高,而庫裡更擅長投籃的三分球得分。二人風格不同,但都具有超強的個人能力和領袖氣質,實力上是旗鼓相當的。

下面是杜蘭特與詹姆斯的籃板和得分情況對比。

參考:https://realpython.com/python-data-visualization-bokeh/

▍總結

本篇通過數據可視化分析了金州勇士隊的戰績和個人技術指標,以及在整個聯盟中的位置,並通過交互式可視化深度研究了勇士隊的分數,進球率對勝負的影響。數據告訴我們,勇士隊的實力目前在整個聯盟確實是數一數二的,並且擁有幾個超強的核心坐鎮,4年3奪冠也是實至名歸。

PS:筆者僅通過數據分析奪冠原因,不代表任何意見。

相關焦點

  • 重磅:包郵寄送《Python數據可視化之美》
    全書內容共有11章,其中,前3章是後面8章的基礎,第4~10章都是獨立章節,第11章是數據可視化繪圖綜合案例。讀者可以根據實際需求有選擇性地進行學習。第11章 介紹數據可視化的各種應用場景,包括商業圖表、學術圖表、HTML網頁動畫等的規範與製作。本書適用於想學習數據分析與可視化相關專業課程的高校學生,以及對數據分析與可視化感興趣的職場人士閱讀,尤其是python用戶。從軟體掌握程度而言,本書同樣適用於零基礎學習python的用戶。
  • 超硬核的 Python 數據可視化教程!
    matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。Seaborn是一個基於matplotlib的高級可視化效果庫,針對的點主要是數據挖掘和機器學習中的變量特徵選取,seaborn可以用短小的代碼去繪製描述更多維度數據的可視化效果圖其他庫還包括Bokeh(是一個用於做瀏覽器端交互可視化的庫,實現分析師與數據的交互);Mapbox(處理地理數據引擎更強的可視化工具庫)等等本篇文章主要使用
  • 用python和BI可視化分析,湖人贏在這點上
    python和BI可視化分析,湖人贏在這點上。在經歷了很多很多之後,湖人隊終於獲得了總冠軍,眾望所歸。如果科比還在的話,一定也很自豪吧,畢竟上一次奪冠還是10年前。口說無憑,我覺得只有數據能說明一切,為此,我特地爬取了NBA和湖人以及季後賽對手的相關數據,意在從數據的角度看看球員的表現。註:數據來源準確,所使用的爬蟲工具為Python,分析工具為國產數據分析工具FineBI。大家都應該知道python是幹什麼的吧,那這裡就不再重複了,從獲取數據的角度上來看,python確實是一個很不錯的工具。
  • 數據分析:R與Python怎麼選?
    「你女朋友和你媽同時掉水裡了,先救誰?」    面對這樣的靈魂拷問,你能回答上幾個呢?同樣,如果你是數據分析的新手,或者正面臨工作中項目分析工具的選型,那你可能正面臨這樣的問題:「選R,還是選Python?」,如果是這樣,希望這篇文章能幫助到你。
  • 金州勇士與兩大體育科技公司共商籃球數據分析的未來
    金州勇士作為NBA中使用數據分析獲得成功的典範,已經和Sportradar和ShotTracker兩大全球領先的體育分析與運動追蹤公司構建了多年且深入的合作關係
  • 想用Python做數據可視化?先邁過這個「坎」
    用過python的人都會面臨一個問題,尤其是初學者:我應該選哪個來實現數據可視化? 以下就是將要用來創建繪製數據的示例: ·Pandas ·Seaborn ·Ggplot 在示例中,我將使用pandas進行數據處理並使用它來完成可視化的效果。
  • 代碼詳解:用Python清理、分析和可視化調查數據
    全文共3672字,預計學習時長30分鐘或更長如何利用panda、matplotlib和seaborn來分析髒數據,並且從中有所領悟呢?通過本文,你一定會有所了解。調查猴子(SurveyMonkey)是最受歡迎的數據調查平臺之一。它導出數據的方式並不完善,不一定支持數據導出後即刻進入分析,但這兩個環節的間隔時間已經非常短了。
  • 金州勇士:異軍突起,從五年三冠到王朝隕落
    下面我們一起來分析一下本賽季勇士的現狀及前景。12-13賽季的金州勇士,取得47勝35負的戰績,排名西部第六,成功打入季後賽,這是克萊·湯普森的第二個賽季,勇士首輪幹掉常規賽57勝25負的掘金,與馬刺會師西部半決賽,苦戰6場,勇士最終以4:2敗下陣來,賽後克萊和庫裡都心情沉重,庫裡甚至一度落下了眼淚,但甲骨文球館響徹warriors,球迷們很感謝他們所做的一切。
  • 手把手帶你可視化分析 NBA 季後賽
    作者 | 石曉文來源 | 小小挖掘機NBA激戰正酣,首輪除掘金和馬刺的較量還沒有結束外,其餘對決都已經結束,本文將手把手帶你可視化分析下各球隊的首輪表現,同時將對次輪最受矚目的火勇大戰進行一個簡單的前瞻分析!通過本文,你將學會python中使用matplotlib庫繪製柱狀圖、散點圖、雷達圖的相關知識!咱們開始吧!
  • Python爬30W數據後,我有了答案
    小編一直也比較喜歡打籃球,雖然變成程序猿之後不怎麼打了,平常沒事也喜歡看看新聞,慢慢的就找到了虎撲,這樣一個「體育「論壇,了解了很多有意思的事情,所以趁有時間,利用python爬蟲,然後利用pands做可視化處理,來好好了解下虎撲。
  • 體育數據可視化,通通告訴你方法
    上回我們說到,體育數據可分為一維體育屬性統計數據,體育屬性和時空屬性結合的多維數據等。已有的工作主要有體育數據新聞、體育數據分析、可視分析系統。 在今天的推送中,鏑次元將帶你了解體育數據可視化工作中採用的基本方法還有體育數據可視分析的基本思路。
  • 專注服務客戶二十年!教你用Pandas和Plotly進行數據可視化
    換位思考,如果你是客戶的話會有什麼反應?數據太多難道不會讓人感到不知所措嗎?講真的,數據可視化了解一下。數據可視化是將原始數據轉換成可視化的圖形和圖表,從而更易於理解,它的主要目的是更快地進行研究和數據分析,並有效傳達趨勢和模式。相較於冗長的純文本,人腦能夠更好地理解具有視覺吸引力的數據。
  • 分享:關於NBA數據分析可視化(Python)
    這兩周上課剛給同學們嘰嘰歪歪聊完如何基於半結構化數據實現NBA的各種數據可視化,如圖然而,就在今天,發現了如此神器!!!我們就拿2019-2020賽季數據來試試這個神器吧!2020.01.01-2020.01.11投籃情況2019.10.24 與密爾沃基雄鹿隊對戰情況分析
  • kaggle:NBA球員投籃數據分析與可視化
    鑑於目前小編的水平,不敢貿然去參賽,生怕做出來的結果排名墊底,於是盤算著先拿幾個kaggle題的數據集來練手,一方面鍛鍊自己的數據思維和分析能力,另一方面則是提升R或者Python的coding能力。小編這次拿來練手的數據集叫做 NBA shot log.csv(公眾號後臺回復「NBA」下載數據),該數據集包括了2014-15賽季NBA30支球隊904場常規賽281名球員將近13萬的投籃數據,數據包括比賽雙方、主客場、勝負情況、投籃球員、防守球員、投籃距離、命中次數等21個變量,可自由根據分析目的來進行數據挖掘建模。
  • Python腳本示例:從log中讀取數據,進行分析和可視化
    Python腳本示例:從log中讀取數據,進行分析和可視化 Python是數據處理常用工具,具有較好的通用性和跨平臺性,使用起來也非常簡單。
  • 金州勇士隊4年3冠,連續五年總決賽是實力還是運氣?
    那我們來看看15年勇士季後賽之旅,第一輪虐菜不談,第二輪灰熊康利首戰缺席,勇士先下一城;2、3場灰熊全員出戰,連扳兩局,轉折點在灰熊外線大閘託尼阿倫因傷缺陣,勇士水花兄弟一波帶走了灰熊。西決能限制水花發揮的關鍵大將,貝弗利賽季報銷,沒了黑貝火箭便贏不了勇士。到了總決賽,詹姆斯兩眼望去,歐文、樂福兩位兄弟西裝筆挺坐在替補席,帥是真帥啊,可帥有啥用?
  • 擁有「數據分析」+「數據可視化」能力,更能受到社會偏愛?
    首先根據各大招聘網站整理出數據分析崗位大致有幾下需求:1、數據的收集、匯總、更新;2、能獨立對業務數據進行處理和分析,利用數據發現問題,並能落地可優化方案,為管理層決策做支撐,或為產品、運營等部門做數據嚮導支撐;3、數據體系和數據報表的維護和搭建
  • NBA:金州勇士 VS 印第安納步行者 波波競猜分析
    11:30金州勇士勇士儘管開局遭遇兩連敗,賽季開始時表現有些掙扎,但隨著球隊內部逐漸穩定,奧比利也開始適應球隊,以及史提芬居裡的曝發,勇士的表現有了明顯的好轉。最近兩場比賽,勇士連斬快艇和速龍,球隊戰績來到6勝4負,目前暫列西岸第六的位置,即使基利湯遜不在陣中,勇士還是具備一定的競爭實力。
  • 這10 個 Python 可視化工具,你都用過?
    兩個直方圖 matplotlib 是Python可視化程序庫的泰鬥。經過十幾年它任然是Python使用者最常用的畫圖庫。 ggplot跟pandas的整合度非常高,所以當你使用它的時候,最好將你的數據讀成 DataFrame。 開發者: hat 更多資料: 4、Bokeh
  • 學習數據分析,這個數據分析神器你得知道!
    Power View(數據交互展示)Power BI vs 其他同類產品:1. Power BI VS Excel都是微軟自家產品,但Excel更全面且更專注於數據分析,而Power BI則比較精簡且更更專注於報表可視化。另外這兩個產品也是相互打通的,據說最新版本的Excel集成了Power BI插件,而Power BI裡的數據分析功能也和Excel相似。