熱線電話:13121318867

登錄
首頁精彩閱讀數據告訴你:遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?
數據告訴你:遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?
2020-07-07
收藏

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

CDA數據分析師 出品

作者:澤龍、Mika

數據:真達

后期:澤龍

【導讀】

CBA重啟開賽,遼寧為什么從冠軍隊變成魚腩隊?是侄子坑叔,還是亞洲第一控衛變身綜藝咖,本期我們用全面的數據證明到底誰害了遼寧隊!

Python技術分析請看第六部分。

Show me data,用數據說話

今天我們聊一聊 遼寧隊

CBA做為中國職業體育最先重啟的聯賽,真的是萬眾矚目,在第一階段最后一場比賽廣東對江蘇的比賽中,鐘南山鐘老親臨現場,做為中國籃球界的女婿,鐘老真的為CBA重啟操碎了心。CBA這次復賽重啟結果也很不錯,堪稱模范。

而本期我們要聊的是遼寧隊,用數據解讀一支爭冠隊如何變成了魚腩隊?

文章要點:

遼寧隊勝負場得分和命中率

不同球員的平均出場時間

遼寧隊勝負場失誤情況

外援與國內球員平均得分對比

用Python分析遼寧隊比賽數據

01志在衛冕的遼寧隊

從爭冠隊到魚腩隊

遼寧隊在賽季剛開始還算順風順水,但是復賽重啟后,遼寧隊戰績可謂是糟糕透頂,連敗北京、廣州、浙江后,郭士強成為背鍋的那個人,黯然下課。真是大侄子坑老叔,一個愿打一個愿挨。

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

之后,遼寧虐兩個不強的隊后,遇到強隊又比賽落敗,真的很難聯想到這是一支爭冠的球隊,這次我們結合數據,聊一聊遼寧變成這樣到底誰應該背鍋?

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

賽季剛開始的遼寧隊算是頂級強隊,我們來看下當初那只遼寧隊,先看到分情況:

全部比賽-勝場得分曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

全部比賽-負場得分曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

折線圖來看,遼寧勝場得分都是100分以上,負場也幾乎過100了,證明遼寧隊進攻完全沒有問題,當時還有師弟這樣的CBA詹姆斯, 一個人可以解決很多問題,當時的遼寧真的強。

復賽后的遼寧隊的得分下降到什么程度?焦灼的比賽得分剛到100.被虐得體無完膚的比賽得分都是在垃圾時間刷分,整體效率下降太多。

02命中率不穩定

郭士強為此下課

再看到整體命中率,我們分別統計了勝負場次,拉了折線圖出來:

全部比賽-勝場命中率曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

全部比賽-負場命中率曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

罰球數據方面,復賽后所有球隊都有下滑,這個可以理解,畢竟很久沒有打比賽了。

三分球遼寧隊數據真的慘不忍睹,尤其是復賽后的輸球的幾場,命中率只有30%多,這和廣東新疆等目標球隊差距太大了。復賽后和浙江的比賽二分命中率跌破50%,在以前根本不敢相信,這也是郭士強下課的主要原因。二分命中率低只能說明訓練不到位,要不就是場上球員太累了。

大家一直在詬病遼寧隊的輪換,所以我們也分析了球員出場時間,制作了餅圖。

03奇葩的4+2輪換

只要主力不累死就不能下

這是本賽季所有比賽的球員出場時間圖:

不同球員的平均出場時間

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

把外援去除,郭艾倫、趙繼偉、韓德君、李曉旭、劉志軒、賀天舉構成了主要輪換,看這還算符合CBA球隊常規輪換人次。

復賽后,李曉旭受傷,劉志軒精神游離,賀天舉有復蘇的跡象,但是遠遠達不到為球隊分憂的狀態,因為防守實在太差了。所以只剩下郭艾倫、韓德君、趙繼偉了,再加上1個外援,組成了奇葩的4人主力+2人輪換陣容。

然后就有了孫銘徽完爆亞洲第一后衛,那場比賽孫銘徽出場40.3分鐘,郭艾倫出場46.8分鐘,真是只要不累死就要上。

通過上面的數據來看,輪換是遼寧隊復賽后最大的問題,郭士強為此下課也合情合理。但是外教用人比郭士強還狠我們就看不明白了,遼寧隊是真的破罐子破摔了么?郭艾倫場均打滿全場是什么操作?就算是郭艾倫的球隊也不能場場打滿吧。

04沒有超強得分能力的保證

失誤多不可能贏球

在分析遼寧蛻變的同時,也發現了一些之前球隊的隱患,分享給諸位。

這是遼寧隊勝負場次分別的失誤次數:

全部比賽-勝場失誤曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

全部比賽-負場失誤曲線圖

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

看看這個曲線,要是換我們的杜鋒杜指導帶隊,估計每場都能出好多小視頻,瘋狂輸出,打不了幾場全隊就剩不下什么人了。在沒看到數據之前,覺得見誰削誰的遼寧隊場均失誤應該會很少,這張圖顛覆了我的認知,假如不看隊名,我以為是福建這種只進攻不防守的球隊應該有的數據表現。

05少了一個外援

誰來分擔得分壓力?

再看到外援和國內球員的平均得分:

外援-國內球員平均得分對比

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?

這個比例在CBA倒是很常見,外援占有球隊的一半出手權,剩下一半才是國內球員的,也證明了師弟在遼寧隊真的很重要。郭艾倫單核帶隊真的很難,這倒不是說韓德君不是核心,在CBA的FIBA規則下,內線帶隊真的太過艱難了。

這也側面就說明了復賽之后遼寧體現的問題,失去了2名外援,就算新外援梅奧和師弟表現的平起平坐,但是國內球員的得分并沒有增加,以前得分的還是得分,以前不出場的還是不出場。這算下來就少了將近20分,和CBA復賽后國內球員積極的表現形成了鮮明的對比。


06用Python帶你分析

遼寧隊比賽數據


我們使用Python獲取并分析了搜狐體育CBA數據中心遼寧隊的比賽和技術統計數據,以下為關鍵部分代碼:

1. 數據讀入

首先導入分析所需包,并讀入數據集。

# 導入包
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import re 

from pyecharts.charts import Bar, Line, Pie, Page
from pyecharts import options as opts 
from pyecharts.globals import SymbolType, WarningType
WarningType.ShowWarning = False

import warnings
warnings.filterwarnings('ignore')

匯總數據中包含了從2019-11-01至2020-07-02日的交戰匯總數據,共37場,數據格式如下:

# 匯總數據
df_all = pd.read_excel('../data/遼寧交戰匯總.xlsx')
df_all.head() 

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?


技術數據中包含了每一場比賽選手的詳細技術數據,數據預覽如下:

# 技術數據
df_skill = pd.read_excel('../data/詳細技術數據-修改版.xlsx')
df_skill.head()    

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?


2. 數據預處理

此處對首發數據進行清洗。

# 循環
df_skill2 = pd.DataFrame() 

for i in df_skill['場序'].drop_duplicates():
    # 前五行填1
    df_sel = df_skill[df_skill['場序'] == i]
    df_sel.iloc[:5, 0] = 1
    # 后面填0 
    df_sel.iloc[5:-1, 0] = 0
    # 追加
    df_skill2 = df_skill2.append(df_sel, ignore_index=True) 

df_skill2['首發'] = df_skill2['首發'].replace('總計', np.nan)
df_skill2.head()   

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?


3. 數據可視化

此處我們分析:

  1. 主要球員贏球/輸球的比賽各項數據(籃板/助攻/失誤)
  2. 球員出場時間占比
  3. 2020年6月前比賽得分曲線圖
  4. 外援/國內球員平均得分曲線圖
  5. 郭艾倫/其他球員平均得分曲線圖
  6. 全部比賽命中率曲線圖
  7. 全部比賽失誤曲線圖
  8. 全部比賽得分曲線圖

代碼部分內容較多,以下展示部分分析代碼:


3.1 球員出場時間占比

# 刪除空值
df_time = df_skill2.dropna(axis=0)
df_time.head() 

# 計算時間
time_num = round(df_time.groupby('球員')['出場時間'].mean())
time_num = time_num.sort_values(ascending=False) 
time_num
球員
梅奧         40.0
郭艾倫        35.0
蘭斯-史蒂芬森    35.0
趙繼偉        33.0
韓德君        32.0
布蘭登-巴斯     32.0
高詩巖        24.0
李曉旭        24.0
劉志軒        22.0
賀天舉        17.0
叢明晨        15.0
王化東        11.0
郭旭          9.0
劉雁宇         7.0
鄢手騏         5.0
馬壯          2.0
Name: 出場時間, dtype: float64
data_pair =  [list(z) for z in zip(time_num.index.tolist(), time_num.values.tolist())]

# 繪制餅圖
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))
pie1.add('', data_pair, radius=['35%', '60%'])
pie1.set_global_opts(title_opts=opts.TitleOpts(title='不同球員的平均出場時間'), 
                     legend_opts=opts.LegendOpts(is_show=False, orient='vertical', pos_top='15%', pos_left='2%'))
pie1.set_series_opts(label_opts=opts.LabelOpts(formatter=":{c}min"))
pie1.render() 

3.2 外援/國內球員 平均得分曲線圖

# 合并數據
df_neiwai = pd.merge(df_skill2, df_all[['場序', '勝負']]) 

# 刪除列
df_neiwai.dropna(inplace=True)

# 添加外援/國內球員標簽
def tansform_label(x):
    if x == '梅奧' or x == '布蘭登-巴斯' or x == '蘭斯-史蒂芬森':
        return '外援'
    else:
        return '國內球員'

df_neiwai['標簽1'] = df_neiwai.球員.apply(tansform_label)
df_neiwai.head() 

遼寧為何會跌落神壇,從無敵隊到魚腩隊是郭艾倫的錯?


# 分組匯總
defen = df_neiwai.groupby(['場序', '標簽1'])['得分'].mean().reset_index() 
defen['得分'] = round(defen['得分'])

# 產生數據
x_line1 = defen[defen['標簽1']=='國內球員']['場序'].astype('str').tolist()
y_line1 = defen[defen['標簽1']=='國內球員']['得分'].tolist()
y_line2 = defen[defen['標簽1']=='外援']['得分'].tolist() 
line9 = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
line9.add_xaxis(x_line1) 
line9.add_yaxis('國內球員', y_line1,
                markpoint_opts=opts.MarkPointOpts(data=[
                    opts.MarkPointItem(type_='max', name='最大值'),
                    opts.MarkPointItem(type_='min', name='最小值')
                ]))
line9.add_yaxis('外援', y_line2,
                markpoint_opts=opts.MarkPointOpts(data=[
                    opts.MarkPointItem(type_='max', name='最大值'),
                    opts.MarkPointItem(type_='min', name='最小值')
                ]))
line9.set_global_opts(title_opts=opts.TitleOpts(title='外援-國內球員平均得分對比')) 
line9.set_series_opts(label_opts=opts.LabelOpts(is_show=True), 
                      linestyle_opts=opts.LineStyleOpts(width=3)  
                     ) 
line9.render()   

3.3 全部比賽得分曲線圖

# 定義函數
def draw_line(xaxis_data, y_axis, title_label, series_name='', min_num=None, label_color=None, line_color=None, formatter=None):
    line = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
    line.add_xaxis(xaxis_data) 
    line.add_yaxis(series_name, y_axis,
                    markpoint_opts=opts.MarkPointOpts(data=[
                        opts.MarkPointItem(type_='max', name='最大值'),
                        opts.MarkPointItem(type_='min', name='最小值')
                    ])) 
    line.set_global_opts(title_opts=opts.TitleOpts(title=title_label), 
                          yaxis_opts=opts.AxisOpts(min_=min_num) 
                         ) 
    line.set_series_opts(label_opts=opts.LabelOpts(is_show=True, color=label_color, formatter=formatter), 
                          linestyle_opts=opts.LineStyleOpts(width=3, color=line_color)  
                         )
    return line
# 產生數據
x_line1 = df_all[df_all['勝負']=='勝']['場序'].astype('str').tolist()
y_line1 = df_all[df_all['勝負']=='勝']['得分'].tolist()

x_line2 = df_all[df_all['勝負']=='敗']['場序'].astype('str').tolist()
y_line2 = df_all[df_all['勝負']=='敗']['得分'].tolist() 
# 繪圖
line1 = draw_line(xaxis_data=x_line1, y_axis=y_line1, title_label='全部比賽-勝場得分曲線圖', min_num=80,
                 label_color=None, line_color=None)
line2 = draw_line(xaxis_data=x_line2, y_axis=y_line2, title_label='全部比賽-勝場負場曲線圖', min_num=80, 
                  label_color='blue', line_color='#3B7BA9')

page1 = Page()  
page1.add(line1, line2)
page1.render() 

結語

遼寧隊本賽季能走多遠,能不能過季后賽首輪 完全取決于李曉旭回歸后的表現,需要彌補沒有大外援所損失的得分和籃板,也讓韓德君可以稍微休息一下。


但治根本的良藥還是要培養新人,遼寧青訓出了這么多優秀人才,人才斷層應該不會發生,希望俱樂部多多啟用新人,遼寧隊也到了破而后立的時刻了。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢