├── __init__.py
├── test
├── __init__.py
├── test_injury_report.py
├── test_pbp.py
├── test_shot_charts.py
├── test_drafts.py
├── test_seasons.py
├── test_box_scores.py
├── test_players.py
└── test_teams.py
├── basketball_reference_scraper
├── __init__.py
├── injury_report.py
├── drafts.py
├── request_utils.py
├── pbp.py
├── shot_charts.py
├── lookup.py
├── constants.py
├── seasons.py
├── box_scores.py
├── utils.py
├── players.py
├── teams.py
└── br_names.txt
├── requirements.txt
├── .gitignore
├── .github
└── workflows
│ └── main.yml
├── LICENSE
├── setup.py
├── examples.py
├── README.md
└── API.md
/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | beautifulsoup4==4.8.2
2 | bs4==0.0.1
3 | lxml==4.6.5
4 | numpy==1.21.0
5 | pandas==1.3.5
6 | python-dateutil==2.8.1
7 | pytz==2019.3
8 | requests==2.22.0
9 | six==1.13.0
10 | soupsieve==1.9.5
11 | unidecode==1.2.0
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | basketball_reference_scraper_vishaalagartha.egg-info/
2 | basketball_reference_scraper/__pycache__/*
3 | test-env/
4 | test/__pycache__/*
5 | .DS_STORE
6 | dist/
7 | build/
8 | *egg-info/
9 | *.ipynb
10 |
11 | .vscode
12 | env
13 | package_passwords.txt
--------------------------------------------------------------------------------
/test/test_injury_report.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.injury_report import get_injury_report
3 |
4 | class TestInjuryReport(unittest.TestCase):
5 | def test_injury_report(self):
6 | df = get_injury_report()
7 | expected_columns = ['PLAYER', 'TEAM', 'DATE', 'INJURY', 'STATUS', 'DESCRIPTION']
8 | self.assertCountEqual(list(df.columns), expected_columns)
9 |
10 | if __name__ == '__main__':
11 | unittest.main()
12 |
--------------------------------------------------------------------------------
/test/test_pbp.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.pbp import get_pbp
3 |
4 | class TestPbp(unittest.TestCase):
5 | def test_pbp(self):
6 | df = get_pbp('2020-01-06', 'DEN', 'ATL')
7 | expected_columns = ['QUARTER', 'TIME_REMAINING', 'DENVER_ACTION', 'ATLANTA_ACTION', 'DENVER_SCORE', 'ATLANTA_SCORE']
8 | self.assertListEqual(list(df.columns), expected_columns)
9 |
10 | if __name__ == '__main__':
11 | unittest.main()
12 |
--------------------------------------------------------------------------------
/test/test_shot_charts.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.shot_charts import get_shot_chart
3 |
4 | class TestShotCharts(unittest.TestCase):
5 | def test_get_shot_chart(self):
6 | d = get_shot_chart('2019-12-28', 'TOR', 'BOS')
7 | self.assertListEqual(list(d.keys()), ['TOR', 'BOS'])
8 | self.assertListEqual(list(d['TOR'].columns), ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE'])
9 | if __name__ == '__main__':
10 | unittest.main()
11 |
--------------------------------------------------------------------------------
/test/test_drafts.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.drafts import get_draft_class
3 |
4 | class TestDraft(unittest.TestCase):
5 |
6 | def test_should_get_class(self):
7 | df = get_draft_class(2003)
8 | self.assertEqual(len(df), 58)
9 |
10 | row = df.iloc[0]
11 | self.assertEqual('LeBron James', row['PLAYER'])
12 |
13 | def test_should_get_old_class(self):
14 | df = get_draft_class(1987)
15 | self.assertEqual(len(df), 161)
16 |
17 | def test_should_handle_forfeit(self):
18 | df = get_draft_class(2002)
19 | self.assertEqual(len(df), 57)
20 |
21 | row = df.iloc[27]
22 | self.assertEqual('28', row['PICK'])
23 | row = df.iloc[28]
24 | self.assertEqual('30', row['PICK'])
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the workflow will run
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the master branch
8 | push:
9 | branches: [ master ]
10 | pull_request:
11 | branches: [ master ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | build:
19 | runs-on: ubuntu-latest
20 | strategy:
21 | max-parallel: 6
22 | matrix:
23 | python-version: ["3.8", "3.9", "3.10"]
24 |
25 | steps:
26 | - uses: actions/checkout@v2
27 | - name: Set up Python ${{ matrix.python-version }}
28 | uses: actions/setup-python@v2
29 | with:
30 | python-version: ${{ matrix.python-version }}
31 | - name: Install dependencies
32 | run: pip install -r requirements.txt
33 | - name: Test
34 | run: python -m unittest discover test
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Vishaal Agartha
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/injury_report.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from requests import get
3 | from bs4 import BeautifulSoup
4 |
5 | try:
6 | from constants import TEAM_TO_TEAM_ABBR
7 | from request_utils import get_wrapper
8 | except:
9 | from basketball_reference_scraper.constants import TEAM_TO_TEAM_ABBR
10 | from basketball_reference_scraper.request_utils import get_wrapper
11 |
12 | def get_injury_report():
13 | r = get_wrapper(f'https://www.basketball-reference.com/friv/injuries.fcgi')
14 | if r.status_code==200:
15 | soup = BeautifulSoup(r.content, 'html.parser')
16 | table = soup.find('table')
17 | df = pd.read_html(str(table))[0]
18 | df.rename(columns = {'Player': 'PLAYER', 'Team': 'TEAM', 'Update': 'DATE', 'Description': 'DESCRIPTION'}, inplace=True)
19 | df = df[df['PLAYER'] != 'Player']
20 | df['TEAM'] = df['TEAM'].apply(lambda x: TEAM_TO_TEAM_ABBR[x.upper()])
21 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x))
22 | df['STATUS'] = df['DESCRIPTION'].apply(lambda x: x[:x.index('(')].strip())
23 | df['INJURY'] = df['DESCRIPTION'].apply(lambda x: x[x.index('(')+1:x.index(')')].strip())
24 | df['DESCRIPTION'] = df['DESCRIPTION'].apply(lambda x: x[x.index('-')+2:].strip())
25 | return df
26 | else:
27 | raise ConnectionError('Request to basketball reference failed')
28 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/drafts.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from bs4 import BeautifulSoup
3 | try:
4 | from request_utils import get_wrapper
5 | except:
6 | from basketball_reference_scraper.request_utils import get_wrapper
7 |
8 |
9 | def get_draft_class(year):
10 | r = get_wrapper(f'https://www.basketball-reference.com/draft/NBA_{year}.html')
11 |
12 |
13 | if r.status_code==200:
14 | soup = BeautifulSoup(r.content, 'html.parser')
15 | table = soup.find('table')
16 | df = pd.read_html(str(table))[0]
17 |
18 | # get rid of duplicate pick col
19 | df.drop(['Unnamed: 0_level_0'], inplace=True, axis = 1, level=0)
20 | df.rename(columns={'Unnamed: 1_level_0': '', 'Pk': 'PICK', 'Unnamed: 2_level_0': '', 'Tm': 'TEAM',
21 | 'Unnamed: 5_level_0': '', 'Yrs': 'YEARS', 'Totals': 'TOTALS', 'Shooting': 'SHOOTING',
22 | 'Per Game': 'PER_GAME', 'Advanced': 'ADVANCED', 'Round 1': '',
23 | 'Player': 'PLAYER', 'College': 'COLLEGE'}, inplace=True)
24 |
25 | # flatten columns
26 | df.columns = ['_'.join(x) if x[0] != '' else x[1] for x in df.columns]
27 |
28 | # remove mid-table header rows
29 | df = df[df['PLAYER'].notna()]
30 | df = df[~df['PLAYER'].str.contains('Round|Player')]
31 |
32 | return df
33 | else:
34 | raise ConnectionError('Request to basketball reference failed')
35 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/request_utils.py:
--------------------------------------------------------------------------------
1 | from requests import get
2 | from time import sleep, time
3 | from selenium import webdriver
4 | from selenium.webdriver.chrome.options import Options
5 | from selenium import webdriver
6 | from selenium.webdriver.chrome.options import Options
7 | from selenium.webdriver.common.by import By
8 |
9 | options = Options()
10 | options.add_argument('--headless=new')
11 | driver = webdriver.Chrome(options=options)
12 | last_request = time()
13 |
14 | def get_selenium_wrapper(url, xpath):
15 | global last_request
16 | # Verify last request was 3 seconds ago
17 | if 0 < time() - last_request < 3:
18 | sleep(3)
19 | last_request = time()
20 | try:
21 | driver.get(url)
22 | element = driver.find_element(By.XPATH, xpath)
23 | return f'
{element.get_attribute("innerHTML")}
'
24 | except:
25 | print('Error obtaining data table.')
26 | return None
27 |
28 | def get_wrapper(url):
29 | global last_request
30 | # Verify last request was 3 seconds ago
31 | if 0 < time() - last_request < 3:
32 | sleep(3)
33 | last_request = time()
34 | r = get(url)
35 | while True:
36 | if r.status_code == 200:
37 | return r
38 | elif r.status_code == 429:
39 | retry_time = int(r.headers["Retry-After"])
40 | print(f'Retrying after {retry_time} sec...')
41 | sleep(retry_time)
42 | else:
43 | return r
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | import setuptools
2 |
3 | with open("README.md", "r") as fh:
4 | long_description = fh.read()
5 |
6 | setuptools.setup(
7 | name="basketball_reference_scraper",
8 | version="2.0.0",
9 | author="Vishaal Agartha",
10 | author_email="vishaalagartha@gmail.com",
11 | license="MIT",
12 | description="A Python client for scraping stats and data from Basketball Reference",
13 | long_description=long_description,
14 | long_description_content_type="text/markdown",
15 | url="https://github.com/vishaalagartha/basketball_reference_scraper",
16 | packages=setuptools.find_packages(),
17 | package_data={'basketball_reference_scraper': ['*.txt']},
18 | classifiers=[
19 | "Programming Language :: Python :: 3",
20 | "License :: OSI Approved :: MIT License",
21 | "Operating System :: OS Independent",
22 | ],
23 | python_requires=">=3.6",
24 | install_requires=[
25 | 'beautifulsoup4',
26 | 'bs4',
27 | 'lxml',
28 | 'numpy',
29 | 'pandas',
30 | 'python-dateutil',
31 | 'pytz',
32 | 'requests',
33 | 'six',
34 | 'soupsieve',
35 | 'Unidecode',
36 | 'selenium'
37 | ],
38 | extras_require={
39 | 'test': ['unittest'],
40 | },
41 | keywords=[
42 | "nba",
43 | "sports",
44 | "data mining",
45 | "basketball",
46 | "basketball reference",
47 | "basketball-reference.com",
48 | ],
49 | )
50 |
--------------------------------------------------------------------------------
/test/test_seasons.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.seasons import get_schedule, get_standings
3 |
4 | class TestSeason(unittest.TestCase):
5 | def test_get_schedule(self):
6 | df = get_schedule(1999)
7 | expected_columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME',
8 | 'HOME_PTS']
9 | self.assertListEqual(list(df.columns), expected_columns)
10 |
11 | def test_get_schedule_weird_season(self):
12 | for season in (1971, 1953):
13 | for use_playoffs in (True, False):
14 | cur_season = get_schedule(season, playoffs=use_playoffs)
15 | expected_columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME',
16 | 'HOME_PTS']
17 | self.assertListEqual(list(cur_season.columns), expected_columns)
18 |
19 | def test_get_standings(self):
20 | d = get_standings()
21 | self.assertListEqual(list(d.keys()), ['EASTERN_CONF', 'WESTERN_CONF'])
22 |
23 | df = d['WESTERN_CONF']
24 | expected_columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G']
25 | self.assertListEqual(list(df.columns), expected_columns)
26 |
27 | def test_get_standings_weird_season(self):
28 | for season in (1971, 1953):
29 | d = get_standings(season)
30 | self.assertListEqual(list(d.keys()), ['EASTERN_CONF', 'WESTERN_CONF'])
31 |
32 | df = d['WESTERN_CONF']
33 | expected_columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G']
34 | self.assertListEqual(list(df.columns), expected_columns)
35 |
36 | if __name__ == '__main__':
37 | unittest.main()
38 |
--------------------------------------------------------------------------------
/test/test_box_scores.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.box_scores import get_box_scores, get_all_star_box_score
3 |
4 | class TestBoxScores(unittest.TestCase):
5 | def test_get_box_scores(self):
6 | d = get_box_scores('2020-01-06', 'DEN', 'ATL')
7 | self.assertListEqual(list(d.keys()), ['DEN', 'ATL'])
8 |
9 | df = d['DEN']
10 | expected_columns = ['PLAYER', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', '+/-']
11 | self.assertListEqual(list(df.columns), expected_columns)
12 |
13 | def test_get_all_star_box_score(self):
14 | d = get_all_star_box_score(2020)
15 | df = d['Team LeBron']
16 | # they dont record +/- in ASG :(
17 | expected_columns = ['PLAYER', 'TEAM', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
18 | self.assertSetEqual(set(df.columns), set(expected_columns))
19 |
20 | # check for one of the dnp players
21 | self.assertTrue('Damian Lillard' in df['PLAYER'].values)
22 | # make sure his team is right
23 | self.assertTrue('POR' in df['TEAM'].values)
24 |
25 | d = get_all_star_box_score(2012)
26 | df = d['East']
27 | self.assertSetEqual(set(df.columns), set(expected_columns))
28 |
29 | d2 = get_all_star_box_score(1980)
30 | df = d2['East']
31 | # check uniqueness of all star names
32 | expected_players = ['George Gervin', 'Eddie Johnson', 'Moses Malone', 'Julius Erving', 'John Drew', 'Elvin Hayes', 'Dan Roundfield', 'Larry Bird', 'Tiny Archibald', 'Bill Cartwright', 'Micheal Ray Richardson', 'Dave Cowens']
33 | self.assertListEqual(expected_players, list(df['PLAYER'].values))
34 |
35 | if __name__ == '__main__':
36 | unittest.main()
37 |
--------------------------------------------------------------------------------
/examples.py:
--------------------------------------------------------------------------------
1 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc
2 |
3 | df = get_roster('GSW', 2019)
4 | print(df)
5 |
6 | s = get_team_stats('GSW', 2019, data_format='PER_GAME')
7 | print(s)
8 |
9 | s = get_opp_stats('GSW', 2019, data_format='PER_GAME')
10 | print(s)
11 |
12 | s = get_roster_stats('GSW', 2019, data_format='PER_GAME', playoffs=False)
13 | print(s)
14 |
15 | s = get_team_misc('GSW', 2019)
16 | print(s)
17 |
18 | from basketball_reference_scraper.players import get_stats, get_game_logs
19 |
20 | s = get_stats('Stephen Curry', stat_type='PER_GAME', playoffs=False, career=False)
21 | print(s)
22 |
23 | df = get_game_logs('LeBron James', 2010, playoffs=False)
24 | print(df)
25 |
26 | from basketball_reference_scraper.seasons import get_schedule, get_standings
27 |
28 | s = get_schedule(2018, playoffs=False)
29 | print(s)
30 |
31 | s = get_standings(date='2020-01-06')
32 | print(s)
33 |
34 | from basketball_reference_scraper.box_scores import get_box_scores
35 |
36 | s = get_box_scores('2020-01-13', 'CHI', 'BOS', period='GAME', stat_type='BASIC')
37 | print(s)
38 |
39 | from basketball_reference_scraper.pbp import get_pbp
40 |
41 | s = get_pbp('2020-01-13', 'CHI', 'BOS')
42 | print(s)
43 |
44 | from basketball_reference_scraper.shot_charts import get_shot_chart
45 |
46 | s = get_shot_chart('2020-01-13', 'CHI', 'BOS')
47 | print(s)
48 |
49 | from basketball_reference_scraper.injury_report import get_injury_report
50 |
51 | s = get_injury_report()
52 | print(s)
53 |
54 | from basketball_reference_scraper.players import get_game_logs, get_player_headshot
55 |
56 | df = get_game_logs('Pau Gasol', 2010, playoffs=False)
57 | print(df)
58 |
59 | url = get_player_headshot('Kobe Bryant')
60 | print(url)
61 |
62 | from basketball_reference_scraper.drafts import get_draft_class
63 |
64 | df = get_draft_class(2003)
65 | print(df)
66 |
--------------------------------------------------------------------------------
/test/test_players.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.players import get_stats, get_game_logs, get_player_headshot
3 |
4 | class TestPlayers(unittest.TestCase):
5 | def test_get_stats(self):
6 | expected_columns_season = ['SEASON', 'AGE', 'TEAM', 'LEAGUE', 'POS', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'AWARDS']
7 | expected_columns_playoffs = ['SEASON', 'AGE', 'TEAM', 'LEAGUE', 'POS', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
8 | df = get_stats('Joe Johnson')
9 | self.assertCountEqual(list(df.columns), expected_columns_season)
10 |
11 | df = get_stats('LaMarcus Aldridge')
12 | self.assertCountEqual(list(df.columns), expected_columns_season)
13 |
14 | df = get_stats('LaMarcus Aldridge', career=True)
15 | self.assertCountEqual(list(df.columns), expected_columns_season)
16 |
17 | df = get_stats('LaMarcus Aldridge', playoffs=True, career=True)
18 | self.assertCountEqual(list(df.columns), expected_columns_playoffs)
19 |
20 | def test_get_game_logs(self):
21 | expected_columns = ['DATE', 'AGE', 'TEAM', 'HOME/AWAY', 'OPPONENT', 'RESULT', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'GAME_SCORE', '+/-']
22 |
23 | df = get_game_logs('Stephen Curry', 2022)
24 | self.assertCountEqual(list(df.columns), expected_columns)
25 |
26 | df = get_game_logs('Pau Gasol', 2010, playoffs=False)
27 | self.assertEqual(len(df), 82)
28 |
29 | def test_get_player_headshot(self):
30 | expected_url = 'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/bryanko01.jpg'
31 | url = get_player_headshot('Kobe Bryant')
32 | self.assertEqual(url, expected_url)
33 |
34 |
35 | if __name__ == '__main__':
36 | unittest.main()
37 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/pbp.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from requests import get
3 | from bs4 import BeautifulSoup
4 | from datetime import datetime
5 |
6 | try:
7 | from utils import get_game_suffix
8 | from request_utils import get_wrapper
9 | except:
10 | from basketball_reference_scraper.utils import get_game_suffix
11 | from basketball_reference_scraper.request_utils import get_wrapper
12 |
13 | def get_pbp_helper(suffix):
14 | selector = f'#pbp'
15 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/pbp{suffix}')
16 | if r.status_code==200:
17 | soup = BeautifulSoup(r.content, 'html.parser')
18 | table = soup.find('table', attrs={'id': 'pbp'})
19 | return pd.read_html(str(table))[0]
20 | else:
21 | raise ConnectionError('Request to basketball reference failed')
22 |
23 | def format_df(df1):
24 | df1.columns = list(map(lambda x: x[1], list(df1.columns)))
25 | t1 = list(df1.columns)[1].upper()
26 | t2 = list(df1.columns)[5].upper()
27 | q = 1
28 | df = None
29 | for index, row in df1.iterrows():
30 | d = {'QUARTER': float('nan'), 'TIME_REMAINING': float('nan'), f'{t1}_ACTION': float('nan'), f'{t2}_ACTION': float('nan'), f'{t1}_SCORE': float('nan'), f'{t2}_SCORE': float('nan')}
31 | if row['Time']=='2nd Q':
32 | q = 2
33 | elif row['Time']=='3rd Q':
34 | q = 3
35 | elif row['Time']=='4th Q':
36 | q = 4
37 | elif 'OT' in row['Time']:
38 | q = row['Time'][0]+'OT'
39 | try:
40 | d['QUARTER'] = q
41 | d['TIME_REMAINING'] = row['Time']
42 | scores = row['Score'].split('-')
43 | d[f'{t1}_SCORE'] = int(scores[0])
44 | d[f'{t2}_SCORE'] = int(scores[1])
45 | d[f'{t1}_ACTION'] = row[list(df1.columns)[1]]
46 | d[f'{t2}_ACTION'] = row[list(df1.columns)[5]]
47 | if df is None:
48 | df = pd.DataFrame(columns = list(d.keys()))
49 | df = df.append(d, ignore_index=True)
50 | except:
51 | continue
52 | return df
53 |
54 | def get_pbp(date, team1, team2):
55 | date = pd.to_datetime(date)
56 | suffix = get_game_suffix(date, team1, team2).replace('/boxscores', '')
57 | df = get_pbp_helper(suffix)
58 | df = format_df(df)
59 | return df
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # basketball_reference_scraper
2 |
3 | [Basketball Reference](https://www.basketball-reference.com/) is a resource to aggregate statistics on NBA teams, seasons, players, and games. This package provides methods to acquire data for all these categories in pre-parsed and simplified formats.
4 |
5 | ## Installing
6 | ### Via `pip`
7 | I wrote this library as an exercise for creating my first PyPi package. Hopefully, you find it easy to use.
8 | Install using the following command:
9 |
10 | ```
11 | pip install basketball-reference-scraper
12 | ```
13 |
14 | ### Via GitHub
15 | Alternatively, you can just clone this repo and import the libraries at your own discretion.
16 |
17 | ### Selenium
18 |
19 | This package can also capture dynamically rendered content that is being added to the page via JavaScript, rather than baked into the HTML. To achieve this, it uses [Python Selenium](https://selenium-python.readthedocs.io/). Please refer to their [installation instructions](https://selenium-python.readthedocs.io/installation.html) and ensure you have [Chrome webdriver](https://selenium-python.readthedocs.io/installation.html#drivers) installed in and in your `PATH` variable.
20 |
21 | ## Wait, don't scrapers like this already exist?
22 |
23 | Yes, scrapers and APIs do exist. The primary API used currently is for [stats.nba.com](https://stats.nba.com/), but the website blocks too many requests, hindering those who want to acquire a lot of data. Additionally, scrapers for [Basketball Reference](https://www.basketball-reference.com/) do exist, but none of them load dynamically rendered content. These scrapers can only acquire statically loaded content, preventing those who want statistics in certain formats (for example, Player Advanced Stats Per Game).
24 |
25 | Most of the scrapers use outdated methodologies of scraping from `'https://widgets.sports-reference.com/'`. This is outdated and Basketball Reference no longer acquires their data from there. Additionally, [Sports Reference recently instituted a rate limiter](https://www.sports-reference.com/bot-traffic.html) preventing users from making an excess of 20 requests/minute. This package abstracts the waiting logic to ensure you never hit this threshold.
26 |
27 | ### API
28 | Currently, the package contains 5 modules: `teams`, `players`, `seasons`, `box_scores`, `pbp`, `shot_charts`, and `injury_report`.
29 | The package will be expanding to include other content as well, but this is a start.
30 |
31 | For full details on the API please refer to the [documentation](https://github.com/vishaalagartha/basketball_reference_scraper/blob/master/API.md).
32 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/shot_charts.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from requests import get
3 | from bs4 import BeautifulSoup
4 | from datetime import datetime
5 | import re
6 |
7 | try:
8 | from utils import get_game_suffix
9 | from request_utils import get_wrapper
10 | except:
11 | from basketball_reference_scraper.utils import get_game_suffix
12 | from basketball_reference_scraper.request_utils import get_wrapper
13 |
14 | def get_location(s):
15 | l = s.split(';')
16 | top = float(l[0][l[0].index(':')+1:l[0].index('px')])
17 | left = float(l[1][l[1].index(':')+1:l[1].index('px')])
18 | x = left/500.0*50
19 | y = top/472.0*(94/2)
20 | return {'x': str(x)[:4] + ' ft', 'y': str(y)[:4] + ' ft'}
21 |
22 | def get_description(s):
23 | match = re.match(r'(\d)[a-z]{2} quarter, (\S*) remaining
(.*) \b(missed|made) (\d)-pointer from (\d*) ft', s)
24 | d = {}
25 | if match:
26 | groups = match.groups()
27 | d['QUARTER'] = int(groups[0])
28 | d['TIME_REMAINING'] = groups[1]
29 | d['PLAYER'] = groups[2]
30 | d['MAKE_MISS'] = 'MAKE' if groups[3]=='made' else 'MISS'
31 | d['VALUE'] = int(groups[4])
32 | d['DISTANCE'] = groups[5] + ' ft'
33 | return d
34 |
35 |
36 | def get_shot_chart(date, team1, team2):
37 | date = pd.to_datetime(date)
38 | suffix = get_game_suffix(date, team1, team2).replace('/boxscores', '')
39 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/shot-chart{suffix}')
40 | if r.status_code==200:
41 | soup = BeautifulSoup(r.content, 'html.parser')
42 | shot_chart1_div = soup.find('div', attrs={'id': f'shots-{team1}'})
43 | shot_chart2_div = soup.find('div', attrs={'id': f'shots-{team2}'})
44 | df1 = pd.DataFrame()
45 | for div in shot_chart1_div.find_all('div'):
46 | if 'style' not in div.attrs or 'tip' not in div.attrs:
47 | continue
48 | location = get_location(div.attrs['style'])
49 | description = get_description(div.attrs['tip'])
50 | shot_d = {**location, **description}
51 | shot_df = pd.DataFrame.from_dict([shot_d])
52 | df1 = df1.append(shot_df)
53 | df1 = df1.reset_index()
54 | df1 = df1.drop('index', axis=1)
55 | df2 = pd.DataFrame()
56 | for div in shot_chart2_div.find_all('div'):
57 | if 'style' not in div.attrs or 'tip' not in div.attrs:
58 | continue
59 | location = get_location(div.attrs['style'])
60 | description = get_description(div.attrs['tip'])
61 | shot_d = {**location, **description}
62 | shot_df = pd.DataFrame.from_dict([shot_d])
63 | df2 = df2.append(shot_df)
64 | df2 = df2.reset_index()
65 | df2 = df2.drop('index', axis=1)
66 |
67 | return {f'{team1}': df1, f'{team2}': df2}
68 | else:
69 | raise ConnectionError('Request to basketball reference failed')
70 |
--------------------------------------------------------------------------------
/test/test_teams.py:
--------------------------------------------------------------------------------
1 | import unittest
2 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc, get_team_ratings
3 |
4 | class TestTeams(unittest.TestCase):
5 | def test_get_roster(self):
6 | df = get_roster('GSW', 2019)
7 | curry_df = df[df['PLAYER']=='Stephen Curry']
8 | self.assertEqual(len(curry_df), 1)
9 |
10 | expected_columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT',
11 | 'BIRTH_DATE', 'NATIONALITY', 'EXPERIENCE', 'COLLEGE']
12 |
13 | self.assertListEqual(list(df.columns), expected_columns)
14 |
15 | def test_get_roster_on_missing_nationality(self):
16 | df = get_roster('FTW', 1956)
17 |
18 | expected_columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT',
19 | 'BIRTH_DATE', 'NATIONALITY', 'EXPERIENCE', 'COLLEGE']
20 |
21 | self.assertListEqual(list(df.columns), expected_columns)
22 |
23 | def get_team_stats(self):
24 | series = get_team_stats('GSW', 2019)
25 | expected_indices = ['G', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
26 | self.assertCountEqual(list(series.index), expected_indices)
27 |
28 | def get_opp_stats(self):
29 | series = get_opp_stats('GSW', 2019)
30 | expected_indices = ['OPP_G', 'OPP_MP', 'OPP_FG', 'OPP_FGA', 'OPP_FG%', 'OPP_3P', 'OPP_3PA', 'OPP_3P%', 'OPP_2P', 'OPP_2PA', 'OPP_2P%', 'OPP_FT', 'OPP_FTA', 'OPP_FT%', 'OPP_ORB', 'OPP_DRB', 'OPP_TRB', 'OPP_AST', 'OPP_STL', 'OPP_BLK', 'OPP_TOV', 'OPP_PF', 'OPP_PTS']
31 | self.assertCountEqual(list(series.index), expected_indices)
32 |
33 | def test_get_roster_stats(self):
34 | df = get_roster_stats('GSW', 2019)
35 | expected_columns = ['PLAYER', 'AGE', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
36 | self.assertCountEqual(list(df.columns), expected_columns)
37 |
38 | def test_get_team_misc(self):
39 | series = get_team_misc('GSW', 2019)
40 | expected_indices = ['W', 'L', 'PW', 'PL', 'MOV', 'SOS', 'SRS', 'ORtg', 'DRtg', 'Pace', 'FTr', '3PAr', 'eFG%', 'TOV%', 'ORB%', 'FT/FGA', 'eFG%', 'TOV%', 'DRB%', 'FT/FGA', 'ARENA', 'ATTENDANCE']
41 | self.assertCountEqual(list(series.index), expected_indices)
42 |
43 | series = get_team_misc('CHO', 2019)
44 | self.assertCountEqual(list(series.index), expected_indices)
45 |
46 | series = get_team_misc('NOK', 2007)
47 | self.assertCountEqual(list(series.index), expected_indices)
48 |
49 | def test_get_team_ratings(self):
50 | expected_columns = ['RK', 'SEASON', 'TEAM', 'CONF', 'DIV', 'W', 'L', 'W/L%', 'MOV', 'ORTG', 'DRTG', 'NRTG', 'MOV/A', 'ORTG/A', 'DRTG/A', 'NRTG/A']
51 |
52 | df = get_team_ratings(2019, ['BOS', 'GSW', 'DAL'])
53 | self.assertCountEqual(list(df.columns), expected_columns)
54 | self.assertEqual(len(df), 3)
55 |
56 | df = get_team_ratings(2024)
57 | self.assertCountEqual(list(df.columns), expected_columns)
58 | self.assertEqual(len(df), 30)
59 |
60 | if __name__ == '__main__':
61 | unittest.main()
62 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/lookup.py:
--------------------------------------------------------------------------------
1 | import unidecode, os, sys, unicodedata
2 |
3 | """
4 | Bounded levenshtein algorithm credited to user amirouche on stackoverflow.
5 | Implementation borrowed from https://stackoverflow.com/questions/59686989/levenshtein-distance-with-bound-limit
6 | """
7 | def levenshtein(s1, s2, maximum):
8 | if len(s1) > len(s2):
9 | s1, s2 = s2, s1
10 |
11 | distances = range(len(s1) + 1)
12 | for i2, c2 in enumerate(s2):
13 | distances_ = [i2+1]
14 | for i1, c1 in enumerate(s1):
15 | if c1 == c2:
16 | distances_.append(distances[i1])
17 | else:
18 | distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))
19 | if all((x >= maximum for x in distances_)):
20 | return -1
21 | distances = distances_
22 | return distances[-1]
23 |
24 | """
25 | User input is normalized/anglicized, then assigned a levenshtein score to
26 | find the closest matches. If an identical and unique match is found, it is
27 | returned. If many matches are found, either identical or distanced, all
28 | are returned for final user approval.
29 | """
30 | def lookup(player, ask_matches = True):
31 | path = os.path.join(os.path.dirname(__file__), 'br_names.txt')
32 | normalized = unidecode.unidecode(player)
33 | matches = []
34 |
35 | with open(path) as file:
36 | Lines = file.readlines()
37 | for line in Lines:
38 | """
39 | A bound of 5 units of levenshtein distance is selected to
40 | account for possible misspellings or lingering non-unidecoded
41 | characters.
42 | """
43 | dist = levenshtein(normalized.lower(), line[:-1].lower(), 5)
44 | if dist >= 0:
45 | matches += [(line[:-1], dist)]
46 |
47 | """
48 | If one match is found, return that one;
49 | otherwise, return list of likely candidates and allow
50 | the user to confirm specifiy their selection.
51 | """
52 | if len(matches) == 1 or ask_matches == False:
53 | matches.sort(key=lambda tup: tup[1])
54 | if ask_matches:
55 | print("You searched for \"{}\"\n{} result found.\n{}".format(player, len(matches), matches[0][0]))
56 | print("Results for {}:\n".format(matches[0][0]))
57 | return matches[0][0]
58 |
59 | elif len(matches) > 1:
60 | print("You searched for \"{}\"\n{} results found.".format(player, len(matches)))
61 | matches.sort(key=lambda tup: tup[1])
62 | i = 0
63 | return matches[0][0]
64 | for match in matches:
65 | print("{}: {}".format(i, match[0]))
66 | i += 1
67 |
68 | selection = int(input("Pick one: "))
69 | print("Results for {}:\n".format(matches[selection][0]))
70 | return matches[selection][0]
71 |
72 | elif len(matches) < 1:
73 | print("You searched for \"{}\"\n{} results found.".format(player, len(matches)))
74 | return ""
75 |
76 | else:
77 | print("You searched for \"{}\"\n{} result found.\n{}".format(player, len(matches), matches[0][0]))
78 | print("Results for {}:\n".format(matches[0][0]))
79 | return matches[0][0]
80 |
81 | return ""
82 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/constants.py:
--------------------------------------------------------------------------------
1 | TEAM_TO_TEAM_ABBR = {
2 | 'ATLANTA HAWKS': 'ATL',
3 | 'ST. LOUIS HAWKS': 'SLH',
4 | 'MILWAUKEE HAWKS': 'MIL',
5 | 'TRI-CITIES BLACKHAWKS': 'TCB',
6 | 'BOSTON CELTICS': 'BOS',
7 | 'BROOKLYN NETS': 'BRK',
8 | 'NEW JERSEY NETS' : 'NJN',
9 | 'NEW YORK NETS' : 'NYN',
10 | 'CHICAGO BULLS': 'CHI',
11 | 'CHARLOTTE HORNETS': 'CHO',
12 | 'CHARLOTTE BOBCATS' : 'CHA',
13 | 'CLEVELAND CAVALIERS': 'CLE',
14 | 'DALLAS MAVERICKS': 'DAL',
15 | 'DENVER NUGGETS': 'DEN',
16 | 'DETROIT PISTONS': 'DET',
17 | 'FORT WAYNE PISTONS': 'FWP',
18 | 'GOLDEN STATE WARRIORS': 'GSW',
19 | 'SAN FRANCISCO WARRIORS': 'SFW',
20 | 'PHILADELPHIA WARRIORS': 'PHI',
21 | 'HOUSTON ROCKETS': 'HOU',
22 | 'SAN DIEGO ROCKETS': 'HOU',
23 | 'INDIANA PACERS': 'IND',
24 | 'LOS ANGELES CLIPPERS': 'LAC',
25 | 'SAN DIEGO CLIPPERS': 'SDC',
26 | 'BUFFALO BRAVES': 'BUF',
27 | 'LOS ANGELES LAKERS': 'LAL',
28 | 'MINNEAPOLIS LAKERS': 'MIN',
29 | 'MEMPHIS GRIZZLIES': 'MEM',
30 | 'VANCOUVER GRIZZLIES' : 'VAN',
31 | 'MIAMI HEAT': 'MIA',
32 | 'MILWAUKEE BUCKS': 'MIL',
33 | 'MINNESOTA TIMBERWOLVES': 'MIN',
34 | 'NEW ORLEANS PELICANS' : 'NOP',
35 | 'NEW ORLEANS/OKLAHOMA CITY HORNETS' : 'NOK',
36 | 'NEW ORLEANS HORNETS' : 'NOH',
37 | 'NEW YORK KNICKS' : 'NYK',
38 | 'OKLAHOMA CITY THUNDER' : 'OKC',
39 | 'SEATTLE SUPERSONICS' : 'SEA',
40 | 'ORLANDO MAGIC' : 'ORL',
41 | 'PHILADELPHIA 76ERS' : 'PHI',
42 | 'SYRACUSE NATIONALS' : 'SYR',
43 | 'PHOENIX SUNS' : 'PHO',
44 | 'PORTLAND TRAIL BLAZERS' : 'POR',
45 | 'SACRAMENTO KINGS' : 'SAC',
46 | 'KANSAS CITY KINGS' : 'KCK',
47 | 'KANSAS CITY-OMAHA KINGS' : 'KCK',
48 | 'CINCINNATI ROYALS' : 'CIN',
49 | 'ROCHESTER ROYALS': 'ROR',
50 | 'SAN ANTONIO SPURS' : 'SAS',
51 | 'TORONTO RAPTORS' : 'TOR',
52 | 'UTAH JAZZ' : 'UTA',
53 | 'NEW ORLEANS JAZZ' : 'NOJ',
54 | 'WASHINGTON WIZARDS' : 'WAS',
55 | 'WASHINGTON BULLETS' : 'WAS',
56 | 'CAPITAL BULLETS' : 'CAP',
57 | 'BALTIMORE BULLETS' : 'BAL',
58 | 'CHICAGO ZEPHYRS' : 'CHI',
59 | 'CHICAGO PACKERS' : 'CHI',
60 |
61 | # DEFUNCT FRANCHISES
62 | 'ANDERSON PACKERS': 'AND',
63 | 'CHICAGO STAGS': 'CHI',
64 | 'INDIANAPOLIS OLYMPIANS': 'IND',
65 | 'SHEBOYGAN RED SKINS': 'SRS',
66 | 'ST. LOUIS BOMBERS': 'SLB',
67 | 'WASHINGTON CAPITOLS' : 'WAS',
68 | 'WATERLOO HAWKS': 'WAT',
69 | }
70 | TEAM_SETS = [['STL', 'TRI', 'MLH', 'ATL'],
71 | ['BOS'],
72 | ['NJN', 'BRK', 'NYN', 'NJA', 'NYA'],
73 | ['CHO', 'CHA', 'CHH'],
74 | ['CHI'],
75 | ['CLE'],
76 | ['DAL'],
77 | ['DEN', 'DNR', 'DNA'],
78 | ['DET', 'FTW'],
79 | ['GSW', 'SFW', 'PHW'],
80 | ['SDR', 'HOU'],
81 | ['INA', 'IND'],
82 | ['SDC', 'LAC', 'BUF'],
83 | ['LAL', 'MNL'],
84 | ['MEM', 'VAN'],
85 | ['MIA'],
86 | ['MIL'],
87 | ['MIN'],
88 | ['NOP', 'NOH', 'NOK'],
89 | ['NYK'],
90 | ['SEA', 'OKC'],
91 | ['ORL'],
92 | ['PHI', 'SYR'],
93 | ['PHO'],
94 | ['POR'],
95 | ['CIN', 'SAC', 'KCO', 'KCK', 'ROC'],
96 | ['DLC', 'SAA', 'SAS', 'TEX'],
97 | ['TOR'],
98 | ['NOJ', 'UTA'],
99 | ['WSB', 'CHP', 'CAP', 'BAL', 'WAS', 'CHZ']]
100 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/seasons.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from datetime import datetime
3 | from bs4 import BeautifulSoup
4 |
5 | try:
6 | from request_utils import get_wrapper
7 | except:
8 | from basketball_reference_scraper.request_utils import get_wrapper
9 |
10 |
11 | def get_schedule(season, playoffs=False):
12 | months = ['October', 'November', 'December', 'January', 'February', 'March',
13 | 'April', 'May', 'June']
14 | if season==2020:
15 | months = ['October-2019', 'November', 'December', 'January', 'February', 'March',
16 | 'July', 'August', 'September', 'October-2020']
17 | df = pd.DataFrame()
18 | for month in months:
19 | r = get_wrapper(f'https://www.basketball-reference.com/leagues/NBA_{season}_games-{month.lower()}.html')
20 | if r.status_code==200:
21 | soup = BeautifulSoup(r.content, 'html.parser')
22 | table = soup.find('table', attrs={'id': 'schedule'})
23 | if table:
24 | month_df = pd.read_html(str(table))[0]
25 | df = pd.concat([df, month_df])
26 |
27 | df = df.reset_index()
28 |
29 | cols_to_remove = [i for i in df.columns if 'Unnamed' in i]
30 | cols_to_remove += [i for i in df.columns if 'Notes' in i]
31 | cols_to_remove += [i for i in df.columns if 'Start' in i]
32 | cols_to_remove += [i for i in df.columns if 'Attend' in i]
33 | cols_to_remove += [i for i in df.columns if 'Arena' in i]
34 | cols_to_remove += ['index']
35 | df = df.drop(cols_to_remove, axis=1)
36 | df.columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 'HOME_PTS']
37 |
38 | if season==2020:
39 | df = df[df['DATE']!='Playoffs']
40 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x))
41 | df = df.sort_values(by='DATE')
42 | df = df.reset_index().drop('index', axis=1)
43 | playoff_loc = df[df['DATE']==pd.to_datetime('2020-08-17')].head(n=1)
44 | if len(playoff_loc.index)>0:
45 | playoff_index = playoff_loc.index[0]
46 | else:
47 | playoff_index = len(df)
48 | if playoffs:
49 | df = df[playoff_index:]
50 | else:
51 | df = df[:playoff_index]
52 | else:
53 | # account for 1953 season where there's more than one "playoffs" header
54 | if season == 1953:
55 | df.drop_duplicates(subset=['DATE', 'HOME', 'VISITOR'], inplace=True)
56 | playoff_loc = df[df['DATE']=='Playoffs']
57 | if len(playoff_loc.index)>0:
58 | playoff_index = playoff_loc.index[0]
59 | else:
60 | playoff_index = len(df)
61 | if playoffs:
62 | df = df[playoff_index+1:]
63 | else:
64 | df = df[:playoff_index]
65 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x))
66 | return df
67 |
68 | def get_standings(date=None):
69 | if date is None:
70 | date = datetime.now()
71 | else:
72 | date = pd.to_datetime(date)
73 | d = {}
74 | r = get_wrapper(f'https://www.basketball-reference.com/friv/standings.fcgi?month={date.month}&day={date.day}&year={date.year}')
75 | if r.status_code==200:
76 | soup = BeautifulSoup(r.content, 'html.parser')
77 | e_table = soup.find('table', attrs={'id': 'standings_e'})
78 | w_table = soup.find('table', attrs={'id': 'standings_w'})
79 | e_df = pd.DataFrame(columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G'])
80 | w_df = pd.DataFrame(columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G'])
81 | if e_table and w_table:
82 | e_df = pd.read_html(str(e_table))[0]
83 | w_df = pd.read_html(str(w_table))[0]
84 | e_df.rename(columns={'Eastern Conference': 'TEAM'}, inplace=True)
85 | w_df.rename(columns={'Western Conference': 'TEAM'}, inplace=True)
86 | d['EASTERN_CONF'] = e_df
87 | d['WESTERN_CONF'] = w_df
88 | return d
89 | else:
90 | raise ConnectionError('Request to basketball reference failed')
91 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/box_scores.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from requests import get
3 | from bs4 import BeautifulSoup
4 | from datetime import datetime
5 | from unidecode import unidecode
6 | import re
7 |
8 | try:
9 | from utils import get_game_suffix, remove_accents
10 | from players import get_stats
11 | from request_utils import get_wrapper
12 | except:
13 | from basketball_reference_scraper.utils import get_game_suffix, remove_accents
14 | from basketball_reference_scraper.players import get_stats
15 | from basketball_reference_scraper.request_utils import get_wrapper
16 |
17 | def get_box_scores(date, team1, team2, period='GAME', stat_type='BASIC'):
18 | """
19 | Get the box scores for a given game between two teams on a given date.
20 |
21 | Args:
22 | date (str): The date of the game in 'YYYY-MM-DD' format.
23 | team1 (str): The abbreviation of the first team.
24 | team2 (str): The abbreviation of the second team.
25 | period (str, optional): The period of the game to retrieve stats for. Defaults to 'GAME'.
26 | stat_type (str, optional): The type of stats to retrieve. Must be 'BASIC' or 'ADVANCED'. Defaults to 'BASIC'.
27 |
28 | Returns:
29 | dict: A dictionary containing the box scores for both teams.
30 | """
31 | if stat_type not in ['BASIC', 'ADVANCED']:
32 | raise ValueError('stat_type must be "BASIC" or "ADVANCED"')
33 | date = pd.to_datetime(date)
34 | suffix = get_game_suffix(date, team1, team2)
35 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}')
36 | if r.status_code == 200:
37 | dfs = []
38 | if period == 'GAME':
39 | if stat_type == 'ADVANCED':
40 | selectors = [f'box-{team1}-game-advanced', f'box-{team2}-game-advanced']
41 | else:
42 | selectors = [f'box-{team1}-game-basic', f'box-{team2}-game-basic']
43 | else:
44 | selectors = [f'box-{team1}-{period.lower()}-basic', f'box-{period.lower()}-game-basic']
45 | soup = BeautifulSoup(r.content, 'html.parser')
46 | for selector in selectors:
47 | table = soup.find('table', { 'id': selector })
48 | raw_df = pd.read_html(str(table))[0]
49 | df = _process_box(raw_df)
50 | if team1 in selector:
51 | df['PLAYER'] = df['PLAYER'].apply(lambda name: remove_accents(name, team1, date.year))
52 | if team2 in selector:
53 | df['PLAYER'] = df['PLAYER'].apply(lambda name: remove_accents(name, team2, date.year))
54 | dfs.append(df)
55 | return {team1: dfs[0], team2: dfs[1]}
56 | else:
57 | raise ConnectionError('Request to basketball reference failed')
58 |
59 | def _process_box(df):
60 | """ Perform basic processing on a box score - common to both methods
61 |
62 | Args:
63 | df (DataFrame): the raw box score df
64 |
65 | Returns:
66 | DataFrame: processed box score
67 | """
68 | df.columns = list(map(lambda x: x[1], list(df.columns)))
69 | df.rename(columns = {'Starters': 'PLAYER'}, inplace=True)
70 | if 'Tm' in df:
71 | df.rename(columns = {'Tm': 'TEAM'}, inplace=True)
72 | reserve_index = df[df['PLAYER']=='Reserves'].index[0]
73 | df = df.drop(reserve_index).reset_index().drop('index', axis=1)
74 | return df
75 |
76 |
77 |
78 | def get_all_star_box_score(year: int):
79 | """ Returns box star for all star game in a given year
80 |
81 | Args:
82 | year (int): the year of the all star game
83 |
84 | Raises:
85 | ValueError: if invalid year is intered
86 | ConnectionError: when server cannot be reached
87 |
88 | Returns:
89 | dict: dictionary containing entries (team name, box score dataframe) for each team
90 | """
91 | if year >= datetime.now().year or year < 1951:
92 | raise ValueError('Please enter a valid year')
93 | r = get_wrapper(f'https://www.basketball-reference.com/allstar/NBA_{year}.html')
94 | if r.status_code == 200:
95 | dfs = []
96 | soup = BeautifulSoup(r.content, 'html.parser')
97 | team_names = list(map(lambda el: el.text, soup.select('div.section_heading > h2')[1:3]))
98 | for table in soup.find_all('table')[1:3]:
99 | raw_df = pd.read_html(str(table))[0]
100 | df = _process_box(raw_df)
101 | #drop team totals row (always last), totals row
102 | totals_index = df[df['MP'] == 'Totals'].index[0]
103 | df = df.drop(totals_index).reset_index().drop('index', axis=1)
104 | df = df.drop(df.tail(1).index).reset_index().drop('index', axis=1)
105 | df['PLAYER'] = df['PLAYER'].apply(lambda x: unidecode(x))
106 | dfs.append(df)
107 | res = {team_names[0]: dfs[0], team_names[1]: dfs[1]}
108 | # add DNPs for all-star roster purposes
109 | # the all-star team each dnp is on is in parens. for some reasons this captures parens
110 | dnp_allstar_teams = re.findall(r'\((.*?)\)', soup.select('ul.page_index > li > div')[0].text)
111 | for i, dnp in enumerate(map(lambda el: el.text, soup.select('ul.page_index > li > div > a'))):
112 | # check if the player is already in the dataframe because sometimes replacements are
113 | # listed twice (e.g. 1980)
114 | as_team = dnp_allstar_teams[i]
115 | if dnp not in res[as_team]['PLAYER'].values:
116 | # infer the added player's real team
117 | stats_df = get_stats(dnp, ask_matches=False)
118 | team = stats_df[stats_df['SEASON'] == f'{year-1}-{str(year)[-2:]}'].head(1)['TEAM'].values[0]
119 | new_row = {'PLAYER': dnp, 'TEAM': team}
120 | # set players allstar team from regexp
121 | res[as_team] = res[as_team].append(new_row, ignore_index=True)
122 | return res
123 | else:
124 | raise ConnectionError('Request to basketball reference failed')
--------------------------------------------------------------------------------
/basketball_reference_scraper/utils.py:
--------------------------------------------------------------------------------
1 | from requests import get
2 | from bs4 import BeautifulSoup
3 | import pandas as pd
4 | import unicodedata, unidecode
5 |
6 | try:
7 | from request_utils import get_wrapper
8 | except:
9 | from basketball_reference_scraper.request_utils import get_wrapper
10 |
11 | def get_game_suffix(date, team1, team2):
12 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/?month={date.month}&year={date.year}&day={date.day}')
13 | if r.status_code==200:
14 | soup = BeautifulSoup(r.content, 'html.parser')
15 | for table in soup.find_all('table', attrs={'class': 'teams'}):
16 | for anchor in table.find_all('a'):
17 | if 'boxscores' in anchor.attrs['href']:
18 | if team1 in str(anchor.attrs['href']) or team2 in str(anchor.attrs['href']):
19 | suffix = anchor.attrs['href']
20 | return suffix
21 | """
22 | Helper function for inplace creation of suffixes--necessary in order
23 | to fetch rookies and other players who aren't in the /players
24 | catalogue. Added functionality so that players with abbreviated names
25 | can still have a suffix created.
26 | """
27 | def create_last_name_part_of_suffix(potential_last_names):
28 | last_names = ''.join(potential_last_names)
29 | if len(last_names) <= 5:
30 | return last_names[:].lower()
31 | else:
32 | return last_names[:5].lower()
33 |
34 | """
35 | Amended version of the original suffix function--it now creates all
36 | suffixes in place.
37 |
38 | Since basketball reference standardizes URL codes, it is much more efficient
39 | to create them locally and compare names to the page results. The maximum
40 | amount of times a player code repeats is 5, but only 2 players have this
41 | problem--meaning most player URLs are correctly accessed within 1 to 2
42 | iterations of the while loop below.
43 |
44 | Added unidecode to make normalizing incoming string characters more
45 | consistent.
46 |
47 | This implementation dropped player lookup fail count from 306 to 35 to 0.
48 | """
49 | def get_player_suffix(name):
50 | normalized_name = unidecode.unidecode(unicodedata.normalize('NFD', name).encode('ascii', 'ignore').decode("utf-8"))
51 | if normalized_name == 'Metta World Peace' :
52 | suffix = '/players/a/artesro01.html'
53 | else:
54 | split_normalized_name = normalized_name.split(' ')
55 | if len(split_normalized_name) < 2:
56 | return None
57 | initial = normalized_name.split(' ')[1][0].lower()
58 | all_names = name.split(' ')
59 | first_name_part = unidecode.unidecode(all_names[0][:2].lower())
60 | first_name = all_names[0]
61 | other_names = all_names[1:]
62 | other_names_search = other_names
63 | last_name_part = create_last_name_part_of_suffix(other_names)
64 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html'
65 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}')
66 | while player_r.status_code == 404:
67 | other_names_search.pop(0)
68 | last_name_part = create_last_name_part_of_suffix(other_names_search)
69 | initial = last_name_part[0].lower()
70 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html'
71 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}')
72 | while player_r.status_code==200:
73 | player_soup = BeautifulSoup(player_r.content, 'html.parser')
74 | h1 = player_soup.find('h1')
75 | if h1:
76 | page_name = h1.find('span').text
77 | """
78 | Test if the URL we constructed matches the
79 | name of the player on that page; if it does,
80 | return suffix, if not add 1 to the numbering
81 | and recheck.
82 | """
83 | if ((unidecode.unidecode(page_name)).lower() == normalized_name.lower()):
84 | return suffix
85 | else:
86 | page_names = unidecode.unidecode(page_name).lower().split(' ')
87 | page_first_name = page_names[0]
88 | if first_name.lower() == page_first_name.lower():
89 | return suffix
90 | # if players have same first two letters of last name then just
91 | # increment suffix
92 | elif first_name.lower()[:2] == page_first_name.lower()[:2]:
93 | player_number = int(''.join(c for c in suffix if c.isdigit())) + 1
94 | if player_number < 10:
95 | player_number = f"0{str(player_number)}"
96 | suffix = f"/players/{initial}/{last_name_part}{first_name_part}{player_number}.html"
97 | else:
98 | other_names_search.pop(0)
99 | last_name_part = create_last_name_part_of_suffix(other_names_search)
100 | initial = last_name_part[0].lower()
101 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html'
102 |
103 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}')
104 |
105 | return None
106 |
107 |
108 | def remove_accents(name, team, season_end_year):
109 | alphabet = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY ')
110 | if len(set(name).difference(alphabet))==0:
111 | return name
112 | r = get_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html')
113 | team_df = None
114 | best_match = name
115 | if r.status_code==200:
116 | soup = BeautifulSoup(r.content, 'html.parser')
117 | table = soup.find('table')
118 | team_df = pd.read_html(str(table))[0]
119 | max_matches = 0
120 | for p in team_df['Player']:
121 | matches = sum(l1 == l2 for l1, l2 in zip(p, name))
122 | if matches>max_matches:
123 | max_matches = matches
124 | best_match = p
125 | return best_match
126 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/players.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from requests import get
3 | from bs4 import BeautifulSoup
4 |
5 | try:
6 | from utils import get_player_suffix
7 | from lookup import lookup
8 | from request_utils import get_wrapper, get_selenium_wrapper
9 | except:
10 | from basketball_reference_scraper.utils import get_player_suffix
11 | from basketball_reference_scraper.request_utils import get_wrapper, get_selenium_wrapper
12 | from basketball_reference_scraper.lookup import lookup
13 |
14 | def get_stats(_name, stat_type='PER_GAME', playoffs=False, career=False, ask_matches = True):
15 | name = lookup(_name, ask_matches)
16 | suffix = get_player_suffix(name)
17 | if not suffix:
18 | return pd.DataFrame()
19 | stat_type = stat_type.lower()
20 | table = None
21 | if stat_type in ['per_game', 'totals', 'advanced'] and not playoffs:
22 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}')
23 | if r.status_code == 200:
24 | soup = BeautifulSoup(r.content, 'html.parser')
25 | table = soup.find('table', { 'id': stat_type })
26 | table = str(table)
27 | else:
28 | raise ConnectionError('Request to basketball reference failed')
29 | elif stat_type in ['per_minute', 'per_poss'] or playoffs:
30 | if playoffs:
31 | xpath = f"//table[@id='playoffs_{stat_type}']"
32 | else:
33 | xpath = f"//table[@id='{stat_type}']"
34 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/{suffix}', xpath)
35 | if table is None:
36 | return pd.DataFrame()
37 | df = pd.read_html(table)[0]
38 | df.rename(columns={'Season': 'SEASON', 'Age': 'AGE',
39 | 'Tm': 'TEAM', 'Lg': 'LEAGUE', 'Pos': 'POS', 'Awards': 'AWARDS'}, inplace=True)
40 | if 'FG.1' in df.columns:
41 | df.rename(columns={'FG.1': 'FG%'}, inplace=True)
42 | if 'eFG' in df.columns:
43 | df.rename(columns={'eFG': 'eFG%'}, inplace=True)
44 | if 'FT.1' in df.columns:
45 | df.rename(columns={'FT.1': 'FT%'}, inplace=True)
46 |
47 | career_index = df[df['SEASON']=='Career'].index[0]
48 | if career:
49 | df = df.iloc[career_index+2:, :]
50 | else:
51 | df = df.iloc[:career_index, :]
52 |
53 | df = df.reset_index().drop('index', axis=1)
54 | return df
55 |
56 |
57 | def get_game_logs(_name, year, playoffs=False, ask_matches=True):
58 | name = lookup(_name, ask_matches)
59 | suffix = get_player_suffix(name).replace('.html', '')
60 | if playoffs:
61 | selector = 'pgl_basic_playoffs'
62 | url = f'https://www.basketball-reference.com/{suffix}/gamelog-playoffs'
63 | else:
64 | selector = 'pgl_basic'
65 | url = f'https://www.basketball-reference.com/{suffix}/gamelog/{year}'
66 | r = get_wrapper(url)
67 | if r.status_code == 200:
68 | soup = BeautifulSoup(r.content, 'html.parser')
69 | table = soup.find('table', { 'id': selector })
70 | df = pd.read_html(str(table))[0]
71 | df.rename(columns = {'Date': 'DATE', 'Age': 'AGE', 'Tm': 'TEAM', 'Unnamed: 5': 'HOME/AWAY', 'Opp': 'OPPONENT',
72 | 'Unnamed: 7': 'RESULT', 'GmSc': 'GAME_SCORE', 'Series': 'SERIES' }, inplace=True)
73 | df['HOME/AWAY'] = df['HOME/AWAY'].apply(lambda x: 'AWAY' if x=='@' else 'HOME')
74 | df = df[df['Rk']!='Rk']
75 | df = df.drop(['Rk', 'G'], axis=1).reset_index(drop=True)
76 | if not playoffs:
77 | df['DATE'] = pd.to_datetime(df['DATE'])
78 | return df
79 | else:
80 | raise ConnectionError('Request to basketball reference failed')
81 |
82 | def get_player_headshot(_name, ask_matches=True):
83 | name = lookup(_name, ask_matches)
84 | suffix = get_player_suffix(name)
85 | jpg = suffix.split('/')[-1].replace('html', 'jpg')
86 | url = 'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/'+jpg
87 | return url
88 |
89 | def get_player_splits(_name, season_end_year, stat_type='PER_GAME', ask_matches=True):
90 | name = lookup(_name, ask_matches)
91 | suffix = get_player_suffix(name)[:-5]
92 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}/splits/{season_end_year}')
93 | if r.status_code==200:
94 | soup = BeautifulSoup(r.content, 'html.parser')
95 | table = soup.find('table')
96 | if table:
97 | df = pd.read_html(str(table))[0]
98 | for i in range(1, len(df['Unnamed: 0_level_0','Split'])):
99 | if isinstance(df['Unnamed: 0_level_0','Split'][i], float):
100 | df['Unnamed: 0_level_0','Split'][i] = df['Unnamed: 0_level_0','Split'][i-1]
101 | df = df[~df['Unnamed: 1_level_0','Value'].str.contains('Total|Value')]
102 |
103 | headers = df.iloc[:,:2]
104 | headers = headers.droplevel(0, axis=1)
105 |
106 | if stat_type.lower() in ['per_game', 'shooting', 'advanced', 'totals']:
107 | if stat_type.lower() == 'per_game':
108 | df = df['Per Game']
109 | df['Split'] = headers['Split']
110 | df['Value'] = headers['Value']
111 | cols = df.columns.tolist()
112 | cols = cols[-2:] + cols[:-2]
113 | df = df[cols]
114 | return df
115 | elif stat_type.lower() == 'shooting':
116 | df = df['Shooting']
117 | df['Split'] = headers['Split']
118 | df['Value'] = headers['Value']
119 | cols = df.columns.tolist()
120 | cols = cols[-2:] + cols[:-2]
121 | df = df[cols]
122 | return df
123 |
124 | elif stat_type.lower() == 'advanced':
125 | df = df['Advanced']
126 | df['Split'] = headers['Split']
127 | df['Value'] = headers['Value']
128 | cols = df.columns.tolist()
129 | cols = cols[-2:] + cols[:-2]
130 | df = df[cols]
131 | return df
132 | elif stat_type.lower() == 'totals':
133 | df = df['Totals']
134 | df['Split'] = headers['Split']
135 | df['Value'] = headers['Value']
136 | cols = df.columns.tolist()
137 | cols = cols[-2:] + cols[:-2]
138 | df = df[cols]
139 | return df
140 | else:
141 | raise Exception('The "stat_type" you entered does not exist. The following options are: PER_GAME, SHOOTING, ADVANCED, TOTALS')
142 | else:
143 | raise ConnectionError('Request to basketball reference failed')
--------------------------------------------------------------------------------
/basketball_reference_scraper/teams.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from bs4 import BeautifulSoup
3 |
4 | try:
5 | from constants import TEAM_TO_TEAM_ABBR, TEAM_SETS
6 | from utils import remove_accents
7 | from request_utils import get_wrapper, get_selenium_wrapper
8 | except:
9 | from basketball_reference_scraper.constants import TEAM_TO_TEAM_ABBR, TEAM_SETS
10 | from basketball_reference_scraper.utils import remove_accents
11 | from basketball_reference_scraper.request_utils import get_wrapper, get_selenium_wrapper
12 |
13 |
14 | def get_roster(team, season_end_year):
15 | r = get_wrapper(
16 | f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html')
17 | df = None
18 | if r.status_code == 200:
19 | soup = BeautifulSoup(r.content, 'html.parser')
20 | table = soup.find('table', {'id': 'roster'})
21 | df = pd.read_html(str(table))[0]
22 | df.columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 'BIRTH_DATE',
23 | 'NATIONALITY', 'EXPERIENCE', 'COLLEGE']
24 | # remove rows with no player name (this was the issue above)
25 | df = df[df['PLAYER'].notna()]
26 | df['PLAYER'] = df['PLAYER'].apply(
27 | lambda name: remove_accents(name, team, season_end_year))
28 | # handle rows with empty fields but with a player name.
29 | df['BIRTH_DATE'] = df['BIRTH_DATE'].apply(
30 | lambda x: pd.to_datetime(x) if pd.notna(x) else pd.NaT)
31 | df['NATIONALITY'] = df['NATIONALITY'].apply(
32 | lambda x: x.upper() if pd.notna(x) else '')
33 |
34 | return df
35 |
36 |
37 | def get_team_stats(team, season_end_year, data_format='TOTALS'):
38 | xpath = '//table[@id="team_and_opponent"]'
39 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath)
40 | if not table:
41 | raise ConnectionError('Request to basketball reference failed')
42 | df = pd.read_html(table)[0]
43 | opp_idx = df[df['Unnamed: 0'] == 'Opponent'].index[0]
44 | df = df[:opp_idx]
45 | if data_format == 'TOTALS':
46 | row_idx = 'Team'
47 | elif data_format == 'PER_GAME':
48 | row_idx = 'Team/G'
49 | elif data_format == 'RANK':
50 | row_idx = 'Lg Rank'
51 | elif data_format == 'YEAR/YEAR':
52 | row_idx = 'Year/Year'
53 | else:
54 | print('Invalid data format')
55 | return pd.DataFrame()
56 |
57 | s = df[df['Unnamed: 0'] == row_idx]
58 | s = s.drop(columns=['Unnamed: 0']).reindex()
59 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0])
60 |
61 |
62 | def get_opp_stats(team, season_end_year, data_format='PER_GAME'):
63 | xpath = '//table[@id="team_and_opponent"]'
64 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath)
65 | if not table:
66 | raise ConnectionError('Request to basketball reference failed')
67 | df = pd.read_html(table)[0]
68 | opp_idx = df[df['Unnamed: 0'] == 'Opponent'].index[0]
69 | df = df[opp_idx:]
70 | if data_format == 'TOTALS':
71 | row_idx = 'Opponent'
72 | elif data_format == 'PER_GAME':
73 | row_idx = 'Opponent/G'
74 | elif data_format == 'RANK':
75 | row_idx = 'Lg Rank'
76 | elif data_format == 'YEAR/YEAR':
77 | row_idx = 'Year/Year'
78 | else:
79 | print('Invalid data format')
80 | return pd.DataFrame()
81 |
82 | s = df[df['Unnamed: 0'] == row_idx]
83 | s = s.drop(columns=['Unnamed: 0']).reindex()
84 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0])
85 |
86 |
87 | def get_team_misc(team, season_end_year, data_format='TOTALS'):
88 | xpath = '//table[@id="team_misc"]'
89 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath)
90 | if not table:
91 | raise ConnectionError('Request to basketball reference failed')
92 | df = pd.read_html(table)[0]
93 | if data_format == 'TOTALS':
94 | row_idx = 'Team'
95 | elif data_format == 'RANK':
96 | row_idx = 'Lg Rank'
97 | else:
98 | print('Invalid data format')
99 | return pd.DataFrame()
100 | df.columns = df.columns.droplevel()
101 | df.rename(columns={'Arena': 'ARENA',
102 | 'Attendance': 'ATTENDANCE'}, inplace=True)
103 | s = df[df['Unnamed: 0_level_1'] == row_idx]
104 | s = s.drop(columns=['Unnamed: 0_level_1']).reindex()
105 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0])
106 |
107 | def get_roster_stats(team: list, season_end_year: int, data_format='PER_GAME', playoffs=False):
108 | if playoffs:
109 | xpath=f'//table[@id="playoffs_{data_format.lower()}"]'
110 | else:
111 | xpath=f'//table[@id="{data_format.lower()}"]'
112 | table = get_selenium_wrapper(
113 | f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath)
114 | if not table:
115 | raise ConnectionError('Request to basketball reference failed')
116 | df = pd.read_html(table)[0]
117 | df.rename(columns={'Player': 'PLAYER', 'Age': 'AGE',
118 | 'Tm': 'TEAM', 'Pos': 'POS'}, inplace=True)
119 | df['PLAYER'] = df['PLAYER'].apply(
120 | lambda name: remove_accents(name, team, season_end_year))
121 | df = df.reset_index().drop(['Rk', 'index'], axis=1)
122 | return df
123 |
124 | def get_team_ratings(season_end_year: int, team=[]):
125 | r = get_wrapper(f'https://www.basketball-reference.com/leagues/NBA_{season_end_year}_ratings.html')
126 | if r.status_code == 200:
127 | soup = BeautifulSoup(r.content, 'html.parser')
128 | table = soup.find('table', { 'id': 'ratings' })
129 |
130 | df = pd.read_html(str(table))[0]
131 | # Clean columns and indexes
132 | df = df.droplevel(level=0, axis=1)
133 |
134 | upper_cols = list(pd.Series(df.columns).apply(lambda x: x.upper()))
135 | df.columns = upper_cols
136 | df.dropna(inplace=True)
137 | df = df[df['RK'] != 'Rk']
138 | df['TEAM'] = df['TEAM'].apply(lambda x: x.upper())
139 | df['TEAM'] = df['TEAM'].apply(lambda x: TEAM_TO_TEAM_ABBR[x])
140 |
141 | # Add 'Season' column in and change order of columns
142 | df['SEASON'] = f'{season_end_year-1}-{str(season_end_year)[2:]}'
143 | cols = df.columns.tolist()
144 | cols = cols[0:1] + cols[-1:] + cols[1:-1]
145 | df = df[cols]
146 |
147 | # Add the ability to either pass no teams (empty list), one team (str), or multiple teams (list)
148 | if len(team) > 0:
149 | if isinstance(team, str):
150 | list_team = []
151 | list_team.append(team)
152 | df = df[df['TEAM'].isin(list_team)]
153 | else:
154 | df = df[df['TEAM'].isin(team)]
155 | df = df.reindex()
156 | return df
157 | else:
158 | raise ConnectionError('Request to basketball reference failed')
159 |
--------------------------------------------------------------------------------
/API.md:
--------------------------------------------------------------------------------
1 | ## Teams
2 |
3 | Usage
4 |
5 | ```
6 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc
7 | ```
8 |
9 | ### `get_roster(team, season)`
10 | Parameters:
11 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`)
12 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`)
13 |
14 | Returns:
15 |
16 | A Pandas Dataframe containing the following columns:
17 |
18 | ```
19 | ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 'BIRTH_DATE',
20 | 'NATIONALITY', 'EXPERIENCE', 'COLLEGE']
21 | ```
22 |
23 | ### `get_team_stats(team, season_end_year, data_format='TOTALS')`
24 |
25 | Parameters:
26 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`)
27 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`)
28 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'RANK'|'YEAR/YEAR'`. Default value is `'TOTALS'`
29 |
30 | Returns:
31 |
32 | A Pandas Series containing the following indices:
33 |
34 | **Note**: Ranks are per game (except for MP, which are total) and sorted descending (except for TOV and PF); opponents ranked are flipped; year/year calculations are also per game
35 |
36 | ```
37 | ['G', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'FT', 'FTA', 'FT%', 'ORB',
38 | 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
39 | ```
40 |
41 |
42 | ### `get_opp_stats(team, season_end_year, data_format)`
43 |
44 | Parameters:
45 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`)
46 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`)
47 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'RANK'|'YEAR/YEAR'`. Default value is `'TOTALS'`
48 |
49 | Returns:
50 |
51 | A Pandas Series containing the following indices:
52 |
53 | **Note**: Ranks are per game (except for MP, which are total) and sorted descending (except for TOV and PF); opponents ranked are flipped; year/year calculations are also per game
54 |
55 | ```
56 | ['OPP_G', 'OPP_MP', 'OPP_FG', 'OPP_FGA', 'OPP_FG%', 'OPP_3P', 'OPP_3PA', 'OPP_3P%', 'OPP_2P', 'OPP_2PA', 'OPP_2P%', 'OPP_FT', 'OPP_FTA', 'OPP_FT%',
57 | 'OPP_ORB', 'OPP_DRB', 'OPP_TRB', 'OPP_AST', 'OPP_STL', 'OPP_BLK', 'OPP_TOV', 'OPP_PF', 'OPP_PTS']
58 | ```
59 |
60 | ### `get_team_misc(team, season, data_format)`
61 |
62 | Parameters:
63 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`)
64 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`)
65 | - `data_format` - One of `'TOTALS'|'RANK'`. Default value is `'TOTALS'`
66 |
67 | Returns:
68 |
69 | A Pandas Series containing the following columns:
70 |
71 | ```
72 | ['W', 'L', 'PW', 'PL', 'MOV', 'SOS', 'SRS', 'ORtg', 'DRtg', 'Pace', 'FTr', '3PAr', 'eFG%', 'TOV%', 'ORB%',
73 | 'FT/FGA', 'eFG%', 'TOV%', 'DRB%', 'FT/FGA', 'Arena', 'Attendance']
74 | ```
75 |
76 | ### `get_roster_stats(team, season, data_format='PER_GAME', playoffs=False)`
77 |
78 | Parameters:
79 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`)
80 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`)
81 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'PER_POSS'|'ADVANCED'`. Default value is `'PER_GAME'`
82 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`
83 |
84 | Returns:
85 |
86 | A Pandas Series containing the following columns:
87 |
88 | ```
89 | ['PLAYER', 'POS', 'AGE', 'TEAM', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'SEASON']
90 | ```
91 |
92 | ### `get_team_ratings(season, team=[])`
93 |
94 | Parameters:
95 | - `season` - Desired end year (e.g. `1988`, `2011`)
96 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`), list of abbreviations (e.g. `['GSW'`, `'SAS']`), or empty list (indicating all team ratings). Default value is `[]`.
97 |
98 | Returns:
99 |
100 | A Pandas Dataframe containing the following columns:
101 |
102 | ```
103 | ['RK', 'TEAM', 'CONF', 'DIV', 'W', 'L', 'W/L%', 'MOV', 'ORTG', 'DRTG',
104 | 'NRTG', 'MOV/A', 'ORTG/A', 'DRTG/A', 'NRTG/A']
105 | ```
106 |
107 | ## Players
108 |
109 | Usage
110 |
111 | ```
112 | from basketball_reference_scraper.players import get_stats, get_game_logs, get_player_headshot
113 | ```
114 |
115 | ### `get_stats(name, stat_type='PER_GAME', playoffs=False, career=False)`
116 |
117 | Parameters:
118 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`)
119 | - `stat_type` - One of `'PER_GAME', 'PER_MINUTE', 'PER_POSS', 'ADVANCED'`
120 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `False`
121 | - `career` - Whether to return career stats or not. One of `True|False`. Default value is `False`
122 |
123 | Returns:
124 |
125 | A Pandas DataFrame that varies based on the parameters passed.
126 | Please refer to a [sample page](https://www.basketball-reference.com/players/a/aldrila01.html) for full details.
127 |
128 | ### `get_game_logs(name, start_date, end_date, playoffs=False)`
129 |
130 | Parameters:
131 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`)
132 | - `start_date` - Date in string format of `'YYYY-MM-DD'`.
133 | - `end_date` - Date in string format of `'YYYY-MM-DD'`.
134 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `False`
135 |
136 | Returns:
137 |
138 | A Pandas DataFrame containing the following columns:
139 |
140 | ```
141 | ['DATE', 'AGE', 'TEAM', 'HOME/AWAY', 'OPPONENT', 'RESULT', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'GAME_SCORE', '+/-']
142 | ```
143 |
144 | ### `get_player_headshot(name)`
145 |
146 | Parameters:
147 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`)
148 |
149 | Returns:
150 | A url that points to the Basketball Reference headshot of the individual player. For example, if `name = 'Kobe Bryant'`, the resulting url is `'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/bryanko01.jpg'`
151 |
152 |
153 | ## Seasons
154 |
155 | Usage
156 |
157 | ```
158 | from basketball_reference_scraper.seasons import get_schedule, get_standings
159 | ```
160 |
161 |
162 | ### `get_schedule(season, playoffs=False)`
163 |
164 | Parameters:
165 | - `season` - Desired end year (e.g. `1988`, `2011`)
166 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `'False'`
167 |
168 | Returns:
169 |
170 | A Pandas DataFrame with the following columns:
171 |
172 | ```
173 | ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 'HOME_PTS']
174 | ```
175 |
176 | ### `get_standings(date=None)`
177 |
178 | Parameters:
179 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`). Default value is `NONE`, which returns standings for the current date.
180 |
181 | Returns:
182 |
183 | A dictionary containing standings for the Eastern and Western Conferences along with relevant statistics as a Pandas DataFrame. For example:
184 |
185 | ```
186 | >>> d = get_standings()
187 | >>> list(d['WESTERN_CONF'].columns)
188 | ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G']
189 | ```
190 |
191 | ## Box Scores
192 |
193 | Usage
194 |
195 | ```
196 | from basketball_reference_scraper.box_scores import get_box_scores
197 | ```
198 |
199 | ### `get_box_scores(date, team1, team2, period='GAME', stat_type='BASIC')`
200 |
201 | Parameters:
202 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`)
203 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`)
204 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`)
205 | - `period` - Period for which to acquire stats. One of `'GAME'|'Q1'|'Q2'|'Q3'|'Q4'|'H1'|'H2'`. Default value is `'GAME'`
206 | - `stat_type` - Period for which to acquire stats. One of `'BASIC'|'ADVANCED'`. Default value is `'BASIC'`. Note that advanced stats are only available for `period='GAME'`.
207 |
208 | Returns:
209 |
210 | A dictionary containing relevant stats for each team as a Pandas DataFrame. For example:
211 |
212 | ```
213 | >>> d = get_box_scores('2020-01-06', 'DEN', 'ATL')
214 | >>> list(d['ATL'].columns)
215 | ['PLAYER', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', '+/-']
216 | ```
217 | ### `get_all_star_box_score(year: int)`
218 |
219 | Parameters:
220 | - `year` - End year of game in which all-star season ocurred e.g. 2020 for the 2019-20 ASG
221 |
222 | Returns:
223 |
224 | A dictionary containing relevant stats for each team as a Pandas DataFrame. For example:
225 |
226 | ```
227 | >>> d = get_all_star_box_score(2020)
228 | >>> list(d['Team Lebron'].columns)
229 | ['PLAYER', 'TEAM', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
230 | ```
231 |
232 | ## Play-by-play
233 |
234 | Usage
235 |
236 | ```
237 | from basketball_reference_scraper.pbp import get_pbp
238 | ```
239 |
240 | ### get_pbp(date, team1, team2)
241 |
242 | Parameters:
243 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`)
244 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`)
245 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`)
246 |
247 | Returns:
248 |
249 | A Pandas DataFrame containing the actions performed by each team at a time. For example:
250 |
251 | ```
252 | >>> df = get_pbp('2020-01-06', 'DEN', 'ATL')
253 | >>> list(df.columns)
254 | ['QUARTER', 'TIME_REMAINING', 'DENVER_ACTION', 'ATLANTA_ACTION', 'DENVER_SCORE', 'ATLANTA_SCORE']
255 | ```
256 |
257 | Note that the `ACTION` columns (`'DENVER_ACTION'` and `'ATLANTA_ACTION'` in the above example) will contain `nan` if the team did not perform the primary action in the sequence.
258 |
259 | ## Shot Charts
260 |
261 | Usage
262 |
263 | ```
264 | from basketball_reference_scraper.shot_charts import get_shot_chart
265 | ```
266 |
267 | ### get_shot_chart(date, team1, team2)
268 |
269 | Parameters:
270 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`)
271 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`)
272 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`)
273 |
274 | Returns:
275 |
276 | A dictionary containing the shot charts for each team.
277 | The shot charts are Pandas DataFrames with the following columns:
278 | ```
279 | ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE']
280 | ```
281 |
282 | Where `'x'` and `'y'` are half-court coordinates in feet, `QUARTER` and `TIME_REMAINING` provide the time at which the shot occurred,
283 | `player` provides the player who shot the ball, `MAKE_MISS` is either `'MAKE'` or `'MISS'`, `VALUE` is the number of points gained, and `DISTANCE`
284 | is distance from the basket in ft.
285 |
286 | For example:
287 |
288 | ```
289 | >>> d = get_shot_chart('2019-12-28', 'TOR', 'BOS')
290 | >>> list(d['TOR'].columns)
291 | ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE']
292 | >>> d['TOR'].iloc[1]
293 | x 27.0 ft
294 | y 9.75 ft
295 | QUARTER 1
296 | TIME_REMAINING 11:03.0
297 | PLAYER Serge Ibaka
298 | MAKE_MISS MISS
299 | VALUE 2
300 | DISTANCE 7 ft
301 | Name: 1, dtype: object
302 | ```
303 |
304 | Note that the team columns (`'Denver'` and `'Atlanta'` in the above example) will contain `nan` if the team did not perform the primary action in the sequence.
305 |
306 | ## Injury Report
307 |
308 | Usage
309 |
310 | ```
311 | from basketball_reference_scraper.injury_report import get_injury_report
312 | ```
313 |
314 |
315 | ### get_injury_report()
316 |
317 | Parameters:
318 |
319 | Returns:
320 |
321 | A Pandas DataFrames with the following columns:
322 | ```
323 | ['PLAYER', 'TEAM', 'DATE', 'INJURY', 'STATUS', 'DESCRIPTION']
324 | ```
325 |
326 | ## Draft
327 |
328 | Usage
329 |
330 | ```
331 | from basketball_reference_scraper.drafts import get_draft_class
332 | ```
333 |
334 | ### `get_draft_class(year)`
335 |
336 | Parameters:
337 | - `year` - Desired draft year (e.g. 1989, 2020)
338 |
339 | Returns:
340 |
341 | A Pandas DataFrame with the following columns:
342 | ```
343 | ['PICK', 'TEAM', 'PLAYER', 'COLLEGE', 'YEARS', 'TOTALS_G', 'TOTALS_MP', 'TOTALS_PTS', 'TOTALS_TRB', 'TOTALS_AST', 'SHOOTING_FG%', 'SHOOTING_3P%', 'SHOOTING_FT%', 'PER_GAME_MP', 'PER_GAME_PTS', 'PER_GAME_TRB', 'PER_GAME_AST', 'ADVANCED_WS', 'ADVANCED_WS/48', 'ADVANCED_BPM', 'ADVANCED_VORP']
344 | ```
345 |
346 | ## Constants and Parameter Notes
347 |
348 | ### Dates
349 | Dates are parsed using Pandas `to_datetime()` method and should follow appropriate constraints. Refer to the [documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html) for more specifications.
350 |
351 | ### Team Abbreviations
352 | These are the team abbreviations used by Basketball Reference and should be used in the above methods.
353 | ```
354 | ATLANTA HAWKS : ATL
355 | ST. LOUIS HAWKS : SLH
356 | MILWAUKEE HAWKS : MIL
357 | TRI-CITIES BLACKHAWKS : TCB
358 | BOSTON CELTICS : BOS
359 | BROOKLYN NETS : BRK
360 | NEW JERSEY NETS : NJN
361 | CHICAGO BULLS : CHI
362 | CHARLOTTE HORNETS (1988-2004): CHH
363 | CHARLOTTE HORNETS (2014-Present): CHO
364 | CHARLOTTE BOBCATS : CHA
365 | CLEVELAND CAVALIERS : CLE
366 | DALLAS MAVERICKS : DAL
367 | DENVER NUGGETS : DEN
368 | DETROIT PISTONS : DET
369 | FORT WAYNE PISTONS : FWP
370 | GOLDEN STATE WARRIORS : GSW
371 | SAN FRANCISCO WARRIORS : SFW
372 | PHILADELPHIA WARRIORS : PHI
373 | HOUSTON ROCKETS : HOU
374 | INDIANA PACERS : IND
375 | LOS ANGELES CLIPPERS : LAC
376 | SAN DIEGO CLIPPERS : SDC
377 | BUFFALO BRAVES : BUF
378 | LOS ANGELES LAKERS : LAL
379 | MINNEAPOLIS LAKERS : MIN
380 | MEMPHIS GRIZZLIES : MEM
381 | VANCOUVER GRIZZLIES : VAN
382 | MIAMI HEAT : MIA
383 | MILWAUKEE BUCKS : MIL
384 | MINNESOTA TIMBERWOLVES : MIN
385 | NEW ORLEANS PELICANS : NOP
386 | NEW ORLEANS/OKLAHOMA CITY HORNETS : NOK
387 | NEW ORLEANS HORNETS : NOH
388 | NEW YORK KNICKS : NYK
389 | OKLAHOMA CITY THUNDER : OKC
390 | SEATTLE SUPERSONICS : SEA
391 | ORLANDO MAGIC : ORL
392 | PHILADELPHIA 76ERS : PHI
393 | SYRACUSE NATIONALS : SYR
394 | PHOENIX SUNS : PHO
395 | PORTLAND TRAIL BLAZERS : POR
396 | SACRAMENTO KINGS : SAC
397 | KANSAS CITY KINGS : KCK
398 | KANSAS CITY-OMAHA KINGS : KCK
399 | CINCINNATI ROYALS : CIN
400 | ROCHESTER ROYALS : ROR
401 | SAN ANTONIO SPURS : SAS
402 | TORONTO RAPTORS : TOR
403 | UTAH JAZZ : UTA
404 | NEW ORLEANS JAZZ : NOJ
405 | WASHINGTON WIZARDS : WAS
406 | WASHINGTON BULLETS : WAS
407 | CAPITAL BULLETS : CAP
408 | BALTIMORE BULLETS : BAL
409 | CHICAGO ZEPHYRS : CHI
410 | CHICAGO PACKERS : CHI
411 | ANDERSON PACKERS : AND
412 | CHICAGO STAGS : CHI
413 | INDIANAPOLIS OLYMPIANS : IND
414 | SHEBOYGAN RED SKINS : SRS
415 | ST. LOUIS BOMBERS : SLB
416 | WASHINGTON CAPITOLS : WAS
417 | WATERLOO HAWKS : WAT
418 | SAN DIEGO ROCKETS : SDR
419 | ```
420 |
421 | ### Units
422 | All units are imperial. This means that distances and heights are provided in ft and inches. Additionally, weights are provided in lbs.
423 |
--------------------------------------------------------------------------------
/basketball_reference_scraper/br_names.txt:
--------------------------------------------------------------------------------
1 | James Wiseman
2 | Killian Hayes
3 | Tyrese Haliburton
4 | LaMelo Ball
5 | Aleksej Pokusevski
6 | Anthony Edwards
7 | Facundo Campazzo
8 | Isaac Okoro
9 | Deni Avdija
10 | Onyeka Okongwu
11 | Chuma Okeke
12 | Obi Toppin
13 | Patrick Williams
14 | Devin Vassell
15 | Aaron Nesmith
16 | Xavier Tillman
17 | Cole Anthony
18 | Desmond Bane
19 | Isaiah Stewart
20 | Tyrese Maxey
21 | Saddiq Bey
22 | Dylan Windler
23 | Vernon Carey Jr.
24 | Kira Lewis
25 | Jalen Smith
26 | Malachi Flynn
27 | Robert Woodard
28 | Paul Reed
29 | Cassius Winston
30 | Sam Merrill
31 | Elijah Hughes
32 | Zeke Nnaji
33 | Tyler Bey
34 | Josh Green
35 | Grant Riller
36 | Theo Maledon
37 | Jordan Nwora
38 | R.J. Hampton
39 | Devon Dotson
40 | Tre Jones
41 | Precious Achiuwa
42 | Will Magnay
43 | Nick Richards
44 | Kenyon Martin Jr.
45 | Isaiah Joe
46 | Udoka Azubuike
47 | Killian Tillie
48 | Payton Pritchard
49 | Jalen Harris
50 | Jaden McDaniels
51 | Lamar Stevens
52 | Skylar Mays
53 | Nate Hinton
54 | Jay Scrubb
55 | Mamadi Diakite
56 | Cassius Stanley
57 | Trent Forrest
58 | Nathan Knight
59 | Jahmi'us Ramsey
60 | Sean McDermott
61 | Nico Mannion
62 | Mason Jones
63 | Immanuel Quickley
64 | Deividas Sirvydis
65 | Ty-Shon Alexander
66 | Markus Howard
67 | Daniel Oturu
68 | Reggie Perry
69 | Tyrell Terry
70 | Dwayne Sutton
71 | CJ Elleby
72 | Saben Lee
73 | Ashton Hagans
74 | Naji Marshall
75 | Nate Darling
76 | Josh Hall
77 | Karim Mane
78 | Keljin Blevins
79 | Quinton Rose
80 | Xavier Sneed
81 | Charles Matthews
82 | Keandre Cook
83 | Ade Murkey
84 | Jordan Bowden
85 | Javin DeLaurier
86 | E.J. Montgomery
87 | Nate Sestina
88 | Zavier Simpson
89 | Omer Yurtseven
90 | LiAngelo Ball
91 | Romaro Gill
92 | Jahlil Tripp
93 | Anthony Lamb
94 | Yam Madar
95 | Jake Toolson
96 | Malik Fitts
97 | Caleb Homesley
98 | Paul Eboua
99 | Kaleb Wesson
100 | Leandro Bolmaro
101 | Myles Powell
102 | Trevelin Queen
103 | Marko Simonovic
104 | Freddie Gillespie
105 | Rayshaun Hammonds
106 | Jon Teske
107 | Yoeli Childs
108 | Brodric Thomas
109 | Marlon Taylor
110 | Kahlil Whitney
111 | Devin Cannady
112 | Justinian Jessup
113 | Tres Tinkle
114 | Devonte Patterson
115 | Jordan Ford
116 | Alaa Abdelnaby
117 | Zaid Abdul-Aziz
118 | Kareem Abdul-Jabbar
119 | Mahmoud Abdul-Rauf
120 | Tariq Abdul-Wahad
121 | Shareef Abdur-Rahim
122 | Tom Abernethy
123 | Forest Able
124 | John Abramovic
125 | Alex Abrines
126 | Alex Acker
127 | Don Ackerman
128 | Mark Acres
129 | Bud Acton
130 | Quincy Acy
131 | Alvan Adams
132 | Don Adams
133 | George Adams
134 | Hassan Adams
135 | Jaylen Adams
136 | Jordan Adams
137 | Michael Adams
138 | Steven Adams
139 | Rafael Addison
140 | Bam Adebayo
141 | Deng Adel
142 | Rick Adelman
143 | Jeff Adrien
144 | Arron Afflalo
145 | Maurice Ager
146 | Mark Aguirre
147 | Blake Ahearn
148 | Danny Ainge
149 | Matthew Aitch
150 | Alexis Ajinca
151 | Henry Akin
152 | Josh Akognon
153 | DeVaughn Akoon-Purcell
154 | Solomon Alabi
155 | Mark Alarie
156 | Gary Alcorn
157 | Furkan Aldemir
158 | Cole Aldrich
159 | LaMarcus Aldridge
160 | Chuck Aleksinas
161 | Cliff Alexander
162 | Cory Alexander
163 | Courtney Alexander
164 | Gary Alexander
165 | Joe Alexander
166 | Kyle Alexander
167 | Victor Alexander
168 | Nickeil Alexander-Walker
169 | Steve Alford
170 | Rawle Alkins
171 | Bill Allen
172 | Bob Allen
173 | Grayson Allen
174 | Jarrett Allen
175 | Jerome Allen
176 | Kadeem Allen
177 | Lavoy Allen
178 | Lucius Allen
179 | Malik Allen
180 | Randy Allen
181 | Ray Allen
182 | Tony Allen
183 | Willie Allen
184 | Odis Allison
185 | Lance Allred
186 | Darrell Allums
187 | Morris Almond
188 | Derrick Alston
189 | Rafer Alston
190 | Peter Aluma
191 | John Amaechi
192 | Ashraf Amaya
193 | Al-Farouq Aminu
194 | Lou Amundson
195 | Bob Anderegg
196 | Chris Andersen
197 | David Andersen
198 | Alan Anderson
199 | Andrew Anderson
200 | Antonio Anderson
201 | Cliff Anderson
202 | Dan Anderson
203 | Dan Anderson
204 | Derek Anderson
205 | Dwight Anderson
206 | Eric Anderson
207 | Greg Anderson
208 | J.J. Anderson
209 | James Anderson
210 | Jerome Anderson
211 | Justin Anderson
212 | Kenny Anderson
213 | Kim Anderson
214 | Kyle Anderson
215 | Michael Anderson
216 | Nick Anderson
217 | Richard Anderson
218 | Ron Anderson
219 | Ryan Anderson
220 | Shandon Anderson
221 | Willie Anderson
222 | Wally Anderzunas
223 | Martynas Andriuskevicius
224 | Don Anielak
225 | Ike Anigbogu
226 | Michael Ansley
227 | Chris Anstey
228 | Giannis Antetokounmpo
229 | Kostas Antetokounmpo
230 | Thanasis Antetokounmpo
231 | Carmelo Anthony
232 | Greg Anthony
233 | Joel Anthony
234 | Pero Antic
235 | OG Anunoby
236 | Keith Appling
237 | Rafael Araujo
238 | Stacey Arceneaux
239 | Robert Archibald
240 | Tiny Archibald
241 | Ryan Arcidiacono
242 | Jim Ard
243 | Gilbert Arenas
244 | Trevor Ariza
245 | Paul Arizin
246 | Joe Arlauckas
247 | B.J. Armstrong
248 | Bob Armstrong
249 | Brandon Armstrong
250 | Curly Armstrong
251 | Darrell Armstrong
252 | Hilton Armstrong
253 | Tate Armstrong
254 | Jesse Arnelle
255 | Jay Arnette
256 | Bob Arnzen
257 | Carlos Arroyo
258 | Darrell Arthur
259 | John Arthurs
260 | Jamel Artis
261 | Omer Asik
262 | Vincent Askew
263 | Keith Askins
264 | Don Asmonga
265 | Dick Atha
266 | Chucky Atkins
267 | Al Attles
268 | Chet Aubuchon
269 | Stacey Augmon
270 | D.J. Augustin
271 | James Augustine
272 | Isaac Austin
273 | Johnny Austin
274 | Ken Austin
275 | Anthony Avent
276 | Bird Averitt
277 | William Avery
278 | Dennis Awtrey
279 | Gustavo Ayon
280 | Jeff Ayres
281 | Deandre Ayton
282 | Kelenna Azubuike
283 | Chris Babb
284 | Luke Babbitt
285 | Milos Babic
286 | Johnny Bach
287 | Dwayne Bacon
288 | Henry Bacon
289 | Jim Baechtold
290 | Dalibor Bagaric
291 | John Bagley
292 | Marvin Bagley
293 | Carl Bailey
294 | Gus Bailey
295 | James Bailey
296 | Thurl Bailey
297 | Toby Bailey
298 | Cameron Bairstow
299 | Jimmie Baker
300 | LaMark Baker
301 | Maurice Baker
302 | Norm Baker
303 | Ron Baker
304 | Vin Baker
305 | Wade Baldwin
306 | Renaldo Balkman
307 | Cedric Ball
308 | Lonzo Ball
309 | Greg Ballard
310 | Herschel Baltimore
311 | Mohamed Bamba
312 | Gene Banks
313 | Marcus Banks
314 | Walker Banks
315 | Ken Bannister
316 | Mike Bantom
317 | John Barber
318 | Leandro Barbosa
319 | Steve Bardo
320 | J.J. Barea
321 | Andrea Bargnani
322 | Cliff Barker
323 | Tom Barker
324 | Charles Barkley
325 | Erick Barkley
326 | Don Barksdale
327 | Harrison Barnes
328 | Harry Barnes
329 | Jim Barnes
330 | Marvin Barnes
331 | Matt Barnes
332 | Dick Barnett
333 | Jim Barnett
334 | Nathaniel Barnett
335 | John Barnhill
336 | Norton Barnhill
337 | Leo Barnhorst
338 | John Barr
339 | Mike Barr
340 | Moe Barr
341 | Andre Barrett
342 | Ernie Barrett
343 | Mike Barrett
344 | RJ Barrett
345 | Earl Barron
346 | Dana Barros
347 | Brent Barry
348 | Drew Barry
349 | Jon Barry
350 | Rick Barry
351 | Ed Bartels
352 | Vic Bartolome
353 | Will Barton
354 | Eddie Basden
355 | Jerry Baskerville
356 | Brandon Bass
357 | Tim Bassett
358 | Maceo Baston
359 | Mengke Bateer
360 | Billy Ray Bates
361 | Keita Bates-Diop
362 | Esteban Batista
363 | Mike Batiste
364 | Tony Battie
365 | Shane Battier
366 | John Battle
367 | Kenny Battle
368 | Dave Batton
369 | Lloyd Batts
370 | Nicolas Batum
371 | Johnny Baum
372 | Frankie Baumholtz
373 | Lonny Baxter
374 | Jerryd Bayless
375 | Elgin Baylor
376 | Howard Bayne
377 | Aron Baynes
378 | Sergei Bazarevich
379 | Kent Bazemore
380 | Darius Bazley
381 | Ed Beach
382 | Bradley Beal
383 | Al Beard
384 | Butch Beard
385 | Ralph Beard
386 | Charles Beasley
387 | Jerome Beasley
388 | John Beasley
389 | Malik Beasley
390 | Michael Beasley
391 | Zelmo Beaty
392 | Rodrigue Beaubois
393 | Byron Beck
394 | Corey Beck
395 | Ernie Beck
396 | Arthur Becker
397 | Moe Becker
398 | Bob Bedell
399 | William Bedford
400 | Hank Beenders
401 | Ron Behagen
402 | Elmer Behnke
403 | Marco Belinelli
404 | Charlie Bell
405 | Dennis Bell
406 | Jordan Bell
407 | Raja Bell
408 | Troy Bell
409 | Whitey Bell
410 | Walt Bellamy
411 | DeAndre' Bembry
412 | Irv Bemoras
413 | Leon Benbow
414 | Dragan Bender
415 | Jonathan Bender
416 | Jerrelle Benimon
417 | Benoit Benjamin
418 | Corey Benjamin
419 | Anthony Bennett
420 | Elmer Bennett
421 | Mario Bennett
422 | Mel Bennett
423 | Spider Bennett
424 | Tony Bennett
425 | Winston Bennett
426 | David Benoit
427 | Keith Benson
428 | Kent Benson
429 | Ben Bentil
430 | Gene Berce
431 | Gary Bergen
432 | Larry Bergh
433 | Ricky Berry
434 | Walter Berry
435 | Dairis Bertans
436 | Davis Bertans
437 | Del Beshore
438 | Travis Best
439 | Patrick Beverley
440 | Sim Bhullar
441 | Wesley Bialosuknia
442 | Al Bianchi
443 | Hank Biasatti
444 | Henry Bibby
445 | Mike Bibby
446 | Ed Biedenbach
447 | Andris Biedrins
448 | Don Bielke
449 | Bob Bigelow
450 | Lionel Billingy
451 | Chauncey Billups
452 | Dave Bing
453 | Joe Binion
454 | Khem Birch
455 | Jabari Bird
456 | Jerry Bird
457 | Larry Bird
458 | Otis Birdsong
459 | Gale Bishop
460 | Goga Bitadze
461 | Bismack Biyombo
462 | Nemanja Bjelica
463 | Uwe Blab
464 | Charlie Black
465 | Norman Black
466 | Tarik Black
467 | Tom Black
468 | Rolando Blackman
469 | Alex Blackwell
470 | Cory Blackwell
471 | James Blackwell
472 | Nate Blackwell
473 | DeJuan Blair
474 | Steve Blake
475 | Antonio Blakeney
476 | Will Blalock
477 | George Blaney
478 | Lance Blanks
479 | Ricky Blanton
480 | Andray Blatche
481 | Mookie Blaylock
482 | Eric Bledsoe
483 | Leon Blevins
484 | John Block
485 | Mike Bloom
486 | Jaron Blossomgame
487 | Corie Blount
488 | Mark Blount
489 | Vander Blue
490 | Ray Blume
491 | Nelson Bobb
492 | Tony Bobbitt
493 | Bucky Bockhorn
494 | Tom Boerwinkle
495 | Keith Bogans
496 | Bogdan Bogdanovic
497 | Bojan Bogdanovic
498 | Muggsy Bogues
499 | Andrew Bogut
500 | Etdrick Bohannon
501 | Bol Bol
502 | Manute Bol
503 | Jonah Bolden
504 | Marques Bolden
505 | Bill Bolger
506 | Joel Bolomboy
507 | Doug Bolstorff
508 | George Bon Salle
509 | Phil Bond
510 | Walter Bond
511 | Jordan Bone
512 | Dexter Boney
513 | Isaac Bonga
514 | Ron Bonham
515 | Anthony Bonner
516 | Matt Bonner
517 | Butch Booker
518 | Devin Booker
519 | Melvin Booker
520 | Trevor Booker
521 | Josh Boone
522 | Ron Boone
523 | Calvin Booth
524 | Keith Booth
525 | Bob Boozer
526 | Carlos Boozer
527 | Curtis Borchardt
528 | Jake Bornheimer
529 | Lazaro Borrell
530 | Ike Borsavage
531 | Vince Boryla
532 | Chris Bosh
533 | Jim Bostic
534 | Lawrence Boston
535 | Tom Boswell
536 | Chris Boucher
537 | Ruben Boumtje-Boumtje
538 | Don Boven
539 | Cal Bowdler
540 | Brian Bowen
541 | Bruce Bowen
542 | Ryan Bowen
543 | Tommie Bowens
544 | Anthony Bowie
545 | Sam Bowie
546 | Orbie Bowling
547 | Ira Bowman
548 | Ky Bowman
549 | Nate Bowman
550 | Donnie Boyce
551 | Dennis Boyd
552 | Freddie Boyd
553 | Ken Boyd
554 | Earl Boykins
555 | Harry Boykoff
556 | Winford Boynes
557 | Cedric Bozeman
558 | Steve Bracey
559 | Craig Brackins
560 | Gary Bradds
561 | Alex Bradley
562 | Alonzo Bradley
563 | Avery Bradley
564 | Bill Bradley
565 | Bill Bradley
566 | Charles Bradley
567 | Dudley Bradley
568 | Jim Bradley
569 | Joe Bradley
570 | Michael Bradley
571 | Shawn Bradley
572 | Tony Bradley
573 | Mark Bradtke
574 | Marques Bragg
575 | Torraye Braggs
576 | A.J. Bramlett
577 | Adrian Branch
578 | Elton Brand
579 | Terrell Brandon
580 | Bob Brannum
581 | Brad Branson
582 | Jesse Branson
583 | Jarrell Brantley
584 | Jim Brasco
585 | Mike Bratz
586 | Carl Braun
587 | Ignas Brazdeikis
588 | Tim Breaux
589 | J.R. Bremer
590 | Pete Brennan
591 | Tom Brennan
592 | Randy Breuer
593 | Corey Brewer
594 | Jamison Brewer
595 | Jim Brewer
596 | Ron Brewer
597 | Ronnie Brewer
598 | Primoz Brezec
599 | Frankie Brian
600 | Frank Brickowski
601 | Junior Bridgeman
602 | Bill Bridges
603 | Mikal Bridges
604 | Miles Bridges
605 | Al Brightman
606 | Aud Brindley
607 | Isaiah Briscoe
608 | John Brisker
609 | Oshae Brissett
610 | Allan Bristow
611 | Tyrone Britt
612 | Wayman Britt
613 | Mike Brittain
614 | Dave Britton
615 | Jon Brockman
616 | Ryan Broekhoff
617 | Jim Brogan
618 | Malcolm Brogdon
619 | Gary Brokaw
620 | Price Brookfield
621 | Clarence Brookins
622 | Aaron Brooks
623 | Dillon Brooks
624 | Kevin Brooks
625 | MarShon Brooks
626 | Michael Brooks
627 | Scott Brooks
628 | Andre Brown
629 | Anthony Brown
630 | Bob Brown
631 | Bobby Brown
632 | Bruce Brown
633 | Charlie Brown
634 | Chucky Brown
635 | Damone Brown
636 | Darrell Brown
637 | Dee Brown
638 | Dee Brown
639 | Derrick Brown
640 | Devin Brown
641 | Ernest Brown
642 | Fred Brown
643 | George Brown
644 | Gerald Brown
645 | Harold Brown
646 | Jabari Brown
647 | Jaylen Brown
648 | John Brown
649 | Kedrick Brown
650 | Kwame Brown
651 | Larry Brown
652 | Leon Brown
653 | Lewis Brown
654 | Lorenzo Brown
655 | Marcus Brown
656 | Markel Brown
657 | Mike Brown
658 | Moses Brown
659 | Myron Brown
660 | P.J. Brown
661 | Randy Brown
662 | Raymond Brown
663 | Rickey Brown
664 | Roger Brown
665 | Roger Brown
666 | Shannon Brown
667 | Stan Brown
668 | Sterling Brown
669 | Tierre Brown
670 | Tony Brown
671 | Troy Brown
672 | Jim Browne
673 | Stanley Brundy
674 | Brian Brunkhorst
675 | George Bruns
676 | Jalen Brunson
677 | Rick Brunson
678 | Nicolas Brussino
679 | Em Bryant
680 | Joe Bryant
681 | Kobe Bryant
682 | Mark Bryant
683 | Thomas Bryant
684 | Wallace Bryant
685 | Torgeir Bryn
686 | George Bucci
687 | Joe Buckhalter
688 | Steve Bucknall
689 | Cleveland Buckner
690 | Greg Buckner
691 | Quinn Buckner
692 | Dave Budd
693 | Chase Budinger
694 | Walt Budko
695 | Jud Buechler
696 | Rodney Buford
697 | Matt Bullard
698 | Reggie Bullock
699 | Larry Bunce
700 | Greg Bunch
701 | Dick Bunt
702 | Bill Buntin
703 | Bill Bunting
704 | Ticky Burden
705 | Pat Burke
706 | Trey Burke
707 | Roger Burkman
708 | Alec Burks
709 | Antonio Burks
710 | Kevin Burleson
711 | Tom Burleson
712 | Jack Burmaster
713 | David Burns
714 | Evers Burns
715 | Jim Burns
716 | Scott Burrell
717 | Art Burris
718 | Junior Burrough
719 | Bob Burrow
720 | Deonte Burton
721 | Ed Burton
722 | Willie Burton
723 | Steve Burtt
724 | Don Buse
725 | David Bustion
726 | Donnie Butcher
727 | Al Butler
728 | Caron Butler
729 | Greg Butler
730 | Jackie Butler
731 | Jimmy Butler
732 | Mike Butler
733 | Mitchell Butler
734 | Rasual Butler
735 | Dwight Buycks
736 | Derrick Byars
737 | Andrew Bynum
738 | Will Bynum
739 | Walter Byrd
740 | Marty Byrnes
741 | Tommy Byrnes
742 | Michael Bytzura
743 | Zarko Cabarkapa
744 | Barney Cable
745 | Bruno Caboclo
746 | Devontae Cacok
747 | Jason Caffey
748 | Michael Cage
749 | Gerry Calabrese
750 | Nick Calathes
751 | Jose Calderon
752 | Adrian Caldwell
753 | Jim Caldwell
754 | Joe Caldwell
755 | Kentavious Caldwell-Pope
756 | Bill Calhoun
757 | Corky Calhoun
758 | Demetrius Calip
759 | Tom Callahan
760 | Rick Calloway
761 | Ernie Calverley
762 | Mack Calvin
763 | Dexter Cambridge
764 | Marcus Camby
765 | Elden Campbell
766 | Tony Campbell
767 | Isaiah Canaan
768 | Vlatko Cancar
769 | Larry Cannon
770 | Clint Capela
771 | Derrick Caracter
772 | Frank Card
773 | Brian Cardinal
774 | Howie Carl
775 | Chet Carlisle
776 | Geno Carlisle
777 | Rick Carlisle
778 | Don Carlos
779 | Al Carlson
780 | Don Carlson
781 | Bob Carney
782 | Rodney Carney
783 | Bob Carpenter
784 | Antoine Carr
785 | Austin Carr
786 | Chris Carr
787 | Cory Carr
788 | Kenny Carr
789 | M.L. Carr
790 | Darel Carrier
791 | Bob Carrington
792 | DeMarre Carroll
793 | Joe Barry Carroll
794 | Matt Carroll
795 | Jimmy Carruth
796 | Anthony Carter
797 | Butch Carter
798 | Fred Carter
799 | George Carter
800 | Howard Carter
801 | Jake Carter
802 | Jevon Carter
803 | Maurice Carter
804 | Reggie Carter
805 | Ron Carter
806 | Vince Carter
807 | Wendell Carter
808 | Michael Carter-Williams
809 | Bill Cartwright
810 | Jay Carty
811 | Alex Caruso
812 | Cornelius Cash
813 | Sam Cash
814 | Sam Cassell
815 | Omri Casspi
816 | Harvey Catchings
817 | Terry Catledge
818 | Sid Catlett
819 | Kelvin Cato
820 | Bobby Cattage
821 | Willie Cauley-Stein
822 | Troy Caupain
823 | Duane Causwell
824 | Tyler Cavanaugh
825 | Ron Cavenall
826 | Cedric Ceballos
827 | John Celestand
828 | Al Cervi
829 | Lionel Chalmers
830 | Mario Chalmers
831 | Bill Chamberlain
832 | Wilt Chamberlain
833 | Jerry Chambers
834 | Tom Chambers
835 | Mike Champion
836 | Tyson Chandler
837 | Wilson Chandler
838 | Don Chaney
839 | John Chaney
840 | Rex Chapman
841 | Wayne Chapman
842 | Len Chappell
843 | Ken Charles
844 | Lorenzo Charles
845 | Joe Chealey
846 | Calbert Cheaney
847 | Zylan Cheatham
848 | Maurice Cheeks
849 | Phil Chenier
850 | Will Cherry
851 | Derrick Chievous
852 | Pete Chilcutt
853 | Josh Childress
854 | Randolph Childress
855 | Chris Childs
856 | Chris Chiozza
857 | Leroy Chollet
858 | Jim Chones
859 | Marquese Chriss
860 | Fred Christ
861 | Cal Christensen
862 | Bob Christian
863 | Doug Christie
864 | Dionte Christmas
865 | Rakeem Christmas
866 | Semaj Christon
867 | Patrick Christopher
868 | Stephen Chubin
869 | Robert Churchwell
870 | Archie Clark
871 | Carlos Clark
872 | Earl Clark
873 | Gary Clark
874 | Ian Clark
875 | Keon Clark
876 | Richard Clark
877 | Brandon Clarke
878 | Coty Clarke
879 | Jordan Clarkson
880 | Gian Clavell
881 | Victor Claver
882 | John Clawson
883 | Charles Claxton
884 | Nicolas Claxton
885 | Speedy Claxton
886 | Jim Cleamons
887 | Mateen Cleaves
888 | Barry Clemens
889 | Chris Clemons
890 | Antonius Cleveland
891 | Nat Clifton
892 | Bill Closs
893 | Keith Closs
894 | Paul Cloyd
895 | Bob Cluggish
896 | Ben Clyde
897 | Amir Coffey
898 | Richard Coffey
899 | Fred Cofield
900 | John Coker
901 | Norris Cole
902 | Ben Coleman
903 | Derrick Coleman
904 | E.C. Coleman
905 | Jack Coleman
906 | Norris Coleman
907 | Bimbo Coles
908 | Jason Collier
909 | Art Collins
910 | Don Collins
911 | Doug Collins
912 | James Collins
913 | Jarron Collins
914 | Jason Collins
915 | Jimmy Collins
916 | John Collins
917 | Mardy Collins
918 | Sherron Collins
919 | Zach Collins
920 | Kyle Collinsworth
921 | Darren Collison
922 | Nick Collison
923 | Joe Colone
924 | Bonzie Colson
925 | Sean Colson
926 | Steve Colter
927 | Glen Combs
928 | Leroy Combs
929 | John Comeaux
930 | Dallas Comegys
931 | Larry Comley
932 | Jeffrey Congdon
933 | Gene Conley
934 | Larry Conley
935 | Mike Conley
936 | Ed Conlin
937 | Marty Conlon
938 | Pat Connaughton
939 | Jimmy Conner
940 | Lester Conner
941 | Chuck Connors
942 | Will Conroy
943 | Anthony Cook
944 | Bert Cook
945 | Bobby Cook
946 | Brian Cook
947 | Daequan Cook
948 | Darwin Cook
949 | Jeff Cook
950 | Norm Cook
951 | Omar Cook
952 | Quinn Cook
953 | Tyler Cook
954 | Charles Cooke
955 | David Cooke
956 | Joe Cooke
957 | Jack Cooley
958 | Chuck Cooper
959 | Duane Cooper
960 | Joe Cooper
961 | Michael Cooper
962 | Wayne Cooper
963 | Tom Copa
964 | Chris Copeland
965 | Hollis Copeland
966 | Lanard Copeland
967 | Tyrone Corbin
968 | Chris Corchiani
969 | Ken Corley
970 | Ray Corley
971 | Dave Corzine
972 | Larry Costello
973 | Matt Costello
974 | Bryce Cotton
975 | Jack Cotton
976 | James Cotton
977 | John Coughran
978 | Mel Counts
979 | Steve Courtin
980 | Joe Courtney
981 | Marcus Cousin
982 | DeMarcus Cousins
983 | Bob Cousy
984 | Robert Covington
985 | Dave Cowens
986 | Chubby Cox
987 | Johnny Cox
988 | Wesley Cox
989 | Allen Crabbe
990 | Torrey Craig
991 | Chris Crawford
992 | Freddie Crawford
993 | Jamal Crawford
994 | Joe Crawford
995 | Jordan Crawford
996 | Mitch Creek
997 | Jim Creighton
998 | Ron Crevier
999 | Hal Crisler
1000 | Joe Crispin
1001 | Charlie Criss
1002 | Russell Critchfield
1003 | Winston Crite
1004 | Javaris Crittenton
1005 | Dillard Crocker
1006 | Bobby Croft
1007 | Geoff Crompton
1008 | Terry Crosby
1009 | Austin Croshere
1010 | Jeff Cross
1011 | Pete Cross
1012 | Russell Cross
1013 | Chink Crossin
1014 | John Crotty
1015 | Bill Crow
1016 | Mark Crow
1017 | Corey Crowder
1018 | Jae Crowder
1019 | Al Cueto
1020 | Jarrett Culver
1021 | Pat Cummings
1022 | Terry Cummings
1023 | Vonteego Cummings
1024 | Billy Cunningham
1025 | Dante Cunningham
1026 | Dick Cunningham
1027 | Jared Cunningham
1028 | William Cunningham
1029 | Radisav Curcic
1030 | Armand Cure
1031 | Earl Cureton
1032 | Bill Curley
1033 | Fran Curran
1034 | Dell Curry
1035 | Eddy Curry
1036 | JamesOn Curry
1037 | Michael Curry
1038 | Seth Curry
1039 | Stephen Curry
1040 | Rastko Cvetkovic
1041 | Mike D'Antoni
1042 | Mike Dabich
1043 | Ed Dahler
1044 | Quintin Dailey
1045 | Samuel Dalembert
1046 | Howie Dallmar
1047 | Erick Dampier
1048 | Louie Dampier
1049 | Bob Dandridge
1050 | Antonio Daniels
1051 | Erik Daniels
1052 | Lloyd Daniels
1053 | Marquis Daniels
1054 | Mel Daniels
1055 | Troy Daniels
1056 | Sasha Danilovic
1057 | Adrian Dantley
1058 | Pete Darcey
1059 | Jimmy Darden
1060 | Ollie Darden
1061 | Yinka Dare
1062 | Jesse Dark
1063 | Rick Darnell
1064 | Jimmy Darrow
1065 | Luigi Datome
1066 | Brad Daugherty
1067 | Mack Daughtry
1068 | Kornel David
1069 | Jermareo Davidson
1070 | Bob Davies
1071 | Brandon Davies
1072 | Anthony Davis
1073 | Antonio Davis
1074 | Aubrey Davis
1075 | Baron Davis
1076 | Ben Davis
1077 | Bill Davis
1078 | Bob Davis
1079 | Brad Davis
1080 | Brian Davis
1081 | Charles Davis
1082 | Charlie Davis
1083 | Dale Davis
1084 | Deyonta Davis
1085 | Dwight Davis
1086 | Ed Davis
1087 | Emanual Davis
1088 | Glen Davis
1089 | Harry Davis
1090 | Hubert Davis
1091 | Jim Davis
1092 | Johnny Davis
1093 | Josh Davis
1094 | Lee Davis
1095 | Mark Davis
1096 | Mark Davis
1097 | Mel Davis
1098 | Mickey Davis
1099 | Mike Davis
1100 | Mike Davis
1101 | Monti Davis
1102 | Paul Davis
1103 | Ralph Davis
1104 | Red Davis
1105 | Ricky Davis
1106 | Ron Davis
1107 | Terence Davis
1108 | Terry Davis
1109 | Tyler Davis
1110 | Walt Davis
1111 | Walter Davis
1112 | Warren Davis
1113 | Willie Davis
1114 | Andre Dawkins
1115 | Darryl Dawkins
1116 | Johnny Dawkins
1117 | Paul Dawkins
1118 | Branden Dawson
1119 | Eric Dawson
1120 | Jimmy Dawson
1121 | Tony Dawson
1122 | Todd Day
1123 | Austin Daye
1124 | Darren Daye
1125 | Nando De Colo
1126 | Billy DeAngelis
1127 | Dave DeBusschere
1128 | Andrew DeClercq
1129 | Nate DeLong
1130 | Joe DePre
1131 | DeMar DeRozan
1132 | Hank DeZonie
1133 | Greg Deane
1134 | Dewayne Dedmon
1135 | Don Dee
1136 | Archie Dees
1137 | Terry Dehere
1138 | Red Dehnert
1139 | Bryce Dejean-Jones
1140 | Sam Dekker
1141 | Vinny Del Negro
1142 | Malcolm Delaney
1143 | Bison Dele
1144 | Carlos Delfino
1145 | Angel Delgado
1146 | Tony Delk
1147 | Matthew Dellavedova
1148 | Fennis Dembo
1149 | Larry Demic
1150 | Dell Demps
1151 | George Dempsey
1152 | Luol Deng
1153 | Kenny Dennard
1154 | Blaine Denning
1155 | Justin Dentmon
1156 | Randy Denton
1157 | Rod Derline
1158 | Marcus Derrickson
1159 | Dave Deutsch
1160 | Corky Devlin
1161 | Ernie DiGregorio
1162 | Donte DiVincenzo
1163 | Derrick Dial
1164 | Cheick Diallo
1165 | Hamidou Diallo
1166 | Boris Diaw
1167 | Yakhouba Diawara
1168 | Guillermo Diaz
1169 | Dan Dickau
1170 | Kaniel Dickens
1171 | Henry Dickerson
1172 | Michael Dickerson
1173 | Clyde Dickey
1174 | Derrek Dickey
1175 | Dick Dickey
1176 | John Dickson
1177 | Travis Diener
1178 | Gorgui Dieng
1179 | Connie Dierking
1180 | Coby Dietrick
1181 | Craig Dill
1182 | Dwaine Dillard
1183 | Mickey Dillard
1184 | Bob Dille
1185 | Hook Dillon
1186 | Byron Dinkins
1187 | Jackie Dinkins
1188 | Harry Dinnel
1189 | Bill Dinwiddie
1190 | Spencer Dinwiddie
1191 | Ike Diogu
1192 | DeSagana Diop
1193 | Terry Dischinger
1194 | Fred Diute
1195 | Vlade Divac
1196 | Juan Dixon
1197 | Earl Dodd
1198 | Michael Doleac
1199 | Joe Dolhon
1200 | Bob Doll
1201 | James Donaldson
1202 | Luka Doncic
1203 | Bob Donham
1204 | Billy Donovan
1205 | Harry Donovan
1206 | Keyon Dooling
1207 | Aleksandar Dordevic
1208 | Jacky Dorsey
1209 | Joey Dorsey
1210 | Ron Dorsey
1211 | Tyler Dorsey
1212 | Luguentz Dort
1213 | Damyean Dotson
1214 | Quincy Douby
1215 | Bruce Douglas
1216 | John Douglas
1217 | Leon Douglas
1218 | Sherman Douglas
1219 | Toney Douglas
1220 | Chris Douglas-Roberts
1221 | Sekou Doumbouya
1222 | Sonny Dove
1223 | Jerry Dover
1224 | Zabian Dowdell
1225 | Bill Downey
1226 | Steve Downing
1227 | Danny Doyle
1228 | Milton Doyle
1229 | PJ Dozier
1230 | Terry Dozier
1231 | Goran Dragic
1232 | Zoran Dragic
1233 | Greg Dreiling
1234 | Bryce Drew
1235 | John Drew
1236 | Larry Drew
1237 | Larry Drew
1238 | Clyde Drexler
1239 | Nate Driggers
1240 | Terry Driscoll
1241 | Predrag Drobnjak
1242 | Ralph Drollinger
1243 | Andre Drummond
1244 | Dennis DuVal
1245 | Dick Duckett
1246 | Kevin Duckworth
1247 | Charles Dudley
1248 | Chris Dudley
1249 | Jared Dudley
1250 | Terry Duerod
1251 | Bob Duffy
1252 | Bob Duffy
1253 | Chris Duhon
1254 | Duje Dukan
1255 | Walter Dukes
1256 | Joe Dumars
1257 | Rich Dumas
1258 | Richard Dumas
1259 | Tony Dumas
1260 | Andy Duncan
1261 | Tim Duncan
1262 | Mike Dunleavy
1263 | Mike Dunleavy
1264 | Kris Dunn
1265 | Pat Dunn
1266 | T.R. Dunn
1267 | Ronald Dupree
1268 | Kevin Durant
1269 | John Duren
1270 | Jarrett Durham
1271 | Pat Durham
1272 | Devin Durrant
1273 | Ken Durrett
1274 | Trevon Duval
1275 | Jack Dwan
1276 | Craig Dykema
1277 | Gene Dyker
1278 | Jerome Dyson
1279 | Ledell Eackles
1280 | Jim Eakins
1281 | Acie Earl
1282 | Ed Earle
1283 | Cleanthony Early
1284 | Penny Early
1285 | Mark Eaton
1286 | Jerry Eaves
1287 | Devin Ebanks
1288 | Bill Ebben
1289 | Al Eberhard
1290 | Ndudi Ebi
1291 | Roy Ebron
1292 | Jarell Eddie
1293 | Patrick Eddie
1294 | Dike Eddleman
1295 | Kenton Edelin
1296 | Charles Edge
1297 | Bobby Edmonds
1298 | Keith Edmonson
1299 | Tyus Edney
1300 | Bill Edwards
1301 | Blue Edwards
1302 | Carsen Edwards
1303 | Corsley Edwards
1304 | Doug Edwards
1305 | Franklin Edwards
1306 | James Edwards
1307 | Jay Edwards
1308 | John Edwards
1309 | Kevin Edwards
1310 | Shane Edwards
1311 | Vince Edwards
1312 | Johnny Egan
1313 | Lonnie Eggleston
1314 | Bulbs Ehlers
1315 | Craig Ehlo
1316 | Rich Eichhorst
1317 | Howard Eisley
1318 | Obinna Ekezie
1319 | Khalid El-Amin
1320 | Don Eliason
1321 | Mario Elie
1322 | Ray Ellefson
1323 | Henry Ellenson
1324 | Wayne Ellington
1325 | Bob Elliott
1326 | Sean Elliott
1327 | Bo Ellis
1328 | Boo Ellis
1329 | Dale Ellis
1330 | Harold Ellis
1331 | Joe Ellis
1332 | LaPhonso Ellis
1333 | LeRon Ellis
1334 | Leroy Ellis
1335 | Monta Ellis
1336 | Pervis Ellison
1337 | Len Elmore
1338 | Francisco Elson
1339 | Darrell Elston
1340 | Melvin Ely
1341 | Joel Embiid
1342 | Wayne Embry
1343 | Andre Emmett
1344 | Ned Endress
1345 | Chris Engler
1346 | Wayne Englestad
1347 | A.J. English
1348 | Alex English
1349 | Claude English
1350 | Jo Jo English
1351 | Kim English
1352 | Scott English
1353 | Gene Englund
1354 | James Ennis
1355 | Tyler Ennis
1356 | Ray Epps
1357 | Semih Erden
1358 | Bo Erias
1359 | Keith Erickson
1360 | Julius Erving
1361 | Evan Eschmeyer
1362 | Jack Eskridge
1363 | Vincenzo Esposito
1364 | Drew Eubanks
1365 | Billy Evans
1366 | Bob Evans
1367 | Brian Evans
1368 | Earl Evans
1369 | Jacob Evans
1370 | Jawun Evans
1371 | Jeremy Evans
1372 | Maurice Evans
1373 | Mike Evans
1374 | Reggie Evans
1375 | Tyreke Evans
1376 | Daniel Ewing
1377 | Patrick Ewing
1378 | Patrick Ewing
1379 | Dante Exum
1380 | Christian Eyenga
1381 | Festus Ezeli
1382 | Johnny Ezersky
1383 | Joe Fabel
1384 | John Fairchild
1385 | Tacko Fall
1386 | Phil Farbman
1387 | Kenneth Faried
1388 | Dick Farley
1389 | Jordan Farmar
1390 | Desmon Farmer
1391 | Jim Farmer
1392 | Mike Farmer
1393 | Tony Farmer
1394 | Bob Faught
1395 | Vitor Faverani
1396 | Derrick Favors
1397 | Nick Fazekas
1398 | Dave Fedor
1399 | Bob Feerick
1400 | Butch Feher
1401 | Jamie Feick
1402 | Ron Feiereisel
1403 | George Feigenbaum
1404 | Dave Feitl
1405 | Kay Felder
1406 | Cristiano Felicio
1407 | Carrick Felix
1408 | Noel Felix
1409 | Ray Felix
1410 | Raymond Felton
1411 | Jake Fendley
1412 | Warren Fenley
1413 | Desmond Ferguson
1414 | Terrance Ferguson
1415 | Rudy Fernandez
1416 | Bruno Fernando
1417 | Eric Fernsten
1418 | Al Ferrari
1419 | Rolando Ferreira
1420 | Duane Ferrell
1421 | Yogi Ferrell
1422 | Arnie Ferrin
1423 | Bob Ferry
1424 | Danny Ferry
1425 | Kyrylo Fesenko
1426 | Bobby Fields
1427 | Kenny Fields
1428 | Landry Fields
1429 | Ron Filipek
1430 | Greg Fillmore
1431 | Larry Finch
1432 | Hank Finkel
1433 | Michael Finley
1434 | Danny Finn
1435 | Dorian Finney-Smith
1436 | Matt Fish
1437 | Derek Fisher
1438 | Richard Fisher
1439 | Gerald Fitch
1440 | Bob Fitzgerald
1441 | Dick Fitzgerald
1442 | Marcus Fizer
1443 | Jerry Fleishman
1444 | Al Fleming
1445 | Ed Fleming
1446 | Vern Fleming
1447 | Luis Flores
1448 | Bruce Flowers
1449 | Sleepy Floyd
1450 | Jonny Flynn
1451 | Mike Flynn
1452 | Larry Fogle
1453 | Jack Foley
1454 | Isaac Fontaine
1455 | Levi Fontaine
1456 | Jeff Foote
1457 | Bryn Forbes
1458 | Gary Forbes
1459 | Alphonso Ford
1460 | Alton Ford
1461 | Bob Ford
1462 | Chris Ford
1463 | Don Ford
1464 | Jake Ford
1465 | Phil Ford
1466 | Sharrod Ford
1467 | Sherell Ford
1468 | T.J. Ford
1469 | Donnie Forman
1470 | Bayard Forrest
1471 | Joseph Forte
1472 | Courtney Fortson
1473 | Danny Fortson
1474 | Fred Foster
1475 | Greg Foster
1476 | Jeff Foster
1477 | Jimmy Foster
1478 | Rod Foster
1479 | Antonis Fotsis
1480 | Evan Fournier
1481 | Larry Foust
1482 | Calvin Fowler
1483 | Jerry Fowler
1484 | Tremaine Fowlkes
1485 | De'Aaron Fox
1486 | Harold Fox
1487 | Jim Fox
1488 | Rick Fox
1489 | Randy Foye
1490 | Adonal Foyle
1491 | Richie Frahm
1492 | Steve Francis
1493 | Tellis Frank
1494 | Nat Frankel
1495 | Jamaal Franklin
1496 | William Franklin
1497 | Ronald Franz
1498 | Melvin Frazier
1499 | Michael Frazier
1500 | Tim Frazier
1501 | Walt Frazier
1502 | Will Frazier
1503 | Anthony Frederick
1504 | Jimmer Fredette
1505 | World B. Free
1506 | Joel Freeland
1507 | Donnie Freeman
1508 | Gary Freeman
1509 | Rod Freeman
1510 | Matt Freije
1511 | Frido Frey
1512 | Larry Friend
1513 | Pat Frink
1514 | Jim Fritsche
1515 | Channing Frye
1516 | Bernie Fryer
1517 | Frank Fucarino
1518 | Herm Fuetsch
1519 | Joe Fulks
1520 | Carl Fuller
1521 | Hiram Fuller
1522 | Todd Fuller
1523 | Tony Fuller
1524 | Markelle Fultz
1525 | Lawrence Funderburke
1526 | Terry Furlow
1527 | Bill Gabor
1528 | Wenyen Gabriel
1529 | Dan Gadzuric
1530 | Daniel Gafford
1531 | Deng Gai
1532 | Elmer Gainer
1533 | Bill Gaines
1534 | Corey Gaines
1535 | David Gaines
1536 | Reece Gaines
1537 | Sundiata Gaines
1538 | Mike Gale
1539 | Chad Gallagher
1540 | Harry Gallatin
1541 | Gene Gallette
1542 | Danilo Gallinari
1543 | Langston Galloway
1544 | Dave Gambee
1545 | Kevin Gamble
1546 | Bob Gantt
1547 | Jorge Garbajosa
1548 | Ruben Garces
1549 | Alex Garcia
1550 | Francisco Garcia
1551 | Chuck Gardner
1552 | Earl Gardner
1553 | Kenneth Gardner
1554 | Thomas Gardner
1555 | Vern Gardner
1556 | Jack Garfinkel
1557 | Patricio Garino
1558 | Darius Garland
1559 | Gary Garland
1560 | Winston Garland
1561 | Dick Garmaker
1562 | Bill Garner
1563 | Chris Garner
1564 | Bill Garnett
1565 | Kevin Garnett
1566 | Marlon Garnett
1567 | Billy Garrett
1568 | Calvin Garrett
1569 | Dean Garrett
1570 | Diante Garrett
1571 | Dick Garrett
1572 | Rowland Garrett
1573 | Tom Garrick
1574 | John Garris
1575 | Kiwane Garris
1576 | Pat Garrity
1577 | Jim Garvin
1578 | Marc Gasol
1579 | Pau Gasol
1580 | Frank Gates
1581 | Chris Gatling
1582 | Kenny Gattison
1583 | Rudy Gay
1584 | Ed Gayda
1585 | Andrew Gaze
1586 | Michael Gbinije
1587 | Reggie Geary
1588 | Alonzo Gee
1589 | Matt Geiger
1590 | Mickael Gelabale
1591 | Devean George
1592 | Jack George
1593 | Paul George
1594 | Tate George
1595 | Marcus Georges-Hunt
1596 | Gus Gerard
1597 | Derrick Gervin
1598 | George Gervin
1599 | Gorham Getchell
1600 | John Gianelli
1601 | Dick Gibbs
1602 | Daniel Gibson
1603 | Dee Gibson
1604 | Hoot Gibson
1605 | Jonathan Gibson
1606 | Mel Gibson
1607 | Mike Gibson
1608 | Taj Gibson
1609 | J.R. Giddens
1610 | Trey Gilder
1611 | Harry Giles
1612 | Shai Gilgeous-Alexander
1613 | Eddie Gill
1614 | Kendall Gill
1615 | Ben Gillery
1616 | Jack Gillespie
1617 | Armen Gilliam
1618 | Herm Gilliam
1619 | Artis Gilmore
1620 | Walt Gilmore
1621 | Chuck Gilmur
1622 | Manu Ginobili
1623 | Gordan Giricek
1624 | Jack Givens
1625 | Mickell Gladness
1626 | George Glamack
1627 | Gerald Glass
1628 | Mike Glenn
1629 | Normie Glick
1630 | Georgi Glouchkov
1631 | Clarence Glover
1632 | Dion Glover
1633 | Andreas Glyniadakis
1634 | Mike Gminski
1635 | Rudy Gobert
1636 | Dan Godfread
1637 | Tom Gola
1638 | Ben Goldfaden
1639 | Anthony Goldwire
1640 | Ryan Gomes
1641 | Glen Gondrezick
1642 | Grant Gondrezick
1643 | Drew Gooden
1644 | Gail Goodrich
1645 | Steve Goodrich
1646 | Archie Goodwin
1647 | Brandon Goodwin
1648 | Pop Goodwin
1649 | Aaron Gordon
1650 | Ben Gordon
1651 | Drew Gordon
1652 | Eric Gordon
1653 | Lancaster Gordon
1654 | Paul Gordon
1655 | Marcin Gortat
1656 | Leo Gottlieb
1657 | Andrew Goudelock
1658 | Gerald Govan
1659 | Bato Govedarica
1660 | Joe Graboski
1661 | Ricky Grace
1662 | Calvin Graham
1663 | Devonte' Graham
1664 | Greg Graham
1665 | Joey Graham
1666 | Mal Graham
1667 | Orlando Graham
1668 | Paul Graham
1669 | Stephen Graham
1670 | Treveon Graham
1671 | Jim Grandholm
1672 | Ron Grandison
1673 | Danny Granger
1674 | Stewart Granger
1675 | Brian Grant
1676 | Bud Grant
1677 | Gary Grant
1678 | Greg Grant
1679 | Harvey Grant
1680 | Horace Grant
1681 | Jerami Grant
1682 | Jerian Grant
1683 | Josh Grant
1684 | Paul Grant
1685 | Travis Grant
1686 | Donte Grantham
1687 | Don Grate
1688 | Butch Graves
1689 | Aaron Gray
1690 | Devin Gray
1691 | Ed Gray
1692 | Evric Gray
1693 | Gary Gray
1694 | Josh Gray
1695 | Leonard Gray
1696 | Stuart Gray
1697 | Sylvester Gray
1698 | Wyndol Gray
1699 | Jeff Grayer
1700 | Bob Greacen
1701 | A.C. Green
1702 | Danny Green
1703 | Devin Green
1704 | Draymond Green
1705 | Erick Green
1706 | Gerald Green
1707 | JaMychal Green
1708 | Javonte Green
1709 | Jeff Green
1710 | Johnny Green
1711 | Ken Green
1712 | Kenny Green
1713 | Lamar Green
1714 | Litterial Green
1715 | Luther Green
1716 | Mike Green
1717 | Rickey Green
1718 | Sean Green
1719 | Si Green
1720 | Sidney Green
1721 | Steve Green
1722 | Taurean Green
1723 | Tommie Green
1724 | Willie Green
1725 | Donte Greene
1726 | Orien Greene
1727 | Jerry Greenspan
1728 | Dave Greenwood
1729 | Hal Greer
1730 | Lynn Greer
1731 | Gary Gregor
1732 | Claude Gregory
1733 | John Greig
1734 | Norm Grekin
1735 | Kevin Grevey
1736 | Dennis Grey
1737 | Adrian Griffin
1738 | Blake Griffin
1739 | Eddie Griffin
1740 | Greg Griffin
1741 | Paul Griffin
1742 | Taylor Griffin
1743 | Darrell Griffith
1744 | Chuck Grigsby
1745 | Derek Grimm
1746 | Woody Grimshaw
1747 | Dick Groat
1748 | Bob Gross
1749 | Mike Grosso
1750 | Jerry Grote
1751 | Alex Groza
1752 | Dick Grubar
1753 | Anthony Grundy
1754 | Ernie Grunfeld
1755 | Gene Guarilia
1756 | Petur Gudmundsson
1757 | Marko Guduric
1758 | Richie Guerin
1759 | Tom Gugliotta
1760 | Andres Guibert
1761 | Jay Guidinger
1762 | Coulby Gunther
1763 | Dave Gunther
1764 | Al Guokas
1765 | Matt Guokas
1766 | Matt Guokas
1767 | Jorge Gutierrez
1768 | Kyle Guy
1769 | A.J. Guyton
1770 | Rui Hachimura
1771 | Rudy Hackett
1772 | Hamed Haddadi
1773 | Jim Hadnot
1774 | Scott Haffner
1775 | Cliff Hagan
1776 | Glenn Hagan
1777 | Tom Hagan
1778 | Robert Hahn
1779 | Al Hairston
1780 | Happy Hairston
1781 | Lindsay Hairston
1782 | Malik Hairston
1783 | P.J. Hairston
1784 | Marcus Haislip
1785 | Chick Halbert
1786 | Swede Halbrook
1787 | Bruce Hale
1788 | Hal Hale
1789 | Jack Haley
1790 | Shaler Halimon
1791 | Devon Hall
1792 | Donta Hall
1793 | Mike Hall
1794 | Jeff Halliburton
1795 | Darvin Ham
1796 | Steve Hamer
1797 | Dale Hamilton
1798 | Daniel Hamilton
1799 | Dennis Hamilton
1800 | Joe Hamilton
1801 | Jordan Hamilton
1802 | Justin Hamilton
1803 | Ralph Hamilton
1804 | Richard Hamilton
1805 | Roy Hamilton
1806 | Steve Hamilton
1807 | Tang Hamilton
1808 | Thomas Hamilton
1809 | Zendon Hamilton
1810 | Geert Hammink
1811 | Julian Hammond
1812 | Tom Hammonds
1813 | A.J. Hammons
1814 | Joe Hamood
1815 | Darrin Hancock
1816 | Ben Handlogten
1817 | Cecil Hankins
1818 | Phil Hankinson
1819 | Dusty Hannahs
1820 | Alex Hannum
1821 | Don Hanrahan
1822 | Rollen Hans
1823 | Ben Hansbrough
1824 | Tyler Hansbrough
1825 | Bob Hansen
1826 | Glenn Hansen
1827 | Lars Hansen
1828 | Travis Hansen
1829 | Reggie Hanson
1830 | Bill Hanzlik
1831 | Luke Harangody
1832 | Anfernee Hardaway
1833 | Tim Hardaway
1834 | Tim Hardaway Jr.
1835 | James Harden
1836 | Reggie Harding
1837 | Charlie Hardnett
1838 | Alan Hardy
1839 | Darrell Hardy
1840 | James Hardy
1841 | Ira Harge
1842 | John Hargis
1843 | Maurice Harkless
1844 | Jerry Harkness
1845 | Skip Harlicka
1846 | Jerome Harmon
1847 | Derek Harper
1848 | Jared Harper
1849 | Justin Harper
1850 | Mike Harper
1851 | Ron Harper
1852 | Matt Harpring
1853 | Montrezl Harrell
1854 | Josh Harrellson
1855 | Adam Harrington
1856 | Al Harrington
1857 | Junior Harrington
1858 | Othella Harrington
1859 | Art Harris
1860 | Bernie Harris
1861 | Billy Harris
1862 | Bob Harris
1863 | Chris Harris
1864 | Devin Harris
1865 | Elias Harris
1866 | Gary Harris
1867 | Joe Harris
1868 | Lucious Harris
1869 | Manny Harris
1870 | Mike Harris
1871 | Steve Harris
1872 | Terrel Harris
1873 | Tobias Harris
1874 | Tony Harris
1875 | Aaron Harrison
1876 | Andrew Harrison
1877 | Bob Harrison
1878 | David Harrison
1879 | Shaquille Harrison
1880 | Jason Hart
1881 | Josh Hart
1882 | Isaiah Hartenstein
1883 | Antonio Harvey
1884 | Donnell Harvey
1885 | Scott Haskin
1886 | Clem Haskins
1887 | Udonis Haslem
1888 | Trenton Hassell
1889 | Billy Hassett
1890 | Joe Hassett
1891 | Scott Hastings
1892 | Kirk Haston
1893 | Vern Hatton
1894 | John Havlicek
1895 | Spencer Hawes
1896 | Steve Hawes
1897 | Bubbles Hawkins
1898 | Connie Hawkins
1899 | Hersey Hawkins
1900 | Juaquin Hawkins
1901 | Marshall Hawkins
1902 | Michael Hawkins
1903 | Tom Hawkins
1904 | Nate Hawthorne
1905 | Chuck Hayes
1906 | Elvin Hayes
1907 | Jarvis Hayes
1908 | Jaxson Hayes
1909 | Jim Hayes
1910 | Nigel Hayes
1911 | Steve Hayes
1912 | Gordon Hayward
1913 | Lazar Hayward
1914 | Brendan Haywood
1915 | Spencer Haywood
1916 | John Hazen
1917 | Walt Hazzard
1918 | Luther Head
1919 | Shane Heal
1920 | Brian Heaney
1921 | Gar Heard
1922 | Reggie Hearn
1923 | Herm Hedderick
1924 | Alvin Heggs
1925 | Tom Heinsohn
1926 | Dick Hemric
1927 | Alan Henderson
1928 | Cedric Henderson
1929 | Cedric Henderson
1930 | Dave Henderson
1931 | Gerald Henderson
1932 | Gerald Henderson
1933 | J.R. Henderson
1934 | Jerome Henderson
1935 | Kevin Henderson
1936 | Tom Henderson
1937 | Mark Hendrickson
1938 | Larry Hennessy
1939 | Don Henriksen
1940 | Al Henry
1941 | Bill Henry
1942 | Carl Henry
1943 | Conner Henry
1944 | Myke Henry
1945 | Skeeter Henry
1946 | Xavier Henry
1947 | John Henson
1948 | Steve Henson
1949 | Charles Hentz
1950 | Bill Herman
1951 | Kleggie Hermsen
1952 | Dewan Hernandez
1953 | Juan Hernangomez
1954 | Willy Hernangomez
1955 | Chris Herren
1956 | Carl Herrera
1957 | Walter Herrmann
1958 | Tyler Herro
1959 | Keith Herron
1960 | Sonny Hertzberg
1961 | Kevin Hervey
1962 | Dan Hester
1963 | Fred Hetzel
1964 | Bill Hewitt
1965 | Jack Hewson
1966 | Art Heyman
1967 | Mario Hezonja
1968 | Roy Hibbert
1969 | Nat Hickey
1970 | Isaiah Hicks
1971 | Phil Hicks
1972 | J.J. Hickson
1973 | Buddy Hield
1974 | Bill Higgins
1975 | Cory Higgins
1976 | Earle Higgins
1977 | Mike Higgins
1978 | Rod Higgins
1979 | Sean Higgins
1980 | Kenny Higgs
1981 | Johnny High
1982 | Haywood Highsmith
1983 | Wayne Hightower
1984 | Nene Hilario
1985 | Armond Hill
1986 | Cleo Hill
1987 | Gary Hill
1988 | George Hill
1989 | Grant Hill
1990 | Jordan Hill
1991 | Simmie Hill
1992 | Solomon Hill
1993 | Steven Hill
1994 | Tyrone Hill
1995 | Art Hillhouse
1996 | Darrun Hilliard
1997 | Darnell Hillman
1998 | Fred Hilton
1999 | Kirk Hinrich
2000 | Roy Hinson
2001 | Mel Hirsch
2002 | Lew Hitch
2003 | Robert Hite
2004 | Jaylen Hoard
2005 | Darington Hobson
2006 | Donald Hodge
2007 | Julius Hodge
2008 | Craig Hodges
2009 | Charlie Hoefer
2010 | Paul Hoffman
2011 | Bob Hogsett
2012 | Paul Hogue
2013 | Fred Hoiberg
2014 | Doug Holcomb
2015 | Randy Holcomb
2016 | Aaron Holiday
2017 | Jrue Holiday
2018 | Justin Holiday
2019 | Brad Holland
2020 | Joe Holland
2021 | John Holland
2022 | Wilbur Holland
2023 | Lionel Hollins
2024 | Ryan Hollins
2025 | Essie Hollis
2026 | Rondae Hollis-Jefferson
2027 | Dennis Holman
2028 | Richaun Holmes
2029 | Jim Holstein
2030 | A.W. Holt
2031 | Michael Holton
2032 | Dick Holub
2033 | Joe Holup
2034 | Red Holzman
2035 | Jerald Honeycutt
2036 | Tyler Honeycutt
2037 | Derek Hood
2038 | Rodney Hood
2039 | Bobby Hooper
2040 | Carroll Hooser
2041 | Tom Hoover
2042 | Bob Hopkins
2043 | Dave Hoppen
2044 | Dennis Hopson
2045 | Scotty Hopson
2046 | Johnny Horan
2047 | Cedrick Hordges
2048 | Al Horford
2049 | Tito Horford
2050 | Ron Horn
2051 | Jeff Hornacek
2052 | Dennis Horner
2053 | Robert Horry
2054 | Ed Horton
2055 | Talen Horton-Tucker
2056 | Bill Hosket
2057 | Bob Houbregs
2058 | Danuel House
2059 | Eddie House
2060 | Allan Houston
2061 | Byron Houston
2062 | Tom Hovasse
2063 | Brian Howard
2064 | Dwight Howard
2065 | Greg Howard
2066 | Josh Howard
2067 | Juwan Howard
2068 | Mo Howard
2069 | Otis Howard
2070 | Stephen Howard
2071 | William Howard
2072 | Bailey Howell
2073 | Bob Hubbard
2074 | Phil Hubbard
2075 | Lester Hudson
2076 | Lou Hudson
2077 | Troy Hudson
2078 | Marcelo Huertas
2079 | Kevin Huerter
2080 | Josh Huestis
2081 | Nate Huffman
2082 | Alfredrick Hughes
2083 | Eddie Hughes
2084 | Kim Hughes
2085 | Larry Hughes
2086 | Rick Hughes
2087 | Robbie Hummel
2088 | John Hummer
2089 | Ryan Humphrey
2090 | Isaac Humphries
2091 | Jay Humphries
2092 | Kris Humphries
2093 | Hot Rod Hundley
2094 | Brandon Hunter
2095 | Cedric Hunter
2096 | Chris Hunter
2097 | De'Andre Hunter
2098 | Les Hunter
2099 | Lindsey Hunter
2100 | Othello Hunter
2101 | R.J. Hunter
2102 | Steven Hunter
2103 | Vince Hunter
2104 | Bobby Hurley
2105 | Roy Hurley
2106 | Geoff Huston
2107 | Paul Huston
2108 | Mel Hutchins
2109 | Chandler Hutchison
2110 | Joe Hutton
2111 | Greg Hyder
2112 | Marc Iavaroni
2113 | Serge Ibaka
2114 | Andre Iguodala
2115 | Zydrunas Ilgauskas
2116 | Mile Ilic
2117 | Didier Ilunga-Mbenga
2118 | Ersan Ilyasova
2119 | Darrall Imhoff
2120 | Tom Ingelsby
2121 | Joe Ingles
2122 | Damien Inglis
2123 | Andre Ingram
2124 | Brandon Ingram
2125 | McCoy Ingram
2126 | Ervin Inniger
2127 | Byron Irvin
2128 | George Irvine
2129 | Kyrie Irving
2130 | Jonathan Isaac
2131 | Dan Issel
2132 | Mike Iuzzolino
2133 | Allen Iverson
2134 | Willie Iverson
2135 | Royal Ivey
2136 | Elvin Ivory
2137 | Wesley Iwundu
2138 | Warren Jabali
2139 | Jarrett Jack
2140 | Aaron Jackson
2141 | Al Jackson
2142 | Bobby Jackson
2143 | Cedric Jackson
2144 | Darnell Jackson
2145 | Demetrius Jackson
2146 | Frank Jackson
2147 | Greg Jackson
2148 | Jaren Jackson
2149 | Jaren Jackson
2150 | Jermaine Jackson
2151 | Jim Jackson
2152 | Josh Jackson
2153 | Justin Jackson
2154 | Luke Jackson
2155 | Luke Jackson
2156 | Marc Jackson
2157 | Mark Jackson
2158 | Mervin Jackson
2159 | Michael Jackson
2160 | Mike Jackson
2161 | Myron Jackson
2162 | Phil Jackson
2163 | Pierre Jackson
2164 | Ralph Jackson
2165 | Randell Jackson
2166 | Reggie Jackson
2167 | Stanley Jackson
2168 | Stephen Jackson
2169 | Tony Jackson
2170 | Tony Jackson
2171 | Tracy Jackson
2172 | Wardell Jackson
2173 | Fred Jacobs
2174 | Casey Jacobsen
2175 | Sam Jacobson
2176 | Dave Jamerson
2177 | Aaron James
2178 | Bernard James
2179 | Billy James
2180 | Damion James
2181 | Gene James
2182 | Henry James
2183 | Jerome James
2184 | Justin James
2185 | LeBron James
2186 | Mike James
2187 | Mike James
2188 | Tim James
2189 | Antawn Jamison
2190 | Harold Jamison
2191 | John Janisch
2192 | Howie Janotta
2193 | Marko Jaric
2194 | Tony Jaros
2195 | Jim Jarvis
2196 | Sarunas Jasikevicius
2197 | Nathan Jawai
2198 | Buddy Jeannette
2199 | Abdul Jeelani
2200 | Chris Jefferies
2201 | Othyus Jeffers
2202 | Al Jefferson
2203 | Amile Jefferson
2204 | Cory Jefferson
2205 | Dontell Jefferson
2206 | Richard Jefferson
2207 | DaQuan Jeffries
2208 | Jared Jeffries
2209 | Charles Jenkins
2210 | Horace Jenkins
2211 | John Jenkins
2212 | Brandon Jennings
2213 | Keith Jennings
2214 | Chris Jent
2215 | Les Jepsen
2216 | Jonas Jerebko
2217 | Ty Jerome
2218 | Grant Jerrett
2219 | Eugene Jeter
2220 | Hal Jeter
2221 | Yi Jianlian
2222 | Britton Johnsen
2223 | Alexander Johnson
2224 | Alize Johnson
2225 | Amir Johnson
2226 | Andy Johnson
2227 | Anthony Johnson
2228 | Armon Johnson
2229 | Arnie Johnson
2230 | Avery Johnson
2231 | B.J. Johnson
2232 | Brice Johnson
2233 | Buck Johnson
2234 | Cameron Johnson
2235 | Carldell Johnson
2236 | Charles Johnson
2237 | Cheese Johnson
2238 | Chris Johnson
2239 | Chris Johnson
2240 | Clay Johnson
2241 | Clemon Johnson
2242 | Dakari Johnson
2243 | Darryl Johnson
2244 | Dave Johnson
2245 | DeMarco Johnson
2246 | Dennis Johnson
2247 | DerMarr Johnson
2248 | Ed Johnson
2249 | Eddie Johnson
2250 | Eddie Johnson
2251 | Eric Johnson
2252 | Ervin Johnson
2253 | Frank Johnson
2254 | George Johnson
2255 | George Johnson
2256 | George Johnson
2257 | Gus Johnson
2258 | Harold Johnson
2259 | Ivan Johnson
2260 | JaJuan Johnson
2261 | James Johnson
2262 | Joe Johnson
2263 | John Johnson
2264 | Kannard Johnson
2265 | Keldon Johnson
2266 | Ken Johnson
2267 | Ken Johnson
2268 | Kevin Johnson
2269 | Larry Johnson
2270 | Larry Johnson
2271 | Lee Johnson
2272 | Linton Johnson
2273 | Magic Johnson
2274 | Marques Johnson
2275 | Mickey Johnson
2276 | Neil Johnson
2277 | Nick Johnson
2278 | Ollie Johnson
2279 | Omari Johnson
2280 | Orlando Johnson
2281 | Ralph Johnson
2282 | Reggie Johnson
2283 | Rich Johnson
2284 | Ron Johnson
2285 | Stanley Johnson
2286 | Steffond Johnson
2287 | Steve Johnson
2288 | Stew Johnson
2289 | Trey Johnson
2290 | Tyler Johnson
2291 | Vinnie Johnson
2292 | Wesley Johnson
2293 | Darius Johnson-Odom
2294 | Nate Johnston
2295 | Neil Johnston
2296 | Jim Johnstone
2297 | Nikola Jokic
2298 | Howie Jolliff
2299 | Alvin Jones
2300 | Anthony Jones
2301 | Askia Jones
2302 | Bill Jones
2303 | Bobby Jones
2304 | Bobby Jones
2305 | Caldwell Jones
2306 | Charles Jones
2307 | Charles Jones
2308 | Charles Jones
2309 | Collis Jones
2310 | Dahntay Jones
2311 | Damian Jones
2312 | Damon Jones
2313 | DeQuan Jones
2314 | Derrick Jones
2315 | Dominique Jones
2316 | Dontae' Jones
2317 | Dwayne Jones
2318 | Dwight Jones
2319 | Earl Jones
2320 | Eddie Jones
2321 | Edgar Jones
2322 | Fred Jones
2323 | Hutch Jones
2324 | Jake Jones
2325 | Jalen Jones
2326 | James Jones
2327 | Jemerrio Jones
2328 | Jimmy Jones
2329 | Johnny Jones
2330 | Jumaine Jones
2331 | K.C. Jones
2332 | Kevin Jones
2333 | Larry Jones
2334 | Major Jones
2335 | Mark Jones
2336 | Mark Jones
2337 | Nick Jones
2338 | Ozell Jones
2339 | Perry Jones
2340 | Popeye Jones
2341 | Rich Jones
2342 | Robin Jones
2343 | Sam Jones
2344 | Shelton Jones
2345 | Solomon Jones
2346 | Steve Jones
2347 | Terrence Jones
2348 | Tyus Jones
2349 | Wah Wah Jones
2350 | Wali Jones
2351 | Wil Jones
2352 | Willie Jones
2353 | Adonis Jordan
2354 | Charles Jordan
2355 | DeAndre Jordan
2356 | Eddie Jordan
2357 | Jerome Jordan
2358 | Michael Jordan
2359 | Reggie Jordan
2360 | Thomas Jordan
2361 | Walter Jordan
2362 | Phil Jordon
2363 | Johnny Jorgensen
2364 | Noble Jorgensen
2365 | Roger Jorgensen
2366 | Cory Joseph
2367 | Garth Joseph
2368 | Kris Joseph
2369 | Yvon Joseph
2370 | Kevin Joyce
2371 | Butch Joyner
2372 | Jeff Judkins
2373 | Mfiondu Kabengele
2374 | Whitey Kachan
2375 | George Kaftan
2376 | Ed Kalafat
2377 | Chris Kaman
2378 | Frank Kaminsky
2379 | Enes Kanter
2380 | Ralph Kaplowitz
2381 | Jason Kapono
2382 | Tony Kappen
2383 | Sergey Karasev
2384 | Coby Karl
2385 | George Karl
2386 | Ed Kasid
2387 | Mario Kasun
2388 | Leo Katkaveck
2389 | Bob Kauffman
2390 | Sasha Kaun
2391 | Wilbert Kautz
2392 | Clarence Kea
2393 | Mike Kearns
2394 | Tommy Kearns
2395 | Adam Keefe
2396 | Harold Keeling
2397 | Bill Keller
2398 | Gary Keller
2399 | Ken Keller
2400 | Rich Kelley
2401 | Clark Kellogg
2402 | Arvesta Kelly
2403 | Jerry Kelly
2404 | Ryan Kelly
2405 | Tom Kelly
2406 | Greg Kelser
2407 | Ben Kelso
2408 | Shawn Kemp
2409 | Tim Kempton
2410 | Frank Kendrick
2411 | Luke Kennard
2412 | D.J. Kennedy
2413 | Goo Kennedy
2414 | Joe Kennedy
2415 | Pickles Kennedy
2416 | Larry Kenon
2417 | Billy Kenville
2418 | Jonathan Kerner
2419 | Red Kerr
2420 | Steve Kerr
2421 | Jack Kerris
2422 | Jerome Kersey
2423 | Tom Kerwin
2424 | Alec Kessler
2425 | Lari Ketner
2426 | Julius Keye
2427 | Randolph Keys
2428 | Viktor Khryapa
2429 | Jason Kidd
2430 | Stanton Kidd
2431 | Warren Kidd
2432 | Michael Kidd-Gilchrist
2433 | Irv Kiffin
2434 | Jack Kiley
2435 | Earnie Killum
2436 | Carl Kilpatrick
2437 | Sean Kilpatrick
2438 | Toby Kimball
2439 | Bo Kimble
2440 | Stan Kimbrough
2441 | Chad Kinch
2442 | Albert King
2443 | Bernard King
2444 | Chris King
2445 | Dan King
2446 | Frankie King
2447 | George King
2448 | George King
2449 | Gerard King
2450 | Jim King
2451 | Jimmy King
2452 | Louis King
2453 | Loyd King
2454 | Maurice King
2455 | Reggie King
2456 | Rich King
2457 | Ron King
2458 | Stacey King
2459 | Tom King
2460 | Bob Kinney
2461 | Tarence Kinsey
2462 | Andrei Kirilenko
2463 | Alex Kirk
2464 | Walt Kirk
2465 | Wilbur Kirkland
2466 | Jim Kissane
2467 | Doug Kistler
2468 | Curtis Kitchen
2469 | Greg Kite
2470 | Kerry Kittles
2471 | Maxi Kleber
2472 | Joe Kleine
2473 | Linas Kleiza
2474 | Leo Klier
2475 | Herm Klotz
2476 | Duane Klueh
2477 | Lonnie Kluttz
2478 | Billy Knight
2479 | Bob Knight
2480 | Brandin Knight
2481 | Brandon Knight
2482 | Brevin Knight
2483 | Negele Knight
2484 | Ron Knight
2485 | Toby Knight
2486 | Travis Knight
2487 | Lee Knorek
2488 | Dick Knostman
2489 | Rod Knowles
2490 | Kevin Knox
2491 | Bart Kofoed
2492 | Don Kojis
2493 | Milo Komenich
2494 | Howard Komives
2495 | Jon Koncak
2496 | John Konchar
2497 | Tom Kondla
2498 | Bud Koper
2499 | Joe Kopicki
2500 | Furkan Korkmaz
2501 | Frank Kornet
2502 | Luke Kornet
2503 | Yaroslav Korolev
2504 | Kyle Korver
2505 | Tony Koski
2506 | Len Kosmalski
2507 | Andy Kostecka
2508 | Harold Kottman
2509 | Kosta Koufos
2510 | Tom Kozelko
2511 | Ronald Kozlicki
2512 | Arvid Kramer
2513 | Barry Kramer
2514 | Joel Kramer
2515 | Steven Kramer
2516 | Dan Kraus
2517 | Herb Krautblatt
2518 | Viacheslav Kravtsov
2519 | Jim Krebs
2520 | Wayne Kreklow
2521 | Tommy Kron
2522 | Tom Kropp
2523 | Nenad Krstic
2524 | Larry Krystkowiak
2525 | Steve Kuberski
2526 | Leo Kubiak
2527 | Bruce Kuczenski
2528 | Frank Kudelka
2529 | John Kuester
2530 | Ray Kuka
2531 | Toni Kukoc
2532 | Kevin Kunnert
2533 | Terry Kunze
2534 | Mitch Kupchak
2535 | C.J. Kupec
2536 | Rodions Kurucs
2537 | Rob Kurz
2538 | Ibo Kutluay
2539 | Kyle Kuzma
2540 | Ognjen Kuzmic
2541 | Mindaugas Kuzminskas
2542 | Fred LaCour
2543 | Raef LaFrentz
2544 | Tom LaGarde
2545 | Rusty LaRue
2546 | Rudy LaRusso
2547 | Zach LaVine
2548 | Skal Labissiere
2549 | Reggie Lacefield
2550 | Edgar Lacey
2551 | Sam Lacey
2552 | Bob Lackey
2553 | Wendell Ladner
2554 | Christian Laettner
2555 | Oliver Lafayette
2556 | Bill Laimbeer
2557 | Pete Lalich
2558 | Bo Lamar
2559 | Doron Lamb
2560 | Jeremy Lamb
2561 | John Lambert
2562 | Jeff Lamp
2563 | Maciej Lampe
2564 | Jim Lampley
2565 | Sean Lampley
2566 | Carl Landry
2567 | Marcus Landry
2568 | Mark Landsberger
2569 | Jerome Lane
2570 | Andrew Lang
2571 | Antonio Lang
2572 | James Lang
2573 | Trajan Langdon
2574 | Keith Langford
2575 | Romeo Langford
2576 | Dan Langhi
2577 | Bob Lanier
2578 | Stu Lantz
2579 | Nicolas Laprovittola
2580 | York Larese
2581 | Shane Larkin
2582 | John Laskowski
2583 | Stephane Lasme
2584 | Dave Lattin
2585 | Priest Lauderdale
2586 | Rich Laurel
2587 | Harry Laurie
2588 | Walt Lautenbach
2589 | Joffrey Lauvergne
2590 | Tony Lavelli
2591 | Bob Lavoy
2592 | Acie Law
2593 | Vic Law
2594 | Gani Lawal
2595 | Edmund Lawrence
2596 | Jason Lawson
2597 | Ty Lawson
2598 | Jake Layman
2599 | Mo Layton
2600 | Caris LeVert
2601 | T.J. Leaf
2602 | Manny Leaks
2603 | Hal Lear
2604 | Allen Leavell
2605 | Jeff Lebo
2606 | Eric Leckner
2607 | Jalen Lecque
2608 | Ricky Ledo
2609 | Butch Lee
2610 | Clyde Lee
2611 | Courtney Lee
2612 | Damion Lee
2613 | David Lee
2614 | David Lee
2615 | Dick Lee
2616 | Doug Lee
2617 | George Lee
2618 | Greg Lee
2619 | Keith Lee
2620 | Kurk Lee
2621 | Malcolm Lee
2622 | Rock Lee
2623 | Ron Lee
2624 | Russ Lee
2625 | Ed Leede
2626 | Hank Lefkowitz
2627 | Tim Legler
2628 | George Lehmann
2629 | Walt Lemon
2630 | Alex Len
2631 | Voshon Lenard
2632 | Leary Lentz
2633 | Gary Leonard
2634 | Kawhi Leonard
2635 | Meyers Leonard
2636 | Slick Leonard
2637 | Jim Les
2638 | Travis Leslie
2639 | Ronnie Lester
2640 | Clifford Lett
2641 | Jon Leuer
2642 | Andrew Levane
2643 | Fat Lever
2644 | Cliff Levingston
2645 | Bobby Lewis
2646 | Cedric Lewis
2647 | Freddie Lewis
2648 | Freddie Lewis
2649 | Grady Lewis
2650 | Martin Lewis
2651 | Mike Lewis
2652 | Quincy Lewis
2653 | Ralph Lewis
2654 | Rashard Lewis
2655 | Reggie Lewis
2656 | Marcus Liberty
2657 | Todd Lichti
2658 | Barry Liebowitz
2659 | DeAndre Liggins
2660 | Bill Ligon
2661 | Goose Ligon
2662 | Damian Lillard
2663 | Jeremy Lin
2664 | Steve Lingenfelter
2665 | Alton Lister
2666 | Nassir Little
2667 | Samuel Little
2668 | Gene Littles
2669 | Randy Livingston
2670 | Shaun Livingston
2671 | Ron Livingstone
2672 | Horacio Llamas Grey
2673 | Bobby Lloyd
2674 | Chuck Lloyd
2675 | Earl Lloyd
2676 | Lewis Lloyd
2677 | Scott Lloyd
2678 | Riney Lochmann
2679 | Bob Lochmueller
2680 | Rob Lock
2681 | Darrell Lockhart
2682 | Ian Lockhart
2683 | Kevin Loder
2684 | Don Lofgran
2685 | Zach Lofton
2686 | Henry Logan
2687 | John Logan
2688 | Brad Lohaus
2689 | Art Long
2690 | Grant Long
2691 | John Long
2692 | Paul Long
2693 | Shawn Long
2694 | Willie Long
2695 | Luc Longley
2696 | Kevon Looney
2697 | Brook Lopez
2698 | Felipe Lopez
2699 | Raul Lopez
2700 | Robin Lopez
2701 | Ryan Lorthridge
2702 | Jim Loscutoff
2703 | Plummer Lott
2704 | Kevin Loughery
2705 | Bob Love
2706 | Kevin Love
2707 | Stan Love
2708 | Clyde Lovellette
2709 | Sidney Lowe
2710 | Charlie Lowery
2711 | Kyle Lowry
2712 | Jordan Loyd
2713 | Al Lucas
2714 | Jerry Lucas
2715 | John Lucas
2716 | Kalin Lucas
2717 | Maurice Lucas
2718 | John Lucas III
2719 | Ted Luckenbill
2720 | Tyronn Lue
2721 | Jim Luisi
2722 | Al Lujack
2723 | Phil Lumpkin
2724 | Ray Lumpp
2725 | Timothe Luwawu-Cabarrot
2726 | Tyler Lydon
2727 | Trey Lyles
2728 | R.B. Lynam
2729 | George Lynch
2730 | Kevin Lynch
2731 | Lonnie Lynn
2732 | Mike Lynn
2733 | Sheldon Mac
2734 | Todd MacCulloch
2735 | Ronnie MacGilvray
2736 | Don MacLean
2737 | Mike Macaluso
2738 | Ed Macauley
2739 | Scott Machado
2740 | Arvydas Macijauskas
2741 | Ollie Mack
2742 | Sam Mack
2743 | Shelvin Mack
2744 | Malcolm Mackey
2745 | Rudy Macklin
2746 | Vernon Macklin
2747 | Johnny Macknowski
2748 | Daryl Macon
2749 | Mark Macon
2750 | J.P. Macura
2751 | Kyle Macy
2752 | Jack Maddox
2753 | Tito Maddox
2754 | Gerald Madkins
2755 | Mark Madsen
2756 | Norm Mager
2757 | Josh Magette
2758 | Corey Maggette
2759 | Dave Magley
2760 | Jamaal Magloire
2761 | Randolph Mahaffey
2762 | Ian Mahinmi
2763 | John Mahnken
2764 | Brian Mahoney
2765 | Mo Mahoney
2766 | Rick Mahorn
2767 | Dan Majerle
2768 | Renaldo Major
2769 | Thon Maker
2770 | Lionel Malamed
2771 | Jeff Malone
2772 | Karl Malone
2773 | Moses Malone
2774 | Matt Maloney
2775 | Steve Malovic
2776 | Mike Maloy
2777 | Ted Manakas
2778 | John Mandic
2779 | Frank Mangiapane
2780 | Terance Mann
2781 | Danny Manning
2782 | Ed Manning
2783 | Guy Manning
2784 | Rich Manning
2785 | Pace Mannion
2786 | Nick Mantis
2787 | Pete Maravich
2788 | Press Maravich
2789 | Devyn Marble
2790 | Roy Marble
2791 | Stephon Marbury
2792 | Sarunas Marciulionis
2793 | Saul Mariaschin
2794 | Jack Marin
2795 | Shawn Marion
2796 | Boban Marjanovic
2797 | Lauri Markkanen
2798 | Damir Markota
2799 | Sean Marks
2800 | Harvey Marlatt
2801 | Jim Marsh
2802 | Ricky Marsh
2803 | Donny Marshall
2804 | Donyell Marshall
2805 | Kendall Marshall
2806 | Rawle Marshall
2807 | Tom Marshall
2808 | Vester Marshall
2809 | Bill Martin
2810 | Bob Martin
2811 | Brian Martin
2812 | Caleb Martin
2813 | Cartier Martin
2814 | Cody Martin
2815 | Cuonzo Martin
2816 | Darrick Martin
2817 | Dino Martin
2818 | Don Martin
2819 | Fernando Martin
2820 | Jarell Martin
2821 | Jeff Martin
2822 | Jeremiah Martin
2823 | Kelan Martin
2824 | Kenyon Martin
2825 | Kevin Martin
2826 | LaRue Martin
2827 | Maurice Martin
2828 | Phil Martin
2829 | Slater Martin
2830 | Whitey Martin
2831 | Jamal Mashburn
2832 | Al Masino
2833 | Anthony Mason
2834 | Desmond Mason
2835 | Frank Mason
2836 | Roger Mason
2837 | Tony Massenburg
2838 | Eddie Mast
2839 | Yante Maten
2840 | Garrison Mathews
2841 | Mangok Mathiang
2842 | Johnny Mathis
2843 | Wes Matthews
2844 | Wesley Matthews
2845 | Ariel Maughan
2846 | Marlon Maxey
2847 | Jason Maxiell
2848 | Cedric Maxwell
2849 | Vernon Maxwell
2850 | Don May
2851 | Scott May
2852 | Sean May
2853 | Lee Mayberry
2854 | Clyde Mayes
2855 | Tharon Mayes
2856 | Bill Mayfield
2857 | Ken Mayfield
2858 | Eric Maynor
2859 | O.J. Mayo
2860 | Travis Mays
2861 | Matt Mazza
2862 | Luc Mbah a Moute
2863 | Bob McAdoo
2864 | James Michael McAdoo
2865 | Ken McBride
2866 | Tahjere McCall
2867 | Ray McCallum
2868 | Bob McCann
2869 | Brendan McCann
2870 | Mel McCants
2871 | Rashad McCants
2872 | Mike McCarron
2873 | Andre McCarter
2874 | Willie McCarter
2875 | Johnny McCarthy
2876 | Howie McCarty
2877 | Kelly McCarty
2878 | Walter McCarty
2879 | Amal McCaskill
2880 | Patrick McCaw
2881 | Dwayne McClain
2882 | Ted McClain
2883 | Dan McClintock
2884 | Jack McCloskey
2885 | George McCloud
2886 | CJ McCollum
2887 | John McConathy
2888 | Bucky McConnell
2889 | T.J. McConnell
2890 | Keith McCord
2891 | Tim McCormick
2892 | Jelani McCoy
2893 | Paul McCracken
2894 | Chris McCray
2895 | Rodney McCray
2896 | Scooter McCray
2897 | Erik McCree
2898 | Chris McCullough
2899 | John McCullough
2900 | Clint McDaniel
2901 | Xavier McDaniel
2902 | Jalen McDaniels
2903 | Jim McDaniels
2904 | K.J. McDaniels
2905 | Doug McDermott
2906 | Ben McDonald
2907 | Glenn McDonald
2908 | Michael McDonald
2909 | Roderick McDonald
2910 | Hank McDowell
2911 | Antonio McDyess
2912 | Jim McElroy
2913 | Patrick McFarland
2914 | Ivan McFarlin
2915 | Mel McGaha
2916 | Mitch McGary
2917 | JaVale McGee
2918 | Mike McGee
2919 | Bill McGill
2920 | George McGinnis
2921 | Jon McGlocklin
2922 | Tracy McGrady
2923 | Gil McGregor
2924 | Elton McGriff
2925 | Rodney McGruder
2926 | Alfred McGuire
2927 | Allie McGuire
2928 | Dick McGuire
2929 | Dominic McGuire
2930 | Kevin McHale
2931 | Maurice McHartley
2932 | Jim McIlvaine
2933 | Jeff McInnis
2934 | Kenny McIntosh
2935 | Bob McIntyre
2936 | Jerry McKee
2937 | Kevin McKenna
2938 | Forrest McKenzie
2939 | Stan McKenzie
2940 | Derrick McKey
2941 | Aaron McKie
2942 | Billy McKinney
2943 | Bones McKinney
2944 | Carlton McKinney
2945 | Trey McKinney-Jones
2946 | Alfonzo McKinnie
2947 | Jordan McLaughlin
2948 | Ben McLemore
2949 | McCoy McLemore
2950 | George McLeod
2951 | Keith McLeod
2952 | Roshown McLeod
2953 | Jack McMahon
2954 | Nate McMillan
2955 | Tom McMillen
2956 | Jim McMillian
2957 | Shellie McMillon
2958 | Mal McMullen
2959 | Chet McNabb
2960 | Mark McNamara
2961 | Joe McNamee
2962 | Jerel McNeal
2963 | Chris McNealy
2964 | Bob McNeill
2965 | Larry McNeill
2966 | Carl McNulty
2967 | Paul McPherson
2968 | Roy McPipe
2969 | Cozell McQueen
2970 | Jordan McRae
2971 | Thales McReynolds
2972 | Josh McRoberts
2973 | Eric McWilliams
2974 | George Mearns
2975 | Stanislav Medvedenko
2976 | Darnell Mee
2977 | Jodie Meeks
2978 | Cliff Meely
2979 | Scott Meents
2980 | Dick Mehen
2981 | Monk Meineke
2982 | Carl Meinhold
2983 | Salah Mejri
2984 | Gal Mekel
2985 | Bill Melchionni
2986 | Gary Melchionni
2987 | Nicolo Melli
2988 | Fab Melo
2989 | De'Anthony Melton
2990 | Ed Melvin
2991 | Dean Meminger
2992 | Chuck Mencel
2993 | John Mengelt
2994 | Ken Menke
2995 | Pops Mensah-Bonsu
2996 | Dewitt Menyard
2997 | Ron Mercer
2998 | Joe Meriweather
2999 | Porter Meriwether
3000 | Tom Meschery
3001 | Chimezie Metu
3002 | Bill Meyer
3003 | Loren Meyer
3004 | Dave Meyers
3005 | Stan Miasek
3006 | Larry Micheaux
3007 | Jordan Mickey
3008 | Khris Middleton
3009 | Red Mihalik
3010 | Chris Mihm
3011 | Eric Mika
3012 | Ed Mikan
3013 | George Mikan
3014 | Larry Mikan
3015 | Vern Mikkelsen
3016 | Al Miksis
3017 | Aaron Miles
3018 | C.J. Miles
3019 | Darius Miles
3020 | Eddie Miles
3021 | Marko Milic
3022 | Darko Milicic
3023 | Nat Militzok
3024 | Andre Miller
3025 | Anthony Miller
3026 | Bill Miller
3027 | Bob Miller
3028 | Brad Miller
3029 | Darius Miller
3030 | Dick Miller
3031 | Eddie Miller
3032 | Harry Miller
3033 | Jay Miller
3034 | Larry Miller
3035 | Malcolm Miller
3036 | Mike Miller
3037 | Oliver Miller
3038 | Quincy Miller
3039 | Reggie Miller
3040 | Walt Miller
3041 | Chris Mills
3042 | John Mills
3043 | Patty Mills
3044 | Terry Mills
3045 | Elijah Millsap
3046 | Paul Millsap
3047 | Shake Milton
3048 | Harold Miner
3049 | Yao Ming
3050 | Dirk Minniefield
3051 | Dave Minor
3052 | Greg Minor
3053 | Mark Minor
3054 | Nikola Mirotic
3055 | Wat Misaka
3056 | Jason Miskiri
3057 | Donovan Mitchell
3058 | Leland Mitchell
3059 | Mike Mitchell
3060 | Murray Mitchell
3061 | Sam Mitchell
3062 | Todd Mitchell
3063 | Tony Mitchell
3064 | Tony Mitchell
3065 | Naz Mitrou-Long
3066 | Steve Mix
3067 | Bill Mlkvy
3068 | Cuttino Mobley
3069 | Eric Mobley
3070 | Evan Mobley
3071 | Doug Moe
3072 | Larry Moffett
3073 | Leo Mogus
3074 | Nazr Mohammed
3075 | Jerome Moiso
3076 | Paul Mokeski
3077 | Adam Mokoka
3078 | Jack Molinas
3079 | Wayne Molis
3080 | Sidney Moncrief
3081 | Eric Money
3082 | Sergei Monia
3083 | Malik Monk
3084 | Earl Monroe
3085 | Greg Monroe
3086 | Rodney Monroe
3087 | Luis Montero
3088 | Howie Montgomery
3089 | Eric Montross
3090 | Jamario Moon
3091 | Jim Mooney
3092 | Matt Mooney
3093 | Andre Moore
3094 | Ben Moore
3095 | E'Twaun Moore
3096 | Gene Moore
3097 | Jackie Moore
3098 | Johnny Moore
3099 | Larry Moore
3100 | Lowes Moore
3101 | Mikki Moore
3102 | Otto Moore
3103 | Richard Moore
3104 | Ron Moore
3105 | Tracy Moore
3106 | Ja Morant
3107 | Eric Moreland
3108 | Jackie Moreland
3109 | Guy Morgan
3110 | Juwan Morgan
3111 | Rex Morgan
3112 | Elmore Morgenthaler
3113 | Darren Morningstar
3114 | Chris Morris
3115 | Darius Morris
3116 | Isaiah Morris
3117 | Jaylen Morris
3118 | Marcus Morris
3119 | Markieff Morris
3120 | Max Morris
3121 | Monte Morris
3122 | Randolph Morris
3123 | Terence Morris
3124 | Adam Morrison
3125 | John Morrison
3126 | Mike Morrison
3127 | Red Morrison
3128 | Anthony Morrow
3129 | Dwayne Morton
3130 | John Morton
3131 | Richard Morton
3132 | Glenn Mosley
3133 | Perry Moss
3134 | Lawrence Moten
3135 | Donatas Motiejunas
3136 | Johnathan Motley
3137 | Hanno Mottola
3138 | Arnett Moultrie
3139 | Rick Mount
3140 | Alonzo Mourning
3141 | Timofey Mozgov
3142 | Chuck Mrazovich
3143 | Emmanuel Mudiay
3144 | Erwin Mueller
3145 | Shabazz Muhammad
3146 | Mychal Mulder
3147 | Joe Mullaney
3148 | Bob Mullens
3149 | Byron Mullens
3150 | Chris Mullin
3151 | Jeff Mullins
3152 | Todd Mundt
3153 | Xavier Munford
3154 | Chris Munk
3155 | George Munroe
3156 | Eric Murdock
3157 | Gheorghe Muresan
3158 | Allen Murphy
3159 | Calvin Murphy
3160 | Dick Murphy
3161 | Erik Murphy
3162 | Jay Murphy
3163 | John Murphy
3164 | Kevin Murphy
3165 | Ronnie Murphy
3166 | Tod Murphy
3167 | Troy Murphy
3168 | Dejounte Murray
3169 | Jamal Murray
3170 | Ken Murray
3171 | Lamond Murray
3172 | Ronald Murray
3173 | Tracy Murray
3174 | Willie Murrell
3175 | Dorie Murrey
3176 | Toure' Murry
3177 | Dzanan Musa
3178 | Mike Muscala
3179 | Angelo Musi
3180 | Jerrod Mustaf
3181 | Dikembe Mutombo
3182 | Martin Muursepp
3183 | Pete Myers
3184 | Sviatoslav Mykhailiuk
3185 | Hamady N'Diaye
3186 | Makhtar N'Diaye
3187 | Mamadou N'Diaye
3188 | Boniface N'Dong
3189 | Bob Naber
3190 | Boris Nachamkin
3191 | Bostjan Nachbar
3192 | Abdel Nader
3193 | Jerry Nagel
3194 | Fritz Nagy
3195 | Lee Nailon
3196 | Eduardo Najera
3197 | Larry Nance
3198 | Larry Nance
3199 | Shabazz Napier
3200 | Paul Napolitano
3201 | Bob Nash
3202 | Cotton Nash
3203 | Steve Nash
3204 | Swen Nater
3205 | Howard Nathan
3206 | Calvin Natt
3207 | Kenny Natt
3208 | Willie Naulls
3209 | Juan Carlos Navarro
3210 | Maurice Ndour
3211 | Craig Neal
3212 | Gary Neal
3213 | Jim Neal
3214 | Lloyd Neal
3215 | Ed Nealy
3216 | Nemanja Nedovic
3217 | Al Negratti
3218 | Barry Nelson
3219 | DeMarcus Nelson
3220 | Don Nelson
3221 | Jameer Nelson
3222 | Louie Nelson
3223 | Ron Nelson
3224 | Ruben Nembhard
3225 | Dick Nemelka
3226 | Tyrone Nesby
3227 | Martin Nessley
3228 | Rasho Nesterovic
3229 | Raul Neto
3230 | Bob Netolicky
3231 | Johnny Neumann
3232 | Paul Neumann
3233 | Chuck Nevitt
3234 | Melvin Newbern
3235 | Ivano Newbill
3236 | Ira Newble
3237 | Mike Newlin
3238 | Johnny Newman
3239 | Malik Newman
3240 | Dave Newmark
3241 | Bill Newton
3242 | Georges Niang
3243 | Demetris Nichols
3244 | Jack Nichols
3245 | Andrew Nicholson
3246 | Gaylon Nickerson
3247 | Carl Nicks
3248 | Rich Niemann
3249 | Richie Niemiera
3250 | Mike Niles
3251 | Kurt Nimphius
3252 | Dyron Nix
3253 | Norm Nixon
3254 | Joakim Noah
3255 | Chuck Noble
3256 | Andres Nocioni
3257 | David Noel
3258 | Nerlens Noel
3259 | Paul Noel
3260 | Lucas Nogueira
3261 | Jim Nolan
3262 | Paul Nolen
3263 | Jeff Nordgaard
3264 | Bevo Nordmann
3265 | Johnny Norlander
3266 | Connie Norman
3267 | Ken Norman
3268 | Audie Norris
3269 | Moochie Norris
3270 | Sylvester Norris
3271 | Zach Norvell
3272 | Willie Norwood
3273 | George Nostrand
3274 | Stan Noszka
3275 | Mike Novak
3276 | Steve Novak
3277 | Jaylen Nowell
3278 | Mel Nowell
3279 | Dirk Nowitzki
3280 | Frank Ntilikina
3281 | Kendrick Nunn
3282 | James Nunnally
3283 | Jusuf Nurkic
3284 | Dennis Nutt
3285 | David Nwaba
3286 | Julius Nwosu
3287 | Charles O'Bannon
3288 | Ed O'Bannon
3289 | John O'Boyle
3290 | Bob O'Brien
3291 | J.J. O'Brien
3292 | Jim O'Brien
3293 | Jimmy O'Brien
3294 | Ralph O'Brien
3295 | Johnny O'Bryant
3296 | Patrick O'Bryant
3297 | Dermie O'Connell
3298 | Andy O'Donnell
3299 | Buddy O'Grady
3300 | Fran O'Hanlon
3301 | Dick O'Keefe
3302 | Tommy O'Keefe
3303 | Mike O'Koren
3304 | Grady O'Malley
3305 | Jermaine O'Neal
3306 | Shaquille O'Neal
3307 | Royce O'Neale
3308 | Mike O'Neill
3309 | Kyle O'Quinn
3310 | Kevin O'Shea
3311 | Garland O'Shields
3312 | Dan O'Sullivan
3313 | Charles Oakley
3314 | Fabricio Oberto
3315 | Daniel Ochefu
3316 | Greg Oden
3317 | Lamar Odom
3318 | Bud Ogden
3319 | Ralph Ogden
3320 | Alan Ogg
3321 | Don Ohl
3322 | Tim Ohlbrecht
3323 | Semi Ojeleye
3324 | Emeka Okafor
3325 | Jahlil Okafor
3326 | Elie Okobo
3327 | Josh Okogie
3328 | KZ Okpala
3329 | Mehmet Okur
3330 | Victor Oladipo
3331 | Hakeem Olajuwon
3332 | Mark Olberding
3333 | Jawann Oldham
3334 | John Oldham
3335 | Frank Oleynick
3336 | John Olive
3337 | Brian Oliver
3338 | Dean Oliver
3339 | Jimmy Oliver
3340 | Kevin Ollie
3341 | Gene Ollrich
3342 | Michael Olowokandi
3343 | Bud Olsen
3344 | Kelly Olynyk
3345 | Miye Oni
3346 | Arinze Onuaku
3347 | Chinanu Onuaku
3348 | Barry Orms
3349 | Johnny Orr
3350 | Louis Orr
3351 | Jose Ortiz
3352 | Daniel Orton
3353 | Chuck Osborne
3354 | Cedi Osman
3355 | Wally Osterkorn
3356 | Greg Ostertag
3357 | Matt Othick
3358 | Don Otten
3359 | Mac Otten
3360 | Kelly Oubre
3361 | Bo Outlaw
3362 | Travis Outlaw
3363 | Claude Overton
3364 | Doug Overton
3365 | Andre Owens
3366 | Billy Owens
3367 | Chris Owens
3368 | Eddie Owens
3369 | Jim Owens
3370 | Keith Owens
3371 | Larry Owens
3372 | Red Owens
3373 | Tariq Owens
3374 | Tom Owens
3375 | Ray Owes
3376 | Olumide Oyedeji
3377 | Joe Pace
3378 | Zaza Pachulia
3379 | Robert Pack
3380 | Wayne Pack
3381 | Gerald Paddio
3382 | Scott Padgett
3383 | Dana Pagett
3384 | Marcus Paige
3385 | Fred Paine
3386 | Milt Palacio
3387 | Togo Palazzi
3388 | Bud Palmer
3389 | Errol Palmer
3390 | Jim Palmer
3391 | Walter Palmer
3392 | Andy Panko
3393 | Georgios Papagiannis
3394 | Kostas Papanikolaou
3395 | Jannero Pargo
3396 | Jeremy Pargo
3397 | Easy Parham
3398 | Robert Parish
3399 | Med Park
3400 | Anthony Parker
3401 | Jabari Parker
3402 | Smush Parker
3403 | Sonny Parker
3404 | Tony Parker
3405 | Barry Parkhill
3406 | Jack Parkinson
3407 | Charles Parks
3408 | Cherokee Parks
3409 | Richard Parks
3410 | Jack Parr
3411 | Doyle Parrack
3412 | Charlie Parsley
3413 | Chandler Parsons
3414 | Eric Paschall
3415 | Anzejs Pasecniks
3416 | Zarko Paspalj
3417 | Marty Passaglia
3418 | George Pastushok
3419 | Myles Patrick
3420 | Stan Patrick
3421 | Andrae Patterson
3422 | George Patterson
3423 | Lamar Patterson
3424 | Patrick Patterson
3425 | Ruben Patterson
3426 | Steve Patterson
3427 | Tom Patterson
3428 | Worthy Patterson
3429 | Justin Patton
3430 | Brandon Paul
3431 | Chris Paul
3432 | Charlie Paulk
3433 | Jerry Paulson
3434 | Billy Paultz
3435 | Sasha Pavlovic
3436 | Jim Paxson
3437 | Jim Paxson
3438 | John Paxson
3439 | Johnny Payak
3440 | Adreian Payne
3441 | Cameron Payne
3442 | Kenny Payne
3443 | Tom Payne
3444 | Elfrid Payton
3445 | Gary Payton
3446 | Gary Payton
3447 | Mel Payton
3448 | George Pearcy
3449 | Henry Pearcy
3450 | Oleksiy Pecherov
3451 | Wiley Peck
3452 | Rich Peek
3453 | Anthony Peeler
3454 | George Peeples
3455 | Nikola Pekovic
3456 | Jake Pelkington
3457 | Norvel Pelle
3458 | Sam Pellom
3459 | Mike Penberthy
3460 | Jerry Pender
3461 | Desmond Penigar
3462 | Kirk Penney
3463 | Mike Peplowski
3464 | Will Perdue
3465 | Kendrick Perkins
3466 | Sam Perkins
3467 | Warren Perkins
3468 | Kosta Perovic
3469 | London Perrantes
3470 | Aulcie Perry
3471 | Curtis Perry
3472 | Elliot Perry
3473 | Ron Perry
3474 | Tim Perry
3475 | Chuck Person
3476 | Wesley Person
3477 | Alec Peters
3478 | Jim Petersen
3479 | Loy Petersen
3480 | Bob Peterson
3481 | Ed Peterson
3482 | Mel Peterson
3483 | Morris Peterson
3484 | Geoff Petrie
3485 | Johan Petro
3486 | Drazen Petrovic
3487 | Richard Petruska
3488 | Bob Pettit
3489 | Jerry Pettway
3490 | Roger Phegley
3491 | Jack Phelan
3492 | James Phelan
3493 | Derrick Phelps
3494 | Michael Phelps
3495 | Andy Phillip
3496 | Eddie Phillips
3497 | Gary Phillips
3498 | Gene Phillips
3499 | Bobby Phills
3500 | Eric Piatkowski
3501 | Walter Piatkowski
3502 | Paul Pierce
3503 | Ricky Pierce
3504 | Stan Pietkiewicz
3505 | Mickael Pietrus
3506 | John Pilch
3507 | Ed Pinckney
3508 | Kevinn Pinkney
3509 | John Pinone
3510 | Theo Pinson
3511 | Dave Piontek
3512 | Tom Piotrowski
3513 | Scottie Pippen
3514 | Charles Pittman
3515 | Dexter Pittman
3516 | Zoran Planinic
3517 | Tibor Pleiss
3518 | Marshall Plumlee
3519 | Mason Plumlee
3520 | Miles Plumlee
3521 | Gary Plummer
3522 | Pavel Podkolzin
3523 | Jakob Poeltl
3524 | Vincent Poirier
3525 | Dwayne Polee
3526 | Jim Pollard
3527 | Scot Pollard
3528 | Ralph Polson
3529 | Olden Polynice
3530 | Cliff Pondexter
3531 | Quincy Pondexter
3532 | Shamorie Ponds
3533 | Jordan Poole
3534 | David Pope
3535 | Mark Pope
3536 | Dave Popson
3537 | Ben Poquette
3538 | Chris Porter
3539 | Howard Porter
3540 | Kevin Porter
3541 | Kevin Porter
3542 | Michael Porter
3543 | Otto Porter
3544 | Terry Porter
3545 | Willie Porter
3546 | Bobby Portis
3547 | Bob Portman
3548 | Kristaps Porzingis
3549 | James Posey
3550 | Lavor Postell
3551 | John Postley
3552 | Vitaly Potapenko
3553 | Leon Powe
3554 | Cincinnatus Powell
3555 | Dwight Powell
3556 | Josh Powell
3557 | Kasib Powell
3558 | Norman Powell
3559 | Roger Powell
3560 | Alex Poythress
3561 | Marlbert Pradd
3562 | Mike Pratt
3563 | Paul Pressey
3564 | Phil Pressey
3565 | Dominic Pressley
3566 | Harold Pressley
3567 | Stephen Previs
3568 | A.J. Price
3569 | Brent Price
3570 | Jim Price
3571 | Mark Price
3572 | Mike Price
3573 | Ronnie Price
3574 | Tony Price
3575 | Bob Priddy
3576 | Pablo Prigioni
3577 | Taurean Prince
3578 | Tayshaun Prince
3579 | John Pritchard
3580 | Kevin Pritchard
3581 | Laron Profit
3582 | Gabe Pruitt
3583 | Joel Przybilla
3584 | Les Pugh
3585 | Roy Pugh
3586 | Anthony Pullard
3587 | Jacob Pullen
3588 | Rodney Purvis
3589 | Don Putman
3590 | Zhou Qi
3591 | Tim Quarterman
3592 | Bob Quick
3593 | Chris Quinn
3594 | Brian Quinnett
3595 | Ivan Rabb
3596 | Luther Rackley
3597 | Howie Rader
3598 | Mark Radford
3599 | Wayne Radford
3600 | Dino Radja
3601 | Vladimir Radmanovic
3602 | Aleksandar Radojevic
3603 | Frank Radovich
3604 | Moe Radovich
3605 | Miroslav Raduljica
3606 | Ray Radziszewski
3607 | Ray Ragelis
3608 | Sherwin Raiken
3609 | Ed Rains
3610 | Igor Rakocevic
3611 | Kurt Rambis
3612 | Peter John Ramos
3613 | Cal Ramsey
3614 | Frank Ramsey
3615 | Ray Ramsey
3616 | Mark Randall
3617 | Chasson Randle
3618 | Julius Randle
3619 | Anthony Randolph
3620 | Shavlik Randolph
3621 | Zach Randolph
3622 | Wally Rank
3623 | Kelvin Ransey
3624 | Sam Ranzino
3625 | Bobby Rascoe
3626 | Blair Rasmussen
3627 | Xavier Rathan-Mayes
3628 | George Ratkovicz
3629 | Ed Ratleff
3630 | Mike Ratliff
3631 | Theo Ratliff
3632 | Andy Rautins
3633 | Leo Rautins
3634 | Allan Ray
3635 | Clifford Ray
3636 | Don Ray
3637 | James Ray
3638 | Jim Ray
3639 | Jimmy Rayl
3640 | Craig Raymond
3641 | Connie Rea
3642 | Joe Reaves
3643 | Josh Reaves
3644 | Zeljko Rebraca
3645 | Eldridge Recasner
3646 | Michael Redd
3647 | Cam Reddish
3648 | Frank Reddout
3649 | J.J. Redick
3650 | Marlon Redmond
3651 | Davon Reed
3652 | Hub Reed
3653 | Justin Reed
3654 | Ron Reed
3655 | Willie Reed
3656 | Willis Reed
3657 | Bryant Reeves
3658 | Khalid Reeves
3659 | Richie Regan
3660 | Don Rehfeldt
3661 | Billy Reid
3662 | Don Reid
3663 | J.R. Reid
3664 | Jim Reid
3665 | Naz Reid
3666 | Robert Reid
3667 | Ryan Reid
3668 | Jared Reiner
3669 | Chick Reiser
3670 | Richard Rellford
3671 | Terrence Rencher
3672 | John Rennicke
3673 | Bob Rensberger
3674 | Efthimi Rentzias
3675 | Shawn Respert
3676 | Kevin Restani
3677 | Cameron Reynolds
3678 | George Reynolds
3679 | Jerry Reynolds
3680 | Kendall Rhine
3681 | Gene Rhodes
3682 | Rodrick Rhodes
3683 | Glen Rice
3684 | Glen Rice
3685 | Chris Richard
3686 | Clint Richardson
3687 | Jason Richardson
3688 | Jeremy Richardson
3689 | Josh Richardson
3690 | Malachi Richardson
3691 | Micheal Ray Richardson
3692 | Norm Richardson
3693 | Pooh Richardson
3694 | Quentin Richardson
3695 | Mitch Richmond
3696 | John Richter
3697 | Dick Ricketts
3698 | Isaiah Rider
3699 | Jackie Ridgle
3700 | Luke Ridnour
3701 | Mel Riebe
3702 | Bob Riedy
3703 | Jim Riffey
3704 | Antoine Rigaudeau
3705 | Tom Riker
3706 | Bob Riley
3707 | Eric Riley
3708 | Pat Riley
3709 | Ron Riley
3710 | Rich Rinaldi
3711 | Mike Riordan
3712 | Arnie Risen
3713 | Tex Ritter
3714 | Ramon Rivas
3715 | Austin Rivers
3716 | David Rivers
3717 | Doc Rivers
3718 | Lee Robbins
3719 | Red Robbins
3720 | Andre Roberson
3721 | Anthony Roberson
3722 | Rick Roberson
3723 | Terrance Roberson
3724 | Anthony Roberts
3725 | Bill Roberts
3726 | Brian Roberts
3727 | Fred Roberts
3728 | Joe Roberts
3729 | Lawrence Roberts
3730 | Marv Roberts
3731 | Stanley Roberts
3732 | Alvin Robertson
3733 | Oscar Robertson
3734 | Ryan Robertson
3735 | Tony Robertson
3736 | Rick Robey
3737 | Bernard Robinson
3738 | Chris Robinson
3739 | Cliff Robinson
3740 | Clifford Robinson
3741 | David Robinson
3742 | Devin Robinson
3743 | Duncan Robinson
3744 | Eddie Robinson
3745 | Flynn Robinson
3746 | Glenn Robinson
3747 | Glenn Robinson
3748 | Jackie Robinson
3749 | Jamal Robinson
3750 | James Robinson
3751 | Jerome Robinson
3752 | Justin Robinson
3753 | Larry Robinson
3754 | Mitchell Robinson
3755 | Nate Robinson
3756 | Oliver Robinson
3757 | Ronnie Robinson
3758 | Rumeal Robinson
3759 | Samuel Robinson
3760 | Thomas Robinson
3761 | Truck Robinson
3762 | Wayne Robinson
3763 | Wilbert Robinson
3764 | Bill Robinzine
3765 | Dave Robisch
3766 | Isaiah Roby
3767 | Red Rocha
3768 | John Roche
3769 | Gene Rock
3770 | Jack Rocker
3771 | Guy Rodgers
3772 | Dennis Rodman
3773 | Sergio Rodriguez
3774 | Lou Roe
3775 | Carlos Rogers
3776 | Harry Rogers
3777 | Johnny Rogers
3778 | Marshall Rogers
3779 | Rodney Rogers
3780 | Roy Rogers
3781 | Willie Rogers
3782 | Al Roges
3783 | Ken Rohloff
3784 | Kenny Rollins
3785 | Phil Rollins
3786 | Tree Rollins
3787 | Lorenzo Romar
3788 | Rajon Rondo
3789 | Jerry Rook
3790 | Sean Rooks
3791 | Derrick Rose
3792 | Jalen Rose
3793 | Malik Rose
3794 | Rob Rose
3795 | Petey Rosenberg
3796 | Lennie Rosenbluth
3797 | Hank Rosenstein
3798 | Dick Rosenthal
3799 | Quinton Ross
3800 | Terrence Ross
3801 | Doug Roth
3802 | Scott Roth
3803 | Irv Rothenberg
3804 | Mickey Rottner
3805 | Dan Roundfield
3806 | Giff Roux
3807 | Ron Rowan
3808 | Curtis Rowe
3809 | Jim Rowinski
3810 | Derrick Rowland
3811 | Brian Rowsom
3812 | Brandon Roy
3813 | Donald Royal
3814 | Reggie Royals
3815 | Bob Royer
3816 | Clifford Rozier
3817 | Terry Rozier
3818 | Ricky Rubio
3819 | Guy Rucker
3820 | Delaney Rudd
3821 | John Rudd
3822 | Damjan Rudez
3823 | John Rudometkin
3824 | Michael Ruffin
3825 | Trevor Ruffin
3826 | Paul Ruffner
3827 | Joe Ruklick
3828 | Jeff Ruland
3829 | Bob Rule
3830 | Jerry Rullo
3831 | Stefano Rusconi
3832 | Brandon Rush
3833 | Kareem Rush
3834 | Bill Russell
3835 | Bryon Russell
3836 | Campy Russell
3837 | Cazzie Russell
3838 | D'Angelo Russell
3839 | Frank Russell
3840 | Pierre Russell
3841 | Rubin Russell
3842 | Walker Russell
3843 | Walker Russell
3844 | Arvydas Sabonis
3845 | Domantas Sabonis
3846 | Robert Sacre
3847 | Ed Sadowski
3848 | Kenny Sailors
3849 | John Salley
3850 | John Salmons
3851 | Al Salvadori
3852 | Kevin Salvadori
3853 | Soumaila Samake
3854 | Luka Samanic
3855 | Cheikh Samb
3856 | Brandon Sampson
3857 | JaKarr Sampson
3858 | Jamal Sampson
3859 | Ralph Sampson
3860 | Samardo Samuels
3861 | Pepe Sanchez
3862 | Al Sanders
3863 | Frankie Sanders
3864 | Jeff Sanders
3865 | Larry Sanders
3866 | Melvin Sanders
3867 | Mike Sanders
3868 | Tom Sanders
3869 | Ron Sanford
3870 | Daniel Santiago
3871 | Bob Santini
3872 | Wayne Sappleton
3873 | Dario Saric
3874 | Jason Sasser
3875 | Jeryl Sasser
3876 | Tomas Satoransky
3877 | Kenny Satterfield
3878 | Pep Saul
3879 | Woody Sauldsberry
3880 | Glynn Saulters
3881 | Fred Saunders
3882 | Don Savage
3883 | Predrag Savovic
3884 | Alan Sawyer
3885 | Brian Scalabrine
3886 | Alex Scales
3887 | DeWayne Scales
3888 | Frank Schade
3889 | Ben Schadler
3890 | Herm Schaefer
3891 | Billy Schaeffer
3892 | Bob Schafer
3893 | Ben Scharnus
3894 | Marv Schatzman
3895 | Fred Schaus
3896 | Danny Schayes
3897 | Dolph Schayes
3898 | Ossie Schectman
3899 | Steve Scheffler
3900 | Tom Scheffler
3901 | Dave Schellhase
3902 | Luke Schenscher
3903 | Herb Scherer
3904 | Dwayne Schintzius
3905 | Dale Schlueter
3906 | Otto Schnellbacher
3907 | Dick Schnittker
3908 | Russ Schoene
3909 | Admiral Schofield
3910 | Dave Scholz
3911 | Milt Schoon
3912 | Detlef Schrempf
3913 | Dennis Schroder
3914 | Howie Schultz
3915 | Dick Schulz
3916 | Roger Schurig
3917 | John Schweitz
3918 | Luis Scola
3919 | Fred Scolari
3920 | Alvin Scott
3921 | Brent Scott
3922 | Byron Scott
3923 | Charlie Scott
3924 | Dennis Scott
3925 | James Scott
3926 | Mike Scott
3927 | Ray Scott
3928 | Shawnelle Scott
3929 | Willie Scott
3930 | Paul Scranton
3931 | Carey Scurry
3932 | Bruce Seals
3933 | Shea Seals
3934 | Malik Sealy
3935 | Ed Searcy
3936 | Kenny Sears
3937 | Wayne See
3938 | Thabo Sefolosha
3939 | Rony Seikaly
3940 | Glen Selbo
3941 | Josh Selby
3942 | Wayne Selden
3943 | Brad Sellers
3944 | Phil Sellers
3945 | Rollie Seltz
3946 | Lester Selvage
3947 | Frank Selvy
3948 | Jim Seminoff
3949 | Mouhamed Sene
3950 | George Senesky
3951 | Kevin Seraphin
3952 | Ansu Sesay
3953 | Ramon Sessions
3954 | Ha Seung-Jin
3955 | Tom Sewell
3956 | Collin Sexton
3957 | Paul Seymour
3958 | Nick Shaback
3959 | Lynn Shackelford
3960 | Charles Shackleford
3961 | Carl Shaeffer
3962 | Lee Shaffer
3963 | Mustafa Shakur
3964 | Landry Shamet
3965 | God Shammgod
3966 | Earl Shannon
3967 | Howie Shannon
3968 | Chuck Share
3969 | Bill Sharman
3970 | Walter Sharpe
3971 | John Shasky
3972 | Ron Shavlik
3973 | Brian Shaw
3974 | Casey Shaw
3975 | Marial Shayok
3976 | Bob Shea
3977 | Fred Sheffield
3978 | Craig Shelton
3979 | Lonnie Shelton
3980 | Tornike Shengelia
3981 | Billy Shepherd
3982 | Jeff Sheppard
3983 | Steve Sheppard
3984 | Ed Sherod
3985 | Charley Shipp
3986 | Paul Shirley
3987 | Gene Short
3988 | Purvis Short
3989 | Dexter Shouse
3990 | Dick Shrider
3991 | Gene Shue
3992 | John Shumate
3993 | Iman Shumpert
3994 | Alexey Shved
3995 | Pascal Siakam
3996 | Jordan Sibert
3997 | Sam Sibert
3998 | Mark Sibley
3999 | Jerry Sichting
4000 | Donald Sidle
4001 | Larry Siegfried
4002 | Ralph Siewert
4003 | Jack Sikma
4004 | James Silas
4005 | Paul Silas
4006 | Xavier Silas
4007 | Garret Siler
4008 | Mike Silliman
4009 | Chris Silva
4010 | Wayne Simien
4011 | Ben Simmons
4012 | Bobby Simmons
4013 | Cedric Simmons
4014 | Connie Simmons
4015 | Grant Simmons
4016 | Johnny Simmons
4017 | Jonathon Simmons
4018 | Kobi Simmons
4019 | Lionel Simmons
4020 | Miles Simon
4021 | Walter Simon
4022 | Anfernee Simons
4023 | Dickey Simpkins
4024 | Ralph Simpson
4025 | Alvin Sims
4026 | Bob Sims
4027 | Courtney Sims
4028 | Doug Sims
4029 | Henry Sims
4030 | Scott Sims
4031 | Kyle Singler
4032 | Sean Singletary
4033 | Chris Singleton
4034 | James Singleton
4035 | McKinley Singleton
4036 | Zeke Sinicola
4037 | Charlie Sitton
4038 | Peyton Siva
4039 | Scott Skiles
4040 | Al Skinner
4041 | Brian Skinner
4042 | Tal Skinner
4043 | Whitey Skoog
4044 | Jeff Slade
4045 | Reggie Slater
4046 | Jim Slaughter
4047 | Jose Slaughter
4048 | Tamar Slay
4049 | Donald Sloan
4050 | Jerry Sloan
4051 | Uros Slokar
4052 | Tom Sluby
4053 | Alen Smailagic
4054 | Keith Smart
4055 | Marcus Smart
4056 | Belus Smawley
4057 | Jack Smiley
4058 | Adrian Smith
4059 | Al Smith
4060 | Bill Smith
4061 | Bingo Smith
4062 | Bobby Smith
4063 | Charles Smith
4064 | Charles Smith
4065 | Charles Smith
4066 | Chris Smith
4067 | Chris Smith
4068 | Clinton Smith
4069 | Craig Smith
4070 | Deb Smith
4071 | Dennis Smith
4072 | Derek Smith
4073 | Don Smith
4074 | Don Smith
4075 | Donta Smith
4076 | Doug Smith
4077 | Ed Smith
4078 | Elmore Smith
4079 | Garfield Smith
4080 | Greg Smith
4081 | Greg Smith
4082 | Ish Smith
4083 | J.R. Smith
4084 | Jabari Smith
4085 | Jason Smith
4086 | Jerry Smith
4087 | Jim Smith
4088 | Joe Smith
4089 | John Smith
4090 | Josh Smith
4091 | Keith Smith
4092 | Ken Smith
4093 | Kenny Smith
4094 | LaBradford Smith
4095 | Larry Smith
4096 | Leon Smith
4097 | Michael Smith
4098 | Michael Smith
4099 | Mike Smith
4100 | Nolan Smith
4101 | Otis Smith
4102 | Pete Smith
4103 | Phil Smith
4104 | Randy Smith
4105 | Reggie Smith
4106 | Robert Smith
4107 | Russ Smith
4108 | Sam Smith
4109 | Sam Smith
4110 | Steve Smith
4111 | Steven Smith
4112 | Stevin Smith
4113 | Theron Smith
4114 | Tony Smith
4115 | William Smith
4116 | Willie Smith
4117 | Zhaire Smith
4118 | Rik Smits
4119 | Mike Smrek
4120 | Joe Smyth
4121 | Tony Snell
4122 | Eric Snow
4123 | Dick Snyder
4124 | Kirk Snyder
4125 | Chips Sobek
4126 | Ricky Sobers
4127 | Ron Sobie
4128 | Mike Sojourner
4129 | Willie Sojourner
4130 | Will Solomon
4131 | Willie Somerset
4132 | Darius Songaila
4133 | Dave Sorenson
4134 | James Southerland
4135 | Gino Sovran
4136 | Pape Sow
4137 | Ken Spain
4138 | Ray Spalding
4139 | Jim Spanarkel
4140 | Vassilis Spanoulis
4141 | Daniel Sparks
4142 | Guy Sparrow
4143 | Rory Sparrow
4144 | Odie Spears
4145 | Art Spector
4146 | Marreese Speights
4147 | Omari Spellman
4148 | Andre Spencer
4149 | Elmore Spencer
4150 | Felton Spencer
4151 | Lou Spicer
4152 | Craig Spitzer
4153 | Tiago Splitter
4154 | Art Spoelstra
4155 | Bruce Spraggins
4156 | Latrell Sprewell
4157 | Larry Spriggs
4158 | Jim Springer
4159 | Jim Spruill
4160 | Ryan Stack
4161 | Jerry Stackhouse
4162 | Kevin Stacom
4163 | Erv Staggs
4164 | Bud Stallworth
4165 | Dave Stallworth
4166 | Ed Stanczak
4167 | Terence Stansbury
4168 | John Starks
4169 | Keith Starr
4170 | Nik Stauskas
4171 | Larry Staverman
4172 | Larry Steele
4173 | Matt Steigenga
4174 | Vladimir Stepania
4175 | D.J. Stephens
4176 | Everette Stephens
4177 | Jack Stephens
4178 | Joe Stephens
4179 | Lance Stephenson
4180 | Alex Stepheson
4181 | Brook Steppe
4182 | Barry Stevens
4183 | Wayne Stevens
4184 | DeShawn Stevenson
4185 | Dennis Stewart
4186 | Kebu Stewart
4187 | Larry Stewart
4188 | Michael Stewart
4189 | Norm Stewart
4190 | Greg Stiemsma
4191 | Steve Stipanovich
4192 | Bryant Stith
4193 | Sam Stith
4194 | Tom Stith
4195 | Alex Stivrins
4196 | David Stockton
4197 | John Stockton
4198 | Peja Stojakovic
4199 | Ed Stokes
4200 | Greg Stokes
4201 | Jarnell Stokes
4202 | Maurice Stokes
4203 | Art Stolkey
4204 | Randy Stoll
4205 | Diamond Stone
4206 | George Stone
4207 | Julyan Stone
4208 | Awvee Storey
4209 | Damon Stoudamire
4210 | Salim Stoudamire
4211 | Amar'e Stoudemire
4212 | Paul Stovall
4213 | D.J. Strawberry
4214 | Joe Strawder
4215 | Bill Stricker
4216 | Erick Strickland
4217 | Mark Strickland
4218 | Rod Strickland
4219 | Roger Strickland
4220 | John Stroeder
4221 | Derek Strong
4222 | Lamont Strothers
4223 | John Stroud
4224 | Red Stroud
4225 | Max Strus
4226 | Rodney Stuckey
4227 | Gene Stump
4228 | Stan Stutz
4229 | Gary Suiter
4230 | Jared Sullinger
4231 | DaJuan Summers
4232 | Edmond Sumner
4233 | Barry Sumpter
4234 | Don Sunderlage
4235 | Bruno Sundov
4236 | Jon Sundvold
4237 | Bob Sura
4238 | Dick Surhoff
4239 | George Sutor
4240 | Dane Suttle
4241 | Greg Sutton
4242 | Keith Swagerty
4243 | Bennie Swain
4244 | Caleb Swanigan
4245 | Norm Swanson
4246 | Dan Swartz
4247 | Mike Sweetney
4248 | Robert Swift
4249 | Skeeter Swift
4250 | Stromile Swift
4251 | Aaron Swinson
4252 | Pape Sy
4253 | Buck Sydnor
4254 | Larry Sykes
4255 | Brett Szabo
4256 | Wally Szczerbiak
4257 | Walt Szczerbiak
4258 | Zan Tabak
4259 | Yuta Tabuse
4260 | Chris Taft
4261 | Sid Tanenbaum
4262 | Dragan Tarlac
4263 | Roy Tarpley
4264 | Levern Tart
4265 | Earl Tatum
4266 | Jayson Tatum
4267 | Edy Tavares
4268 | Anthony Taylor
4269 | Brian Taylor
4270 | Donell Taylor
4271 | Fatty Taylor
4272 | Fred Taylor
4273 | Isaiah Taylor
4274 | Jay Taylor
4275 | Jeff Taylor
4276 | Jeffery Taylor
4277 | Jermaine Taylor
4278 | Johnny Taylor
4279 | Leonard Taylor
4280 | Maurice Taylor
4281 | Mike Taylor
4282 | Oliver Taylor
4283 | Ronald Taylor
4284 | Tyshawn Taylor
4285 | Vince Taylor
4286 | Terry Teagle
4287 | Jeff Teague
4288 | Marquis Teague
4289 | Mirza Teletovic
4290 | Sebastian Telfair
4291 | Collis Temple
4292 | Garrett Temple
4293 | Milos Teodosic
4294 | Ira Terrell
4295 | Jared Terrell
4296 | Carlos Terry
4297 | Chuck Terry
4298 | Claude Terry
4299 | Emanuel Terry
4300 | Jason Terry
4301 | Hasheem Thabeet
4302 | Tom Thacker
4303 | Floyd Theard
4304 | Daniel Theis
4305 | Reggie Theus
4306 | Peter Thibeaux
4307 | Bill Thieben
4308 | Justus Thigpen
4309 | David Thirdkill
4310 | Adonis Thomas
4311 | Billy Thomas
4312 | Carl Thomas
4313 | Charles Thomas
4314 | Etan Thomas
4315 | Irving Thomas
4316 | Isaiah Thomas
4317 | Isiah Thomas
4318 | Jamel Thomas
4319 | James Thomas
4320 | Jim Thomas
4321 | Joe Thomas
4322 | John Thomas
4323 | Kenny Thomas
4324 | Khyri Thomas
4325 | Kurt Thomas
4326 | Lance Thomas
4327 | Malcolm Thomas
4328 | Matt Thomas
4329 | Ronald Thomas
4330 | Terry Thomas
4331 | Tim Thomas
4332 | Tyrus Thomas
4333 | Willis Thomas
4334 | Trey Thompkins
4335 | Bernard Thompson
4336 | Billy Thompson
4337 | Brooks Thompson
4338 | Corny Thompson
4339 | David Thompson
4340 | Dijon Thompson
4341 | George Thompson
4342 | Hollis Thompson
4343 | Jack Thompson
4344 | Jason Thompson
4345 | John Thompson
4346 | Kevin Thompson
4347 | Klay Thompson
4348 | LaSalle Thompson
4349 | Mychal Thompson
4350 | Mychel Thompson
4351 | Paul Thompson
4352 | Stephen Thompson
4353 | Tristan Thompson
4354 | Skip Thoren
4355 | Rod Thorn
4356 | Al Thornton
4357 | Bob Thornton
4358 | Dallas Thornton
4359 | Marcus Thornton
4360 | Sindarius Thornwell
4361 | Otis Thorpe
4362 | Sedale Threatt
4363 | Nate Thurmond
4364 | Mel Thurston
4365 | Matisse Thybulle
4366 | Hal Tidrick
4367 | Dan Tieman
4368 | Darren Tillis
4369 | Jack Tingle
4370 | George Tinsley
4371 | Jamaal Tinsley
4372 | Wayman Tisdale
4373 | Mike Tobey
4374 | Mike Todorovich
4375 | Ray Tolbert
4376 | Tom Tolbert
4377 | Anthony Tolliver
4378 | Dean Tolson
4379 | Rudy Tomjanovich
4380 | Andrew Toney
4381 | Sedric Toney
4382 | Andy Tonkovich
4383 | Andy Toolson
4384 | Jack Toomay
4385 | Bernard Toone
4386 | Irv Torgoff
4387 | Gene Tormohlen
4388 | Oscar Torres
4389 | Juan Toscano-Anderson
4390 | Bill Tosheff
4391 | Bob Tough
4392 | Axel Toupane
4393 | Monte Towe
4394 | Keith Tower
4395 | Blackie Towery
4396 | Linton Townes
4397 | Karl-Anthony Towns
4398 | Raymond Townsend
4399 | George Trapp
4400 | John Trapp
4401 | Robert Traylor
4402 | Gary Trent
4403 | Gary Trent
4404 | Jeff Trepagnier
4405 | John Tresvant
4406 | Allonzo Trier
4407 | Dick Triptow
4408 | Kelly Tripucka
4409 | Ansley Truitt
4410 | Cezary Trybanski
4411 | Jake Tsakalidis
4412 | John Tschogl
4413 | Lou Tsioropoulos
4414 | Nikoloz Tskitishvili
4415 | Al Tucker
4416 | Alando Tucker
4417 | Anthony Tucker
4418 | Jim Tucker
4419 | P.J. Tucker
4420 | Rayjon Tucker
4421 | Trent Tucker
4422 | Ronny Turiaf
4423 | Mirsad Turkcan
4424 | Hedo Turkoglu
4425 | Andre Turner
4426 | Bill Turner
4427 | Elston Turner
4428 | Evan Turner
4429 | Gary Turner
4430 | Henry Turner
4431 | Herschell Turner
4432 | Jack Turner
4433 | Jack Turner
4434 | Jeff Turner
4435 | John Turner
4436 | Myles Turner
4437 | Wayne Turner
4438 | Melvin Turpin
4439 | Dave Twardzik
4440 | Jack Twyman
4441 | B.J. Tyler
4442 | Jeremy Tyler
4443 | Terry Tyler
4444 | Charlie Tyra
4445 | Edwin Ubiles
4446 | Ekpe Udoh
4447 | Ime Udoka
4448 | Beno Udrih
4449 | Roko Ukic
4450 | Tyler Ulis
4451 | Wes Unseld
4452 | Hal Uplinger
4453 | Kelvin Upshaw
4454 | Jarrod Uthoff
4455 | Ben Uzoh
4456 | Stephen Vacendak
4457 | Jonas Valanciunas
4458 | Darnell Valentine
4459 | Denzel Valentine
4460 | Ronnie Valentine
4461 | John Vallely
4462 | Dick Van Arsdale
4463 | Tom Van Arsdale
4464 | Nick Van Exel
4465 | Keith Van Horn
4466 | Norm Van Lier
4467 | Dennis Van Zant
4468 | Fred VanVleet
4469 | Gene Vance
4470 | Logan Vander Velden
4471 | Jarred Vanderbilt
4472 | Ernie Vandeweghe
4473 | Kiki Vandeweghe
4474 | Nick Vanos
4475 | David Vanterpool
4476 | Ratko Varda
4477 | Anderson Varejao
4478 | Jarvis Varnado
4479 | Greivis Vasquez
4480 | Chico Vaughn
4481 | David Vaughn
4482 | David Vaughn
4483 | Jacque Vaughn
4484 | Rashad Vaughn
4485 | Virgil Vaughn
4486 | Loy Vaught
4487 | Bob Verga
4488 | Pete Verhoeven
4489 | Jan Vesely
4490 | Gundars Vetra
4491 | Joao Vianna
4492 | Charlie Villanueva
4493 | Gabe Vincent
4494 | Jay Vincent
4495 | Sam Vincent
4496 | Marcus Vinicius
4497 | Fred Vinson
4498 | Claude Virden
4499 | Gary Voce
4500 | Floyd Volker
4501 | Alexander Volkov
4502 | Whitey Von Nieda
4503 | Noah Vonleh
4504 | Jake Voskuhl
4505 | Danny Vranes
4506 | Slavko Vranes
4507 | Stojko Vrankovic
4508 | Brett Vroman
4509 | Jackson Vroman
4510 | Nikola Vucevic
4511 | Sasha Vujacic
4512 | Butch van Breda Kolff
4513 | Jan van Breda Kolff
4514 | Dean Wade
4515 | Dwyane Wade
4516 | Mark Wade
4517 | Von Wafer
4518 | Clint Wager
4519 | Dajuan Wagner
4520 | Danny Wagner
4521 | Milt Wagner
4522 | Moritz Wagner
4523 | Phillip Wagner
4524 | Dion Waiters
4525 | Granville Waiters
4526 | Andre Wakefield
4527 | Neal Walk
4528 | Andy Walker
4529 | Antoine Walker
4530 | Brady Walker
4531 | Chet Walker
4532 | Darrell Walker
4533 | Foots Walker
4534 | Henry Walker
4535 | Horace Walker
4536 | Jimmy Walker
4537 | Kemba Walker
4538 | Kenny Walker
4539 | Lonnie Walker
4540 | Phil Walker
4541 | Samaki Walker
4542 | Wally Walker
4543 | John Wall
4544 | Ben Wallace
4545 | Gerald Wallace
4546 | John Wallace
4547 | Rasheed Wallace
4548 | Red Wallace
4549 | Tyrone Wallace
4550 | Dwight Waller
4551 | Jamie Waller
4552 | Jim Walsh
4553 | Matt Walsh
4554 | Rex Walters
4555 | Paul Walther
4556 | Isaac Walthour
4557 | Bill Walton
4558 | Derrick Walton
4559 | Lloyd Walton
4560 | Luke Walton
4561 | Brad Wanamaker
4562 | Bobby Wanzer
4563 | Perry Warbington
4564 | Charlie Ward
4565 | Gerry Ward
4566 | Henry Ward
4567 | Casper Ware
4568 | Jim Ware
4569 | Ben Warley
4570 | Bob Warlick
4571 | Cornell Warner
4572 | Jameel Warney
4573 | Bob Warren
4574 | John Warren
4575 | T.J. Warren
4576 | Willie Warren
4577 | Bryan Warrick
4578 | Hakim Warrick
4579 | Chris Washburn
4580 | Julian Washburn
4581 | Bobby Washington
4582 | Darius Washington
4583 | Donald Washington
4584 | Duane Washington
4585 | Eric Washington
4586 | Jim Washington
4587 | Kermit Washington
4588 | P.J. Washington
4589 | Pearl Washington
4590 | Richard Washington
4591 | Stan Washington
4592 | Trooper Washington
4593 | Wilson Washington
4594 | Yuta Watanabe
4595 | Tremont Waters
4596 | Darryl Watkins
4597 | Bobby Watson
4598 | C.J. Watson
4599 | Earl Watson
4600 | Jamie Watson
4601 | Paul Watson
4602 | Ron Watts
4603 | Samuel Watts
4604 | Slick Watts
4605 | Maalik Wayns
4606 | David Wear
4607 | Travis Wear
4608 | Clarence Weatherspoon
4609 | Nick Weatherspoon
4610 | Quinndary Weatherspoon
4611 | Kyle Weaver
4612 | James Webb
4613 | Jeff Webb
4614 | Marcus Webb
4615 | Spud Webb
4616 | Chris Webber
4617 | Briante Weber
4618 | Jake Weber
4619 | Elnardo Webster
4620 | Jeff Webster
4621 | Martell Webster
4622 | Marvin Webster
4623 | Scott Wedman
4624 | Sonny Weems
4625 | Dick Wehr
4626 | Brant Weidner
4627 | Bob Weiss
4628 | Rick Weitzman
4629 | Bonzi Wells
4630 | Bubba Wells
4631 | Owen Wells
4632 | Ralph Wells
4633 | Chris Welp
4634 | Jiri Welsch
4635 | Thomas Welsh
4636 | Bill Wennington
4637 | Matt Wenstrom
4638 | Robert Werdann
4639 | Ray Wertis
4640 | David Wesley
4641 | Walt Wesley
4642 | David West
4643 | Delonte West
4644 | Doug West
4645 | Jerry West
4646 | Mario West
4647 | Mark West
4648 | Roland West
4649 | Dexter Westbrook
4650 | Russell Westbrook
4651 | Paul Westphal
4652 | John Wetzel
4653 | Robert Whaley
4654 | Ennis Whatley
4655 | DeJuan Wheat
4656 | Clinton Wheeler
4657 | Tyson Wheeler
4658 | Skippy Whitaker
4659 | Andrew White
4660 | Coby White
4661 | D.J. White
4662 | Derrick White
4663 | Eric White
4664 | Herb White
4665 | Hubie White
4666 | Jahidi White
4667 | James White
4668 | Jo Jo White
4669 | Okaro White
4670 | Randy White
4671 | Rodney White
4672 | Rory White
4673 | Royce White
4674 | Rudy White
4675 | Tony White
4676 | Willie White
4677 | Isaiah Whitehead
4678 | Jerome Whitehead
4679 | Donald Whiteside
4680 | Hassan Whiteside
4681 | Dwayne Whitfield
4682 | Chris Whitney
4683 | Hank Whitney
4684 | Hawkeye Whitney
4685 | Shayne Whittington
4686 | Sidney Wicks
4687 | Ron Widby
4688 | Murray Wier
4689 | Bob Wiesenhahn
4690 | Andrew Wiggins
4691 | Mitchell Wiggins
4692 | Ken Wilburn
4693 | C.J. Wilcox
4694 | Chris Wilcox
4695 | D.C. Wilcutt
4696 | Gene Wiley
4697 | Jacob Wiley
4698 | Michael Wiley
4699 | Morlon Wiley
4700 | Win Wilfong
4701 | Lenny Wilkens
4702 | Bob Wilkerson
4703 | Jamaal Wilkes
4704 | James Wilkes
4705 | Damien Wilkins
4706 | Dominique Wilkins
4707 | Eddie Lee Wilkins
4708 | Gerald Wilkins
4709 | Jeff Wilkins
4710 | Dale Wilkinson
4711 | Mike Wilks
4712 | Aaron Williams
4713 | Al Williams
4714 | Alan Williams
4715 | Alvin Williams
4716 | Art Williams
4717 | Bernie Williams
4718 | Bob Williams
4719 | Brandon Williams
4720 | Buck Williams
4721 | C.J. Williams
4722 | Charles Williams
4723 | Chuck Williams
4724 | Chuckie Williams
4725 | Cliff Williams
4726 | Corey Williams
4727 | Deron Williams
4728 | Derrick Williams
4729 | Duck Williams
4730 | Earl Williams
4731 | Elliot Williams
4732 | Eric Williams
4733 | Fly Williams
4734 | Frank Williams
4735 | Freeman Williams
4736 | Gene Williams
4737 | Grant Williams
4738 | Gus Williams
4739 | Guy Williams
4740 | Hank Williams
4741 | Herb Williams
4742 | Hot Rod Williams
4743 | Jason Williams
4744 | Jawad Williams
4745 | Jay Williams
4746 | Jayson Williams
4747 | Jerome Williams
4748 | John Williams
4749 | Johnathan Williams
4750 | Jordan Williams
4751 | Justin Williams
4752 | Kenny Williams
4753 | Kenrich Williams
4754 | Kevin Williams
4755 | Lorenzo Williams
4756 | Lou Williams
4757 | Marcus Williams
4758 | Marcus Williams
4759 | Marvin Williams
4760 | Matt Williams
4761 | Micheal Williams
4762 | Mike Williams
4763 | Milt Williams
4764 | Mo Williams
4765 | Monty Williams
4766 | Nate Williams
4767 | Pete Williams
4768 | Ray Williams
4769 | Reggie Williams
4770 | Reggie Williams
4771 | Rickey Williams
4772 | Rob Williams
4773 | Robert Williams
4774 | Ron Williams
4775 | Sam Williams
4776 | Sam Williams
4777 | Scott Williams
4778 | Sean Williams
4779 | Shammond Williams
4780 | Shawne Williams
4781 | Shelden Williams
4782 | Sly Williams
4783 | Terrence Williams
4784 | Travis Williams
4785 | Troy Williams
4786 | Walt Williams
4787 | Ward Williams
4788 | Willie Williams
4789 | Nigel Williams-Goss
4790 | Corliss Williamson
4791 | John Williamson
4792 | Zion Williamson
4793 | Vann Williford
4794 | Kevin Willis
4795 | Bill Willoughby
4796 | Dedric Willoughby
4797 | Bob Wilson
4798 | Bobby Wilson
4799 | Bobby Wilson
4800 | Bubba Wilson
4801 | D.J. Wilson
4802 | George Wilson
4803 | Isaiah Wilson
4804 | Jamil Wilson
4805 | Jasper Wilson
4806 | Jim Wilson
4807 | Michael Wilson
4808 | Nikita Wilson
4809 | Othell Wilson
4810 | Rick Wilson
4811 | Ricky Wilson
4812 | Stephen Wilson
4813 | Trevor Wilson
4814 | Kyle Wiltjer
4815 | Kennard Winchester
4816 | Tony Windis
4817 | John Windsor
4818 | Lee Winfield
4819 | David Wingate
4820 | Dontonio Wingfield
4821 | Harthorne Wingo
4822 | Marv Winkler
4823 | Justise Winslow
4824 | Rickie Winslow
4825 | Trevor Winter
4826 | Brian Winters
4827 | Voise Winters
4828 | Skip Wise
4829 | Willie Wise
4830 | Jeff Withey
4831 | Luke Witte
4832 | Greg Wittman
4833 | Randy Wittman
4834 | Garry Witts
4835 | Dave Wohl
4836 | Joe Wolf
4837 | Ruben Wolkowyski
4838 | Nate Wolters
4839 | Al Wood
4840 | Bob Wood
4841 | Christian Wood
4842 | David Wood
4843 | Howard Wood
4844 | Leon Wood
4845 | Loren Woods
4846 | Qyntel Woods
4847 | Randy Woods
4848 | Tommy Woods
4849 | Mike Woodson
4850 | Bob Woollard
4851 | Orlando Woolridge
4852 | Haywoode Workman
4853 | Mark Workman
4854 | Tom Workman
4855 | Metta World Peace
4856 | Willie Worsley
4857 | Sam Worthen
4858 | James Worthy
4859 | Antoine Wright
4860 | Bracey Wright
4861 | Brad Wright
4862 | Brandan Wright
4863 | Chris Wright
4864 | Chris Wright
4865 | Delon Wright
4866 | Dorell Wright
4867 | Howard Wright
4868 | Howie Wright
4869 | Joby Wright
4870 | Julian Wright
4871 | Larry Wright
4872 | Leroy Wright
4873 | Lonnie Wright
4874 | Lorenzen Wright
4875 | Luther Wright
4876 | Sharone Wright
4877 | Justin Wright-Foreman
4878 | Tony Wroten
4879 | Dennis Wuycik
4880 | A.J. Wynder
4881 | Guerschon Yabusele
4882 | Vincent Yarbrough
4883 | George Yardley
4884 | Barry Yates
4885 | Wayne Yates
4886 | Charlie Yelverton
4887 | Rich Yonakor
4888 | Danny Young
4889 | James Young
4890 | Joe Young
4891 | Korleone Young
4892 | Michael Young
4893 | Nick Young
4894 | Perry Young
4895 | Sam Young
4896 | Thaddeus Young
4897 | Tim Young
4898 | Trae Young
4899 | Sun Yue
4900 | Max Zaslofsky
4901 | Zeke Zawoluk
4902 | Cody Zeller
4903 | Dave Zeller
4904 | Gary Zeller
4905 | Harry Zeller
4906 | Luke Zeller
4907 | Tyler Zeller
4908 | Tony Zeno
4909 | Phil Zevenbergen
4910 | Wang Zhizhi
4911 | George Zidek
4912 | Derrick Zimmerman
4913 | Stephen Zimmerman
4914 | Paul Zipser
4915 | Ante Zizic
4916 | Jim Zoet
4917 | Bill Zopf
4918 | Ivica Zubac
4919 | Matt Zunic
4920 |
--------------------------------------------------------------------------------