99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)精彩閱讀數(shù)據(jù)告訴你:遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?
數(shù)據(jù)告訴你:遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?
2020-07-07
收藏

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

CDA數(shù)據(jù)分析師 出品

作者:澤龍、Mika

數(shù)據(jù):真達(dá)

后期:澤龍

【導(dǎo)讀】

CBA重啟開(kāi)賽,遼寧為什么從冠軍隊(duì)變成魚(yú)腩隊(duì)?是侄子坑叔,還是亞洲第一控衛(wèi)變身綜藝咖,本期我們用全面的數(shù)據(jù)證明到底誰(shuí)害了遼寧隊(duì)!

Python技術(shù)分析請(qǐng)看第六部分。

Show me data,用數(shù)據(jù)說(shuō)話(huà)

今天我們聊一聊 遼寧隊(duì)

CBA做為中國(guó)職業(yè)體育最先重啟的聯(lián)賽,真的是萬(wàn)眾矚目,在第一階段最后一場(chǎng)比賽廣東對(duì)江蘇的比賽中,鐘南山鐘老親臨現(xiàn)場(chǎng),做為中國(guó)籃球界的女婿,鐘老真的為CBA重啟操碎了心。CBA這次復(fù)賽重啟結(jié)果也很不錯(cuò),堪稱(chēng)模范。

而本期我們要聊的是遼寧隊(duì),用數(shù)據(jù)解讀一支爭(zhēng)冠隊(duì)如何變成了魚(yú)腩隊(duì)?

文章要點(diǎn):

遼寧隊(duì)勝負(fù)場(chǎng)得分和命中率

不同球員的平均出場(chǎng)時(shí)間

遼寧隊(duì)勝負(fù)場(chǎng)失誤情況

外援與國(guó)內(nèi)球員平均得分對(duì)比

用Python分析遼寧隊(duì)比賽數(shù)據(jù)

01志在衛(wèi)冕的遼寧隊(duì)

從爭(zhēng)冠隊(duì)到魚(yú)腩隊(duì)

遼寧隊(duì)在賽季剛開(kāi)始還算順風(fēng)順?biāo)?,但是?fù)賽重啟后,遼寧隊(duì)?wèi)?zhàn)績(jī)可謂是糟糕透頂,連敗北京、廣州、浙江后,郭士強(qiáng)成為背鍋的那個(gè)人,黯然下課。真是大侄子坑老叔,一個(gè)愿打一個(gè)愿挨。

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

之后,遼寧虐兩個(gè)不強(qiáng)的隊(duì)后,遇到強(qiáng)隊(duì)又比賽落敗,真的很難聯(lián)想到這是一支爭(zhēng)冠的球隊(duì),這次我們結(jié)合數(shù)據(jù),聊一聊遼寧變成這樣到底誰(shuí)應(yīng)該背鍋?

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

賽季剛開(kāi)始的遼寧隊(duì)算是頂級(jí)強(qiáng)隊(duì),我們來(lái)看下當(dāng)初那只遼寧隊(duì),先看到分情況:

全部比賽-勝場(chǎng)得分曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

全部比賽-負(fù)場(chǎng)得分曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

折線(xiàn)圖來(lái)看,遼寧勝場(chǎng)得分都是100分以上,負(fù)場(chǎng)也幾乎過(guò)100了,證明遼寧隊(duì)進(jìn)攻完全沒(méi)有問(wèn)題,當(dāng)時(shí)還有師弟這樣的CBA詹姆斯, 一個(gè)人可以解決很多問(wèn)題,當(dāng)時(shí)的遼寧真的強(qiáng)。

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

02命中率不穩(wěn)定

郭士強(qiáng)為此下課

再看到整體命中率,我們分別統(tǒng)計(jì)了勝負(fù)場(chǎng)次,拉了折線(xiàn)圖出來(lái):

全部比賽-勝場(chǎng)命中率曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

全部比賽-負(fù)場(chǎng)命中率曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

罰球數(shù)據(jù)方面,復(fù)賽后所有球隊(duì)都有下滑,這個(gè)可以理解,畢竟很久沒(méi)有打比賽了。

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

大家一直在詬病遼寧隊(duì)的輪換,所以我們也分析了球員出場(chǎng)時(shí)間,制作了餅圖。

03奇葩的4+2輪換

只要主力不累死就不能下

這是本賽季所有比賽的球員出場(chǎng)時(shí)間圖:

不同球員的平均出場(chǎng)時(shí)間

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

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

復(fù)賽后,李曉旭受傷,劉志軒精神游離,賀天舉有復(fù)蘇的跡象,但是遠(yuǎn)遠(yuǎn)達(dá)不到為球隊(duì)分憂(yōu)的狀態(tài),因?yàn)榉朗貙?shí)在太差了。所以只剩下郭艾倫、韓德君、趙繼偉了,再加上1個(gè)外援,組成了奇葩的4人主力+2人輪換陣容。

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

通過(guò)上面的數(shù)據(jù)來(lái)看,輪換是遼寧隊(duì)復(fù)賽后最大的問(wèn)題,郭士強(qiáng)為此下課也合情合理。但是外教用人比郭士強(qiáng)還狠我們就看不明白了,遼寧隊(duì)是真的破罐子破摔了么?郭艾倫場(chǎng)均打滿(mǎn)全場(chǎng)是什么操作?就算是郭艾倫的球隊(duì)也不能場(chǎng)場(chǎng)打滿(mǎn)吧。

04沒(méi)有超強(qiáng)得分能力的保證

失誤多不可能贏球

在分析遼寧蛻變的同時(shí),也發(fā)現(xiàn)了一些之前球隊(duì)的隱患,分享給諸位。

這是遼寧隊(duì)勝負(fù)場(chǎng)次分別的失誤次數(shù):

全部比賽-勝場(chǎng)失誤曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

全部比賽-負(fù)場(chǎng)失誤曲線(xiàn)圖

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

看看這個(gè)曲線(xiàn),要是換我們的杜鋒杜指導(dǎo)帶隊(duì),估計(jì)每場(chǎng)都能出好多小視頻,瘋狂輸出,打不了幾場(chǎng)全隊(duì)就剩不下什么人了。在沒(méi)看到數(shù)據(jù)之前,覺(jué)得見(jiàn)誰(shuí)削誰(shuí)的遼寧隊(duì)場(chǎng)均失誤應(yīng)該會(huì)很少,這張圖顛覆了我的認(rèn)知,假如不看隊(duì)名,我以為是福建這種只進(jìn)攻不防守的球隊(duì)?wèi)?yīng)該有的數(shù)據(jù)表現(xiàn)。

05少了一個(gè)外援

誰(shuí)來(lái)分擔(dān)得分壓力?

再看到外援和國(guó)內(nèi)球員的平均得分:

外援-國(guó)內(nèi)球員平均得分對(duì)比

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?

這個(gè)比例在CBA倒是很常見(jiàn),外援占有球隊(duì)的一半出手權(quán),剩下一半才是國(guó)內(nèi)球員的,也證明了師弟在遼寧隊(duì)真的很重要。郭艾倫單核帶隊(duì)真的很難,這倒不是說(shuō)韓德君不是核心,在CBA的FIBA規(guī)則下,內(nèi)線(xiàn)帶隊(duì)真的太過(guò)艱難了。

這也側(cè)面就說(shuō)明了復(fù)賽之后遼寧體現(xiàn)的問(wèn)題,失去了2名外援,就算新外援梅奧和師弟表現(xiàn)的平起平坐,但是國(guó)內(nèi)球員的得分并沒(méi)有增加,以前得分的還是得分,以前不出場(chǎng)的還是不出場(chǎng)。這算下來(lái)就少了將近20分,和CBA復(fù)賽后國(guó)內(nèi)球員積極的表現(xiàn)形成了鮮明的對(duì)比。


06用Python帶你分析

遼寧隊(duì)比賽數(shù)據(jù)


我們使用Python獲取并分析了搜狐體育CBA數(shù)據(jù)中心遼寧隊(duì)的比賽和技術(shù)統(tǒng)計(jì)數(shù)據(jù),以下為關(guān)鍵部分代碼:

1. 數(shù)據(jù)讀入

首先導(dǎo)入分析所需包,并讀入數(shù)據(jù)集。

# 導(dǎo)入包
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')

匯總數(shù)據(jù)中包含了從2019-11-01至2020-07-02日的交戰(zhàn)匯總數(shù)據(jù),共37場(chǎng),數(shù)據(jù)格式如下:

# 匯總數(shù)據(jù)
df_all = pd.read_excel('../data/遼寧交戰(zhàn)匯總.xlsx')
df_all.head() 

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?


技術(shù)數(shù)據(jù)中包含了每一場(chǎng)比賽選手的詳細(xì)技術(shù)數(shù)據(jù),數(shù)據(jù)預(yù)覽如下:

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

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?


2. 數(shù)據(jù)預(yù)處理

此處對(duì)首發(fā)數(shù)據(jù)進(jìn)行清洗。

# 循環(huán)
df_skill2 = pd.DataFrame() 

for i in df_skill['場(chǎng)序'].drop_duplicates():
    # 前五行填1
    df_sel = df_skill[df_skill['場(chǎng)序'] == 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['首發(fā)'] = df_skill2['首發(fā)'].replace('總計(jì)', np.nan)
df_skill2.head()   

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?


3. 數(shù)據(jù)可視化

此處我們分析:

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

代碼部分內(nèi)容較多,以下展示部分分析代碼:


3.1 球員出場(chǎng)時(shí)間占比

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

# 計(jì)算時(shí)間
time_num = round(df_time.groupby('球員')['出場(chǎng)時(shí)間'].mean())
time_num = time_num.sort_values(ascending=False) 
time_num
球員
梅奧         40.0
郭艾倫        35.0
蘭斯-史蒂芬森    35.0
趙繼偉        33.0
韓德君        32.0
布蘭登-巴斯     32.0
高詩(shī)巖        24.0
李曉旭        24.0
劉志軒        22.0
賀天舉        17.0
叢明晨        15.0
王化東        11.0
郭旭          9.0
劉雁宇         7.0
鄢手騏         5.0
馬壯          2.0
Name: 出場(chǎng)時(shí)間, 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='不同球員的平均出場(chǎng)時(shí)間'), 
                     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 外援/國(guó)內(nèi)球員 平均得分曲線(xiàn)圖

# 合并數(shù)據(jù)
df_neiwai = pd.merge(df_skill2, df_all[['場(chǎng)序', '勝負(fù)']]) 

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

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

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

遼寧為何會(huì)跌落神壇,從無(wú)敵隊(duì)到魚(yú)腩隊(duì)是郭艾倫的錯(cuò)?


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

# 產(chǎn)生數(shù)據(jù)
x_line1 = defen[defen['標(biāo)簽1']=='國(guó)內(nèi)球員']['場(chǎng)序'].astype('str').tolist()
y_line1 = defen[defen['標(biāo)簽1']=='國(guó)內(nèi)球員']['得分'].tolist()
y_line2 = defen[defen['標(biāo)簽1']=='外援']['得分'].tolist() 
line9 = Line(init_opts=opts.InitOpts(width='1350px', height='750px'))
line9.add_xaxis(x_line1) 
line9.add_yaxis('國(guó)內(nèi)球員', 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='外援-國(guó)內(nèi)球員平均得分對(duì)比')) 
line9.set_series_opts(label_opts=opts.LabelOpts(is_show=True), 
                      linestyle_opts=opts.LineStyleOpts(width=3)  
                     ) 
line9.render()   

3.3 全部比賽得分曲線(xiàn)圖

# 定義函數(shù)
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
# 產(chǎn)生數(shù)據(jù)
x_line1 = df_all[df_all['勝負(fù)']=='勝']['場(chǎng)序'].astype('str').tolist()
y_line1 = df_all[df_all['勝負(fù)']=='勝']['得分'].tolist()

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

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

結(jié)語(yǔ)

遼寧隊(duì)本賽季能走多遠(yuǎn),能不能過(guò)季后賽首輪 完全取決于李曉旭回歸后的表現(xiàn),需要彌補(bǔ)沒(méi)有大外援所損失的得分和籃板,也讓韓德君可以稍微休息一下。


但治根本的良藥還是要培養(yǎng)新人,遼寧青訓(xùn)出了這么多優(yōu)秀人才,人才斷層應(yīng)該不會(huì)發(fā)生,希望俱樂(lè)部多多啟用新人,遼寧隊(duì)也到了破而后立的時(shí)刻了。


數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線(xiàn)
立即咨詢(xún)
客服在線(xiàn)
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }