NBA Height Differences
date published: April 09, 2021 read time: 3 minsHistogram of Height Differences Between NBA Players by Team
Motivation
This is a goofy proof-of-concept that I can use Sportsipy to pull sports data. Sportsipy is a “free python API that pulls the stats from www.sports-reference.com and allows them to be easily be used in python-based applications”. This is perfect for me because most sports data APIs out there are too expensive and hard to use. With Sportsipy I can easily pull data directly into my python3 files like such.
from sportsipy.nba.teams import Teams for team in Teams(): print("Name: {0} | Abbreviation: {1}".format(team.name, team.abbreviation))
Name: Los Angeles Clippers | Abbreviation: LAC Name: Brooklyn Nets | Abbreviation: BRK Name: Milwaukee Bucks | Abbreviation: MIL Name: Utah Jazz | Abbreviation: UTA Name: Atlanta Hawks | Abbreviation: ATL Name: Denver Nuggets | Abbreviation: DEN Name: Boston Celtics | Abbreviation: BOS Name: New Orleans Pelicans | Abbreviation: NOP Name: Sacramento Kings | Abbreviation: SAC Name: Philadelphia 76ers | Abbreviation: PHI Name: Portland Trail Blazers | Abbreviation: POR ...
Implementation
Step 1: Set up some simple unit conversions:
def get_height_in_inches(height): feet, inches = height.split('-') return int(feet) * 12 + int(inches) def get_height_in_feet(height): feet = height - (height % 1) inches = 12 * (height % 1) return int(feet) * 12 + int(inches)
Step 2: Find differences & display raw output:
def print_players(team_heights): tallest_player = max(team_heights, key=team_heights.get) shortest_player = min(team_heights, key=team_heights.get) tallest_height = team_heights[tallest_player] shortest_height = team_heights[shortest_player] tallest_feet = get_height_in_feet(tallest_height)[0] tallest_inches = get_height_in_feet(tallest_height)[1] shortest_feet = get_height_in_feet(shortest_height)[0] shortest_inches = get_height_in_feet(shortest_height)[1] difference = tallest_height - shortest_height print('%s: %s\'%s\" & %s: %s\'%s\" for a difference of: %s in.' % (tallest_player, tallest_feet, tallest_inches, shortest_player, shortest_feet, shortest_inches, difference)) return(tallest_player, shortest_player, tallest_feet, tallest_inches, shortest_feet, shortest_inches, difference) def display_data(): master_list = [] for team in Teams(): print('=' * 80) print(team.name) team_heights = {} for player in team.roster.players: height = get_height_in_inches(player.height) team_heights[player.name] = height height_diff = print_players(team_heights) master_list.append([team.name, height_diff]) print(master_list) return master_list
Step 3: Display graph:
This just an except of the source code print(difference_list) percentages = pd.Series(difference_list, index=index_list) df = pd.DataFrame({'percentage' : percentages}) df = df.sort_values(by='percentage') # set labels ax.set_xlabel('Height Difference', fontsize=15, fontweight='black', color = '#333F4B') ax.set_ylabel('') # set axis ax.tick_params(axis='both', which='major', labelsize=12) plt.yticks(my_range, df.index) # add an horizonal label for the y axis fig.text(-0.23, 0.96, 'Team', fontsize=15, fontweight='black', color = '#333F4B') # set the spines position ax.spines['bottom'].set_position(('axes', -0.04)) ax.spines['left'].set_position(('axes', 0.015)) plt.savefig('hist2.png', dpi=300, bbox_inches='tight')
Raw Print Statement from the Console
Brooklyn Nets
DeAndre Jordan: 6'11" & Chris Chiozza: 5'11" for a difference of: 12 in.
---
Los Angeles Clippers
Ivica Zubac: 7'0" & Lou Williams: 6'1" for a difference of: 11 in.
---
Milwaukee Bucks
Brook Lopez: 7'0" & D.J. Augustin: 5'11" for a difference of: 13 in.
---
Utah Jazz
Rudy Gobert: 7'0" & Donovan Mitchell: 6'0" for a difference of: 12 in.
---
Philadelphia 76ers
Joel Embiid: 7'0" & Tyrese Maxey: 6'2" for a difference of: 10 in.
---
Golden State Warriors
James Wiseman: 7'0" & Nico Mannion: 6'2" for a difference of: 10 in.
---
Los Angeles Lakers
Marc Gasol: 6'11" & Quinn Cook: 6'1" for a difference of: 10 in.
---
Dallas Mavericks
Boban Marjanović: 7'4" & Trey Burke: 6'0" for a difference of: 16 in.
---
Indiana Pacers
Domantas Sabonis: 6'11" & Aaron Holiday: 6'0" for a difference of: 11 in.
---
Charlotte Hornets
Nick Richards: 7'0" & Terry Rozier: 6'1" for a difference of: 11 in.
---
Toronto Raptors
Aron Baynes: 6'10" & Kyle Lowry: 6'0" for a difference of: 10 in.
---
Sacramento Kings
Hassan Whiteside: 7'0" & Kyle Guy: 6'1" for a difference of: 11 in.
---
Atlanta Hawks
Clint Capela: 6'10" & Brandon Goodwin: 6'0" for a difference of: 10 in.
---
New York Knicks
Mitchell Robinson: 7'0" & Jared Harper: 5'10" for a difference of: 14 in.
---
Cleveland Cavaliers
JaVale McGee: 7'0" & Collin Sexton: 6'1" for a difference of: 11 in.
---
Denver Nuggets
Bol Bol: 7'2" & Facundo Campazzo: 5'10" for a difference of: 16 in.
---
Portland Trail Blazers
Harry Giles: 6'11" & Damian Lillard: 6'2" for a difference of: 9 in.
---
San Antonio Spurs
Jakob Poeltl: 7'1" & Patty Mills: 6'1" for a difference of: 12 in.
---
Chicago Bulls
Luke Kornet: 7'2" & Devon Dotson: 6'2" for a difference of: 12 in.
---
Houston Rockets
DeMarcus Cousins: 6'10" & Eric Gordon: 6'3" for a difference of: 7 in.
---
New Orleans Pelicans
Steven Adams: 6'11" & Eric Bledsoe: 6'1" for a difference of: 10 in.
---
Detroit Pistons
Mason Plumlee: 6'11" & Saben Lee: 6'2" for a difference of: 9 in.
---
Orlando Magic
Mo Bamba: 7'0" & Frank Mason III: 5'11" for a difference of: 13 in.
---
Minnesota Timberwolves
Karl-Anthony Towns: 6'11" & Jordan McLaughlin: 5'11" for a difference of: 12 in.
---
Phoenix Suns
Frank Kaminsky: 7'0" & Chris Paul: 6'0" for a difference of: 12 in.
---
Miami Heat
Meyers Leonard: 7'0" & Kendrick Nunn: 6'2" for a difference of: 10 in.
---
Boston Celtics
Tacko Fall: 7'5" & Tremont Waters: 5'10" for a difference of: 19 in.
---
Washington Wizards
Robin Lopez: 7'0" & Ish Smith: 6'0" for a difference of: 12 in.
---
Oklahoma City Thunder
Moses Brown: 7'2" & Luguentz Dort: 6'3" for a difference of: 11 in.
---
Memphis Grizzlies
Jonas Valančiūnas: 6'11" & Tyus Jones: 6'0" for a difference of: 11 in.