NBA理性分析:30年最强夺冠阵容

2017-11-12 末世拾荒者
无数据的分析不过一场嘴炮。 本篇内容为科赛网用户 AK_47 基于科赛网明星数据集《NBA数据集》,进行的全面理性分析。 30年最强夺冠阵容谁说了算, 数据里见分晓。

1.数据集概览

NBA数据集:NBA历史各赛季常规及季后赛球员、球队及教练综合数据,另附各球员的赛季薪金数据(NBA历史统计原因,仅存1985-86赛季之后的单场比赛球员数据。

先来看看科赛提供了哪些数据集:

ls ../input/NBAdata/
advanced_basic.csv     coach_playoff.csv   player_salary.csv  team_playoff.csv
advanced_shooting.csv  coach_season.csv    player_season.csv  team_season.csv
avg.csv                player_playoff.csv  single.csv         tot.csv

既然是找寻史上最XX总冠军,那么 team_season.csv 和 team_playoff.csv这两个数据集便是我们关注的重点。

# 导入常用的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# R语言中的ggplot画图很漂亮,我们同样可以调用参数,在Python实现类似风格的可视化
from matplotlib import style 
style.use('ggplot')
# 设置warnings
import warnings
warnings.filterwarnings('ignore')
# 导入数据
T_season = pd.read_csv('../input/NBAdata/team_season.csv')
T_playoff = pd.read_csv('../input/NBAdata/team_playoff.csv')

看一眼球队季后赛表现T_playoff.csv这个数据集长什么样

T_playoff.head()

5 rows × 23 columns

里面有哪些columns?

T_playoff.columns
Index(['球队', '时间', '结果', '主/客场', '比分', '投篮', '命中', '出手', '三分', '三分命中', '三分出手',
       '罚球', '罚球命中', '罚球出手', '篮板', '前场', '后场', '助攻', '抢断', '盖帽', '失误', '犯规',
       '得分'],
      dtype='object')

对于球队常规赛数据集T_season.csv也是同样的处理方法:

T_season.head()

5 rows × 23 columns

T_season.columns
Index(['球队', '时间', '结果', '主/客场', '比分', '投篮', '命中', '出手', '三分', '三分命中', '三分出手',
       '罚球', '罚球命中', '罚球出手', '篮板', '前场', '后场', '助攻', '抢断', '盖帽', '失误', '犯规',
       '得分'],
      dtype='object')

以上我们大致了解了数据集涵盖的字段和内容,下面开始找寻史上最XX总冠军的征程。

2. 历年总冠军回顾

既然目标是找寻史上最XX总冠军,那么我们先要找到历年的夺冠球队,再进行分析。

2.1 1986-2016 NBA总冠军在哪里?

# 添加对手字段
T_playoff['对手'] = T_playoff['比分'].apply(lambda x: x[0:3])
T_season['对手'] = T_season['比分'].apply(lambda x: x[0:3])
#增加赛季字段,整理年份
T_playoff['赛季'] = T_playoff['时间'].str.extract('([0-9]{4})').astype('int')
#搬来代码,整理冠军及年份
win_dic={}
for i in T_playoff['球队'].unique():
    win_dic[i]={}

for i in range(1986,2017):
    for j in T_playoff['球队'].unique():
        win_dic[j][i]=len(T_playoff[T_playoff.球队==j][T_playoff.赛季==i][T_playoff.结果=='W'].index)
win_count=pd.DataFrame(win_dic)
winner={}
for i in win_count.index:
    winner[i]=win_count.loc[i].sort_values(ascending=False).keys()[0]
winner=pd.Series(winner)
T_playoff['时间'] = pd.to_datetime(T_playoff['时间'])

总冠军归属整理如下表:

原来近三十年夺冠也就是这几支球队轮流坐庄,那么这些球队瓜分总冠军的次数如何,请看下图分解:

plt.figure(figsize=(12,7))
plt.axes(axisbg='#F5F5F5') #设置一个好看的背景色
winner.value_counts().plot(kind='bar',color='blue')
plt.xlabel('球队')
plt.ylabel('总冠军个数')
plt.title('图1 NBA总冠军如何被瓜分')
plt.show()

不看不知道,一看吓一跳:

  • 洛杉矶湖人(LAL)一马当先抢下7枚总冠军截止
  • 乔帮主带领芝加哥公牛(CHI)完成两次3连冠伟业,从此封神
  • 圣安东尼奥马刺(SAS)也斩落5个总冠军头衔,闷声发大财
  • 以上这三支球队拿到了1986-2016这31年里面的16个总冠军,竟然过半!

好戏就此开始,我们先从各年总冠军的常规赛讲起。

# 找到总冠军在夺冠赛季的常规赛和季后赛数据 以及对手的数据
start_time = [str(i)+'-10-01' for i in range(1985,2016)]
end_time = [str(i)+'-07-01' for i in range(1986,2017)]
Name = [winner[i] for i in range(1986,2017)]
Champ_season = [[] for i in range(0,31)]
Champ_playoff = [[] for i in range(0,31)]
Champ_opp_season =[[] for i in range(0,31)]
Champ_opp_playoff = [[] for i in range(0,31)]


for i in range(0,31):
    Champ_playoff[i] = T_playoff[(T_playoff['球队']==Name[i])&
                             (T_playoff['时间']>start_time[i])&
                             (T_playoff['时间']<end_time[i])]

    Champ_opp_playoff[i] = T_playoff[(T_playoff['对手']==Name[i])&
                             (T_playoff['时间']>start_time[i])&
                             (T_playoff['时间']<end_time[i])] 

    Champ_season[i] = T_season[(T_season['球队']==Name[i])&
                             (T_season['时间']>start_time[i])&
                             (T_season['时间']<end_time[i])]

    Champ_opp_season[i] = T_season[(T_season['对手']==Name[i])&
                             (T_season['时间']>start_time[i])&
                             (T_season['时间']<end_time[i])]
def get_wininfo(data):
    Wscore = []
    Wrate = []
    for i in range(0,31):
        temp = data[i]
        Wrate.append(round(len(temp[temp['结果']=='W'])/len(temp),2))
        Wscore.append(temp['得分'].mean())
    return Wscore, Wrate
def get_Rtg(Champ,Opp):
    DRtg = []
    ORtg = []
    for i in range(0,31):
        temp1 = Champ[i]
        temp2 = Opp[i]
        DRtg.append((temp1['得分'].mean()*100)/(temp1['出手'].mean()-temp1['前场'].mean()+temp1['失误'].mean()+temp1['罚球出手'].mean()*0.44))
        ORtg.append((temp2['得分'].mean()*100)/(temp2['出手'].mean()-temp2['前场'].mean()+temp2['失误'].mean()+temp2['罚球出手'].mean()*0.44))        
    return DRtg,ORtg

2.2 复盘总冠军们的常规赛表现

这一部分我们考察的点主要有:

  • 常规赛胜率 v.s 场均得分:原本想用赢球场次这个指标进行度量,但是考虑到NBA在这30年的记录中有过赛季缩水(1998年和2011年),所以常规赛的胜率更具有代表性。
  • 三分球:三分球是现如今联盟的潮流,我们想看看从古到今,NBA冠军们是如何在三分球上面搞事情的
  • 篮板:
  • 助攻:单打独斗 v.s 团队篮球,总冠军们如何选择
  • 高阶指标:进攻效率值和防守效率值

进攻效率值: 得分 X 100/(出手次数-前场篮板+自己失误+罚球出手 X 0.44)

防守效率值: 对手得分 X 100/(对手的出手次数-对手的前场篮板+对手的失误+对手的罚球出手 X 0.44)

常规赛胜率 v.s 场均得分

在下图中我们统计了历年总冠军的常规赛场均得分与胜率,其中胜率乘了系数100,这样放在了一个坐标系中,用蓝色表示。

w_score = get_wininfo(Champ_season)[0]
w_rate = get_wininfo(Champ_season)[1]
size = [i*100 for i in w_rate]

idx = range(0,31)
tick = [str(winner.index[i]) + '-' + str(winner[i+1986]) for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')
plt.scatter(idx,w_score,label='场均得分')
plt.plot(idx,w_score,linestyle='--',linewidth=1,color='blue')
plt.scatter(idx,size,label='胜率')
plt.plot(idx,size,linestyle='--',linewidth=1,color='black')
plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.title('图2 常规赛 - 场均得分 vs 胜率')
plt.xlabel('年份-冠军')
plt.legend(bbox_to_anchor=(1.13,1))
plt.show()

不看不知道,一看吓一跳:

  • 1987年的洛杉矶湖人(LAL)火力全开,常规赛场均轰下近120分,如入无人之境!
  • 1995年的休斯顿火箭(HOU)告诉你永远不要低估一颗总冠军的心,哪怕常规赛胜率惨不忍睹!
  • 1996年的芝加哥公牛(CHI)乔帮主王者归来,创下了72胜10负的惊天记录(胜率近9成),直到2017年才被金州勇士打破。

三分球统计

我们统计了各个总冠军的三分出手次数、命中次数以及命中率(命中率乘了系数100,便于展示)

T_season_3pt = [Champ_season[i].三分出手.mean() for i in range(0,31)]
T_season_3p = [Champ_season[i].三分命中.mean() for i in range(0,31)]

rate = [100 * T_season_3p[i]/T_season_3pt[i] for i in range(0,31)]
# Twenty = [20 for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.bar(idx,T_season_3pt,label='场均出手')
plt.bar(idx,T_season_3p,label='场均命中数')
plt.scatter(idx,rate,label='命中率')
plt.plot(idx,rate,linewidth=0.5,color='black',linestyle='--')
plt.legend(bbox_to_anchor=(1,1))
plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.title('图3 常规赛 - 三分统计')
plt.xlabel('年份-冠军')
plt.show()

篮板统计

总冠军们在常规赛的场均进攻篮板,防守篮板,总篮板分别进行了归类

T_season_dreb = [Champ_season[i].后场.mean() for i in range(0,31)]
T_season_oreb = [Champ_season[i].前场.mean() for i in range(0,31)]
T_season_reb = [Champ_season[i].篮板.mean() for i in range(0,31)]

dreb_mean = [np.array(T_season_dreb).mean() for i in range(0,31)]
oreb_mean = [np.array(T_season_oreb).mean() for i in range(0,31)]
reb_mean = [np.array(T_season_reb).mean() for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.scatter(idx,T_season_oreb,label='进攻篮板')
plt.scatter(idx,T_season_dreb,label='防守篮板')
plt.scatter(idx,T_season_reb,label='总篮板')

plt.plot(idx,T_season_oreb, color='green', linestyle='-', linewidth=0.5)
plt.plot(idx,T_season_dreb, color='green', linestyle='-', linewidth=0.5)
plt.plot(idx,T_season_reb, color='green', linestyle='-', linewidth=0.5)

plt.plot(idx,dreb_mean, color='black', linestyle='--', linewidth=1,label='平均值')
plt.plot(idx,oreb_mean, color='black', linestyle='--', linewidth=1)
plt.plot(idx,reb_mean, color='black', linestyle='--', linewidth=1)

plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.title('图4 常规赛 - 篮板表现')
plt.ylabel('场均篮板数')
plt.xlabel('年份-冠军')
plt.legend(bbox_to_anchor=(1,1))
plt.show()

助攻统计

总冠军们在常规赛的场均助攻表现如下:

T_season_assist = [Champ_season[i].助攻.mean() for i in range(0,31)]

ast_mean = [np.array(T_season_assist).mean() for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')
plt.scatter(idx,T_season_assist,label='场均助攻数')
plt.plot(idx,T_season_assist,linestyle='-',linewidth=0.5,color='black')
plt.plot(idx,ast_mean,color='blue', linestyle='--', linewidth=1,label='平均值')

plt.title('图5 常规赛 - 助攻表现')
plt.ylabel('场均助攻数')
plt.xlabel(å'年份-冠军')
plt.ylim(17)
plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.legend(bbox_to_anchor=(1.15,1))
plt.show()

常规赛进攻与防守效率值

Dseason = get_Rtg(Champ_season,Champ_opp_season)[0]
Oseason = get_Rtg(Champ_season,Champ_opp_season)[1]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.scatter(idx,Dseason,label='进攻效率值')
plt.scatter(idx,Oseason,label='防守效率值')

Dseason_mean = [np.array(Dseason).mean() for i in range(0,31)]
Oseason_mean = [np.array(Oseason).mean() for i in range(0,31)]

plt.plot(idx,Dseason,linestyle='-',linewidth=0.5)
plt.plot(idx,Oseason,linestyle='-',linewidth=0.5)

plt.plot(idx,Dseason_mean, color='black', linestyle='--', linewidth=1,label='平均值')
plt.plot(idx,Oseason_mean, color='black', linestyle='--', linewidth=1)

plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.legend(bbox_to_anchor=(1.14,1))
plt.title('图6 常规赛 - 进攻/防守效率值')
plt.xlabel('年份-冠军')
plt.ylabel('效率值')
plt.show()

2.3 回顾总冠军们的季后赛show time

同常规赛部分,我们考察的点依旧集中在常规赛胜率 v.s 场均得分,三分球,篮板,助攻,进攻效率值和防守效率值这几个指标上面。

得分高于对手,才能赢得比赛。

T_playoff_mean = [Champ_playoff[i].得分.mean() for i in range(0,31)]

mean = [np.array(T_playoff_mean).mean() for i in range(0,31)]


plt.figure(figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.scatter(idx,T_playoff_mean)
plt.plot(idx,T_playoff_mean,linestyle='--', linewidth=0.5,label='场均得分')
plt.plot(idx,mean, color='blue', linestyle='--', linewidth=1,label='平均值')

plt.setp(plt.xticks(idx,tick)[1],rotation=90)

plt.title('图7 季后赛 - 场均得分')
plt.xlabel('年份-冠军')
plt.legend(bbox_to_anchor=(1,1))
plt.ylim(85)
plt.show()

论得分表现:

  • 勇士近年来表现火爆,可是得分能力比起1987年的洛杉矶湖人(LAL),差了可不止一点,当年的湖人季后赛场均120.6分傲视群雄。
  • 在这31次冠军归属中,季后赛场均得分100以上和100以下的冠军比例接近1:1(实际为16:15)
  • 只有两只球队在场均得90分以下的情况获得了总冠军,它们分别是1999年的圣安东尼奥马刺(SAS)和2004年的底特律活塞(DET)
  • 在洛杉矶湖人7次夺冠历史中,2002年的总冠军是它们唯一一次在季后赛场均100分以下得到的

无兄弟,不篮球;无助攻,难得分。

T_playoff_assist = [Champ_playoff[i].助攻.mean() for i in range(0,31)]

ast_mean = [np.array(T_playoff_assist).mean() for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')
plt.scatter(idx,T_playoff_assist)
plt.plot(idx,T_playoff_assist,linestyle='-',linewidth=0.5,color='black')
plt.plot(idx,ast_mean,color='blue', linestyle='--', linewidth=1,label='平均值')

plt.title('图8 季后赛 - 助攻表现')
plt.ylabel('场均助攻数')
plt.xlabel('年份-冠军')
plt.ylim(17)
plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.legend(bbox_to_anchor=(1,1))
plt.show()

论助攻表现:

  • 迈阿密热火(MIA)的前两个冠军(2006和2012)更像是个人表演而非团队合作的结果
  • 在记录的31个总冠军中,有八次夺冠过程场均助攻低于20次,都发生在2000年以后,分别是2002年的洛杉矶湖人,2004年的底特律活塞,2005年的圣安东尼奥马刺,2006年的迈阿密热火,以及2012年的迈阿密热火。

篮板篮板篮板,重要的事说三遍。

T_playoff_dreb = [Champ_playoff[i].后场.mean() for i in range(0,31)]
T_playoff_oreb = [Champ_playoff[i].前场.mean() for i in range(0,31)]
T_reb = [Champ_playoff[i].篮板.mean() for i in range(0,31)]

dreb_mean = [np.array(T_playoff_dreb).mean() for i in range(0,31)]
oreb_mean = [np.array(T_playoff_oreb).mean() for i in range(0,31)]
reb_mean = [np.array(T_reb).mean() for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.scatter(idx,T_playoff_oreb,label='进攻篮板')
plt.scatter(idx,T_playoff_dreb,label='防守篮板')
plt.scatter(idx,T_reb,label='总篮板')

plt.plot(idx,T_playoff_oreb, color='green', linestyle='-', linewidth=0.5)
plt.plot(idx,T_playoff_dreb, color='green', linestyle='-', linewidth=0.5)
plt.plot(idx,T_reb, color='green', linestyle='-', linewidth=0.5)

plt.plot(idx,dreb_mean, color='black', linestyle='--', linewidth=1,label='平均值')
plt.plot(idx,oreb_mean, color='black', linestyle='--', linewidth=1)
plt.plot(idx,reb_mean, color='black', linestyle='--', linewidth=1)

plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.title('图9 季后赛 - 篮板表现')
plt.ylabel('场均篮板数')
plt.xlabel('年份-冠军')
plt.legend(bbox_to_anchor=(1,1))
plt.show()

论篮板能力:

  • 30枚防守篮板+10枚进攻篮板 成为了总冠军的标配
  • 2015年的金州勇士(GSW)在进攻篮板和防守篮板上的表现是近五年总冠军们的最佳

他强任他强,三分我最狂。

T_playoff_3pt = [Champ_playoff[i].三分出手.mean() for i in range(0,31)]
T_playoff_3p = [Champ_playoff[i].三分命中.mean() for i in range(0,31)]

rate = [100 * T_playoff_3p[i]/T_playoff_3pt[i] for i in range(0,31)]
rate_mean = [np.array(rate).mean() for i in range(0,31)]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')

plt.bar(idx,T_playoff_3pt,label='场均出手')
plt.bar(idx,T_playoff_3p,label='场均命中数')

plt.scatter(idx,rate,label='命中率')
plt.plot(idx,rate,linewidth=0.5,color='black',linestyle='--',label='平均值')
plt.plot(idx,rate_mean,linewidth=1,color='black',linestyle='--')

plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.legend(bbox_to_anchor=(1,1))

plt.title('图10 季后赛 - 三分表现')
plt.show()

论三分球表现

  • 近些年来,三分球进攻的数量的确增加了很多,但是,早在20多年前,联盟曾经有过这样一个三分出手增加的阶段,参考1994和1995年的冠军休斯顿火箭(HOU),以及1996和1997年的芝加哥公牛(CHI),只是当时效果不佳,可以看到后来两年总冠军的三分出手次数有所下降。
  • 芝加哥公牛(CHI)在第一个三连冠时期(1991-1993)的三分球出手和命中数都不是很高,相比于第二个三连冠时期(1996-1998),球队在三分球的处理上发生了重大改变。
  • 2015年的金州勇士(GSW)和2016年的克利夫兰骑士(CLE)将三分球发挥到了前无古人般的极致,唯二两只实现场均命中10记三分的球队
  • 只有屈指可数的几支球队达到了场均20+的三分球出手

高阶数据才是实力的体现:季后赛进攻&防守效率值

Dseason = get_Rtg(Champ_playoff,Champ_opp_playoff)[0]
Oseason = get_Rtg(Champ_playoff,Champ_opp_playoff)[1]

plt.figure(1,figsize=(12,6))
plt.axes(axisbg='#F5F5F5')
plt.scatter(idx,Dseason,label='进攻效率值')
plt.scatter(idx,Oseason,label='防守效率值')

plt.plot(idx,Dseason,linestyle='-',linewidth=0.5)
plt.plot(idx,Oseason,linestyle='-',linewidth=0.5)

Dseason_mean = [np.array(Dseason).mean() for i in range(0,31)]
Oseason_mean = [np.array(Oseason).mean() for i in range(0,31)]

plt.plot(idx,Dseason_mean, color='black', linestyle='--', linewidth=1,label='平均值')
plt.plot(idx,Oseason_mean, color='black', linestyle='--', linewidth=1)

plt.setp(plt.xticks(idx,tick)[1],rotation=90)
plt.title('图11 季后赛 - 进攻/防守效率值')
plt.ylabel('效率值')
plt.xlabel('年份-冠军')
plt.legend(bbox_to_anchor=(1,1))
plt.show()

3. 找寻史上最XX总冠军

3.1 史上最屌丝总冠军 --- 1995年的休斯顿火箭(HOU)

关键词:团队篮球 & 三分球

如果你是一名NBA老球迷,你一定听过“永远不要低估了一颗总冠军的心”这句话。屌丝逆袭的故事也在NBA中发生着, because it is where amazing happens. 从未有哪只球队像1995年的休斯顿火箭队一样,在自己的卫冕道路上走得如此艰难。常规赛阶段,胜率不足六成,进攻端低迷,防守端被爆,一路跌跌撞撞,以西部第六的身份进入季后赛。最终依靠 团队篮球三分球 赢下德州小强的名号,带走了总冠军。

团队篮球:1995年的火箭在当年季后赛场均送出25次以上助攻,后来从未有球队在季后赛中做到过这一点

三分球: 对!你没看错,火箭在那个年代就在投三分球! 1995年的火箭在季候赛有着媲美现在勇士和骑士的三分球命中率 ,并且 三分出手次数 在那个年代也是前无古人

3.2 史上最团队篮球总冠军 --- 1985年的波士顿凯尔特人(BOS)

关键词: 助攻 + 篮板 + 得分 并驾齐驱

这是一个大鸟博德(Larry Bird)与魔术师相互争霸的年代,向伟大致敬!

  • 常规赛:历史第二场均助攻 + 历史第一场均篮板 + 历史第二场均得分
  • 季后赛:历史第一场均助攻

3.3 史上最佳三分总冠军 --- 2015年的金州勇士(GSW)

关键词:三分如雨下

2015年的金州勇士可谓是一只现象级的球队,在常规赛阶段就展现了震古烁今的三分球功力,场均至少10记三分+40%命中率的稳定输出为他们早早锁定了季后赛席位。在季后赛中,勇士也可谓用三分球技能大杀四方,将场均三分出手次数提升到了30+而命中率微弱降低。史上最佳三分总冠军的称号,实至名归。

3.4 史上最佳进攻总冠军 --- 1987年的洛杉矶湖人(LAL)

关键词:进攻是最好的防守

这是进攻篮球最好的时代,这是魔术师的show time。这一年的洛杉矶湖人(LAL)常规赛阶段便在进攻端展示出极强的破坏力,八成胜率进入季后赛,之后更是以 场均120+的历史第一高分 夺得总冠军,开启了湖人在那个时代的两连冠。

3.5 史上最佳防守总冠军 --- 2004年的底特律活塞(DET)

关键词: 防守是最好的进攻

论最佳防守总冠军,如果活塞说自己是第二,马刺绝对不敢说自己是第一。2004年的底特律活塞被称为“ 坏孩子 ”。这群“ 坏孩子 ”们在常规赛阶段就展现了自己对进攻的“ 厌恶 ”:场均不到90分也是没谁了。到了季后赛,这群“ 坏孩子 ”们更是将防守和进攻演绎到了极致:进攻效率值史上最低,而防守效率却是史上最佳。原来他们把进攻的功夫全部拿去防守了。This is where amazing happens,向这群“ 坏孩子 ”们致敬!

3.6 史上最强总冠军

关键词: 完美

如果非要找出史上最强总冠军的话,1996年的芝加哥公牛(CHI)当之无愧。来,数据说话:

  • 常规赛胜率 历史现象级:72胜10负的神话直到2016-17赛季才被打破
  • 常规赛三分命中率媲美当今勇士:40%+的三分命中率在那个时代实属罕见
  • 常规赛进攻效率历史Top3:遍历1985-2016年的总冠军,历史前三的常规赛进攻效率
  • 季后赛场均进攻篮板历史第一:虽然季后赛总篮板与防守篮板表现一般,但是进攻篮板值异常炸裂!
  • 季后赛进攻与防守效率差值历史第一:进攻效率刚过平均线,但是防守效率历史前三。进攻的不足用顽强的防守去弥补!

4. 写在最后的话

from IPython.display import HTML
HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
有球迷的地方就有江湖,有江湖的地方就会有懂球帝和数据分析老司机。为了更好的阅读体验,源代码已经设置隐藏。如有需要,请看这里<a href="javascript:code_toggle()">这里</a>.''')

有球迷的地方就有江湖,有江湖的地方就会有懂球帝和数据分析老司机。

本作品完整源代码可直接登录科赛,在「项目」栏目查看,并能使用K-Lab的「Fork」键功能在源代码基础上再优化,生成自己的分析作品。


用户评论
开源开发学习小组列表