Skip to main content

NBA — additional Python functions — sportsdataverse-data releases

load_nba_stats_leaguedash​

load_nba_stats_leaguedash(family: 'str', seasons: 'int | Iterable[int]', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

Load one asset family of the nba_stats_leaguedash release.

nba_stats_leaguedash is a parameter cube: one asset per (family, season) pair rather than one per season, so a family must be named. The valid families are exported as NBA_STATS_LEAGUEDASH_FAMILIES -- import that tuple to discover them rather than passing a bare string; an unknown family raises ValueError listing every valid value.

Column sets are family-specific (a lineups_* frame keys on group_id, a player_* frame on player_id), so this loader documents no fixed returns table. player_id / team_id are Int64 in every family and season, so cross-family joins need no dtype reconciliation.

Parameters

ParameterTypeDefaultDescription
familystrAsset family, e.g. "player_stats_advanced". Must be one of NBA_STATS_LEAGUEDASH_FAMILIES.
seasonsint | Iterable[int]Season, or iterable of seasons, to load. Seasons are END years (2024 = the 2023-24 NBA season). 1996 is the earliest season on the tag; per-family coverage starts later (lineups_* 2008, most player_tracking_* 2014). A requested season the family does not publish is warned about and skipped, not an error.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe with one row per player / team / lineup per requested season for the requested family; an empty frame when no requested season is published.

col_nametypedescription
player_idintegerUnique player identifier.
player_namecharacterPlayer name.
nicknamecharacterTeam or athlete nickname.
team_idintegerUnique team identifier.
team_abbreviationcharacterShort team abbreviation (e.g. 'LAS').
agedoublePlayer age (in years).
gpintegerGames played.
wintegerWins.
lintegerLosses.
w_pctdoubleWins percentage (0-1 decimal).
mindoubleMinutes played.
e_off_ratingdouble
off_ratingdouble
sp_work_off_ratingdouble
e_def_ratingdouble
def_ratingdouble
sp_work_def_ratingdouble
e_net_ratingdouble
net_ratingdoubleNet rating (off rating - def rating).
sp_work_net_ratingdouble
ast_pctdoubleAssist percentage.
ast_todouble
ast_ratiodouble
oreb_pctdouble
dreb_pctdouble
reb_pctdouble
tm_tov_pctdouble
e_tov_pctdouble
efg_pctdouble
ts_pctdoubleTrue shooting percentage (0-1).
usg_pctdouble
e_usg_pctdouble
e_pacedouble
pacedoublePossessions per 48 minutes.
pace_per40doublePace per40.
sp_work_pacedouble
piedoublePlayer Impact Estimate (0-1).
possintegerPoss.
fgmintegerField goals made.
fgaintegerField goal attempts.
fgm_pgdouble
fga_pgdouble
fg_pctdoubleField goal percentage (0-1).
gp_rankinteger
w_rankinteger
l_rankinteger
w_pct_rankinteger
min_rankinteger
e_off_rating_rankinteger
off_rating_rankinteger
sp_work_off_rating_rankinteger
e_def_rating_rankinteger
def_rating_rankinteger
sp_work_def_rating_rankinteger
e_net_rating_rankinteger
net_rating_rankinteger
sp_work_net_rating_rankinteger
ast_pct_rankinteger
ast_to_rankinteger
ast_ratio_rankinteger
oreb_pct_rankinteger
dreb_pct_rankinteger
reb_pct_rankinteger
tm_tov_pct_rankinteger
e_tov_pct_rankinteger
efg_pct_rankinteger
ts_pct_rankinteger
usg_pct_rankinteger
e_usg_pct_rankinteger
e_pace_rankinteger
pace_rankinteger
sp_work_pace_rankinteger
pie_rankinteger
fgm_rankinteger
fga_rankinteger
fgm_pg_rankinteger
fga_pg_rankinteger
fg_pct_rankinteger
team_countinteger
seasonintegerSeason year.
league_idcharacterLeague identifier ('10' = WNBA).
season_typecharacterSeason type (1=pre-season, 2=regular season, 3=postseason, 4=off-season for ESPN; or string label for WNBA Stats).
per_modecharacter

Example

from sportsdataverse.nba import load_nba_stats_leaguedash
adv = load_nba_stats_leaguedash("player_stats_advanced", seasons=2024)
print(adv.shape)

# Discover the valid families

from sportsdataverse.nba import NBA_STATS_LEAGUEDASH_FAMILIES
print([f for f in NBA_STATS_LEAGUEDASH_FAMILIES if f.startswith("player_tracking_")])

# Multi-season, pandas round-trip

drives_pd = load_nba_stats_leaguedash(
"player_tracking_drives", seasons=range(2020, 2025), return_as_pandas=True
)

# Pipeline next step (top usage rates in 2024)

import polars as pl
usage = load_nba_stats_leaguedash("player_stats_usage", seasons=2024)
usage.sort("usg_pct", descending=True).head()