Dataset
在NBA的媒体报道,体育记者通常会集中在少数几个球员身边。为什么这个球员与其他球员不一样?使用数据挖掘可以探索这个问题。本文的数据集
nba_2013.csv
是2013-2014赛季的NBA球员的表现。下面是数据集的一些属性描述:
- player – name of the player
- pos – the position of the player
- g – number of games the player was in
- pts – total points the player scored
- fg. – field goal percentage(投篮命中率)
- ft. – free throw percentage(罚球命中率)
# 首先打印数据的前三行,观察数据的特性,总共31个属性
import pandas as pd
import numpy as np
nba = pd.read_csv("nba_2013.csv")
nba.head(3)
'''
player pos age bref_team_id g gs mp fg fga fg. \
0 Quincy Acy SF 23 TOT 63 0 847 66 141 0.468
1 Steven Adams C 20 OKC 81 20 1197 93 185 0.503
2 Jeff Adrien PF 27 TOT 53 12 961 143 275 0.520
... drb trb ast stl blk tov pf pts season season_end
0 ... 144 216 28 23 26 30 122 171 2013-2014 2013
1 ... 190 332 43 40 57 71 203 265 2013-2014 2013
2 ... 204 306 38 24 36 39 108 362 2013-2014 2013
[3 rows x 31 columns]
'''
Point Guards
控球后卫(Point Guards)往往是全队进攻的组织者,并通过对球的控制来决定在恰当的时间传球给适合的球员,是球场上拿球机会最多的人。他要把球从后场安全地带到前场,再把球传给其他队友,这才有让其他人得分的机会。 一个合格的控球后卫必须要能够在只有一个人防守他的情况下,毫无问题地将球带过半场。然后,他还要有很好的传球能力,能够在大多数的时间里,将球传到球应该要到的地方:有时候是一个可以投篮的空档,有时候是一个更好的导球位置——百度搜的,我也不懂球╰( ̄▽ ̄)╭
- 先提取出所有控卫的球员信息,控卫的属性pos值为PG:
point_guards = nba[nba['pos'] == 'PG']
Points Per Game
- 由于我们的数据集给出的是球员的总得分(pts)以及参赛场数(g),没有直接给出每场球赛的平均得分(Points Per Game),但是可以根据前两个值计算:
point_guards['ppg'] = point_guards['pts'] / point_guards['g']
# 查看下数据,确保 ppg = pts/g
point_guards[['pts', 'g', 'ppg']].head(5)
'''
pts g ppg
24 930 71 13.098592
29 150 20 7.500000
30 660 79 8.354430
38 666 72 9.250000
50 378 55 6.872727
'''
Assist Turnover Ratio
NBA中专门有一项数据统计叫assist/turnover,是用这个队员助攻数比上他的失误数,这项统计能准确的反映一个控卫是否称职。
- 助攻失误比的计算公式如下,其中Assists表示总助攻(ast),Turnovers表示总失误(tov)。