1. 程式人生 > >探索大神科比,30000多次投籃資料,有好玩的發現

探索大神科比,30000多次投籃資料,有好玩的發現

粉絲獨白

籃球巨星科比,是NBA歷史上最佳得分手之一,以前寫了一篇關於科比的得分資料分析。這一次,讓我們聚焦於進攻方式,用資料來探索科比職業生涯的打球方式,看看如何防守才能最大化阻礙科比的進攻!

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

要點:

  • 資料獲取
  • 資料的清洗
  • 資料的多維度視覺化

01:資料來源

玩資料分析的同學一定都知道kaggle,裡面有大量好玩的資料集,這次我們下載了科比近20年職業生涯中所嘗試的每個投籃命中的位置和情況,由於是籃球領域的資料,可能有一些小夥伴看不懂,不過沒關係,後面我都會進行簡短的說明的。

連結:https://www.kaggle.com/c/kobe-bryant-shot-selection/data

The field names are self explanatory and contain the following attributes:

  • action_type 進攻方式(更具體)
  • combined_shot_type 進攻方式
  • game_event_id 這個不清楚
  • game_id 比賽ID
  • lat 投籃點
  • loc_x 投籃點
  • loc_y 投籃點
  • lon 投籃點
  • minutes_remaining 單節剩餘時間(分鐘)
  • period 表示第幾節
  • playoffs 是否是季後賽
  • season 賽季
  • seconds_remaining 剩餘時間(秒)
  • shot_distance 投籃距離
  • shot_made_flag 是否進球
  • shot_type 兩分球或三分球
  • shot_zone_area 投籃區域
  • shot_zone_basic 投籃區域(更具體)
  • shot_zone_range 投籃範圍
  • team_id 球隊ID
  • team_name 球隊名稱
  • game_date 比賽日期
  • matchup 比賽雙方
  • opponent 對手
  • shot_id 投籃ID

02:資料的讀取和檢視

1).讀入資料集:

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

2).看一下資料集基本情況:一共有25個維度

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

3).看一下資料集的大小:一共投了30697次

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

可以看到,科比職業生涯出手投籃了三萬多次,確實是厲害!大致先了解一下這份資料,主要是收集了科比每一次進攻的位置,投籃方式和得分,這三個維度也是我們重點關注的,其他的其實影響不是太大。

03:資料清洗和探索

1).資料的清洗

因為這是kaggle上的一個比賽資料,會用於預測,所以在“shot_made_flag”這一列上會有空值(即預測科比這一次投籃是否能投進

),後面的部分分析會先剔除掉這些空值的資料,所以科密們,如果見到後面一些分析不太合理的話,要考慮到這一點哦!

#剔除未知命中結果的資料

known_data = data[data['shot_made_flag'].notnull()]

known_data.sample(3)

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

2).資料的思考

那接下來就慢慢來分析科比的投籃吧。站在一個球迷的位置,我會先關注的是科比的投籃點,有哪一些進攻的方式,哪一種又是偏多呢?

在資料分析前,我先來猜測下,按照我的球迷經驗,科比常用的應該是跳投多一些,畢竟江湖上有一句話說,“我科後仰美如畫”。科比的投籃姿勢也是教科書版的存在,所以會有很多人去模仿他的動作。

3).畫出科比的投籃圖

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!
  • 預設的plt畫圖太醜,我用sns來設定畫圖的顏色
  • plt來設定中文字型,設定座標系顯示負數
  • 用scatter來畫散點圖
  • 設定X,Y軸和Title

視覺化看一下:

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

4).常用的進攻方式

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!
  • 取資料集中的'combined_shot_type'統計科比投籃的方式
  • 用直方圖來顯示,構造x和y的引數.(x為1到6的序列,y為每一種投籃方式的統計數)
  • 設定座標標籤和刻度範圍
NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

果然,跳投是最多的,最少的是擦板(嗯,這個讓我想起了另外一位巨星——鄧肯,他的擦板肯定不少!)這裡用到的是“combined_shot_type”這一列,然後我把結果轉為中文了,看起來順眼一點。

4).計算命中率

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!
  • 過濾資料集,獲得投籃命中的次數hits_df
  • 計算投籃命中率
  • 設定座標引數和lable
NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

可以看到,扣籃的命中率最高,然後是擦板,帶球上籃,勾手,跳投,最後居然是補籃命中率最低(有點難以置信,有可能是資料的缺失的原因,我其實更偏向跳投才是最低的).

5).看看不同區域的出手情況

分析完科比的進攻方式,再來看看他喜歡在哪些地方投籃,終結的效果又是如何。同樣,資料集裡面對投籃區域的描述也有兩列,這裡我選取描述更具體的“shot_zone_basic”一列來分析。

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

因為y軸的標籤名稱太長,所以我們把畫布右移0.18

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

可以看到,科比更多的進攻範圍是在中距離,中投多一點。

6).最後一分鐘的資料

#選取最後一分鐘的資料

last_min_df = known_data[known_data['minutes_remaining']==0]

#平均進攻距離

avg_dis = last_min_df['shot_distance'].mean()

#進攻方式繪製

NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!NBA巨星科比30000多次投籃資料分析,竟然有這樣有趣的發現!

可以看到,還是中距離的跳投居多,還有一些距離看起來很遠的,一般都是時間快到點了,然後亂扔出去的,最為球隊領袖,還是有很多出手權的。

限於篇幅,我對某些資料探索原文有一些刪減,其實這是一份很好可以用來練習的資料集,你可以用來練習pandas資料分析,matplotlib視覺化,sklearn資料探勘,希望大家可以學習和挖掘更多資訊。

663033228 這是我的Python學習交流群,我在這裡每天下午和晚上都有分享Python的直播學習和一些心得分享,在學習Python的小夥伴也可以加入。