Skip to main content

WNBA — additional Python functions — Analytics: wnba_player–wnba_team

wnba_player_war​

wnba_player_war(seasons: 'int | list[int]', *, league_id: 'str' = '10', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA WAR and VORP per player-season from our BPM, RAPM and BOBAN (league_id='10'). See sportsdataverse.nba.nba_player_war.nba_player_war.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
return_as_pandasboolFalse

Returns

One row per (season, player_id) (stats.nba.com ids, Int64): player_name, team_id (the team he played most possessions for), teams (how many he played for), min, poss (on-court possessions, offensive plus defensive over 2), rating and rating_bpm / rating_rapm / rating_boban (anchored, per 100), vorp, war with war_lo / war_hi (a nominal 90% interval from a bootstrap over each team-season's games: the sampling uncertainty of the team side and the playing time) and war_bpm / war_rapm / war_boban (the source spread), with _rank (1 = most), _pct and _n (possessions) for vorp and war among every player of the season. Sorted by season and war. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (2026 is 2025-26; the WNBA season is its calendar year).
player_idInt64stats.nba.com player id.
player_nameStringPlayer name, from the player impact release.
team_idInt64stats.nba.com team id of the team he played the most possessions for.
teamsInt64How many teams he played for in the regular season.
minFloat64Regular-season minutes (the player impact release's).
possFloat64On-court possessions, offensive plus defensive over 2, counted from the stats.nba.com possessions (every possession row, BB-D3's convention). The minutes basis of vorp and war.
ratingFloat64Points per 100 possessions above a league-average player: the mean of rating_bpm, rating_rapm and rating_boban.
rating_bpmFloat64Our BPM per 100, team-anchored and centred: the release's bpm with its team constant repaired (minute-weighted team mean = net rating / 5, BPM 2.0's), minus the player's team mean, plus the team's net rating / 5, centred so the league's possession-weighted mean is 0.
rating_rapmFloat64Our prior-informed RAPM (adj_rapm) per 100, team-anchored and centred like rating_bpm. Only the net adj_rapm is read: the o_adj_rapm / d_adj_rapm split carries a +11 / -11 offset.
rating_bobanFloat64Our BOBAN (boban_filtered_skill) per 100, team-anchored and centred like rating_bpm.
vorpFloat64Value over replacement player: (rating - R) * poss / the season's possessions per team, R the league's replacement level (REPLACEMENT_LEVEL; NBA -1.98, WNBA -3.18 per 100). Basketball-Reference's VORP scale: a season of possessions at R + 1 is 1.
warFloat64Wins above replacement: (rating - R) * poss / 100 / points per win (PTS_PER_WIN; NBA 31.56, WNBA 31.31). 0 at replacement level; a season's war adds up to the league's wins minus a team of replacement players' (.189 NBA 2024-25, .104 WNBA 2025).
war_loFloat64Low end of the nominal 90% interval for war (5th percentile of 1000 bootstrap replicates, each team-season seeded on its own): each team-season's games resampled with replacement (a game's player possessions, team possessions and margin move together), then his possessions, the team net rating, the anchoring and the centring recomputed. The source ratings and the replacement level are held fixed, so this is the sampling uncertainty of the team side and the playing time; the war_bpm / war_rapm / war_boban spread is the source uncertainty.
war_hiFloat64High end of the nominal 90% interval for war (95th percentile of the same 1000 game-resampled replicates as war_lo).
war_bpmFloat64war from rating_bpm alone. Every source shares the league's replacement level, so war_bpm, war_rapm and war_boban add up to the same league total.
war_rapmFloat64war from rating_rapm alone.
war_bobanFloat64war from rating_boban alone. BOBAN shrinks low-minute players toward average, so the replacement pool carries more war_boban than war_bpm (the replacement level is a box-score level).
vorp_rankFloat64Rank of vorp within the season among every player (1 = most; ties average); null under 10 players.
war_rankFloat64Rank of war within the season among every player (1 = most; ties average); null under 10 players.
vorp_pctFloat64Percentile of vorp within the season: 100 * (n + 1 - rank) / (n + 1), n the players ranked; null when the rank is null.
war_pctFloat64Percentile of war within the season: 100 * (n + 1 - rank) / (n + 1), n the players ranked; null when the rank is null.
vorp_nInt64Sample size of vorp: on-court possessions, rounded.
war_nInt64Sample size of war: on-court possessions, rounded.

wnba_player_wowy​

wnba_player_wowy(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA WOWY pairs (league_id='10'). See sportsdataverse.nba.nba_player_on_off.nba_player_wowy.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
return_as_pandasboolFalse

Returns

One row per (season, team_id, player_id_a, player_id_b) (player_id_a the smaller id) for every pair of the team's players: for _both (together), _a_only, _b_only and _neither the minutes, poss / opp_poss, pts / opp_pts, plus_minus and off_rtg / def_rtg / net_rtg. The four splits' totals add up to the team's season; the ratings do not add. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64stats.nba.com team id.
player_id_aInt64The first player of the pair, the smaller id.
player_id_bInt64The second player of the pair, the larger id.
minutes_bothFloat64Game-clock minutes of the team's season with both A and B on the floor.
poss_bothInt64The team's offensive possessions with both A and B on the floor (a possession belongs to the five on the floor when it starts).
opp_poss_bothInt64The team's defensive possessions with both A and B on the floor.
pts_bothInt64The team's points with both A and B on the floor, each scoring action credited to the lineup at that action (a free throw to the lineup at the last foul).
opp_pts_bothInt64The opponent's points with both A and B on the floor, credited as pts_both is.
plus_minus_bothInt64pts_both - opp_pts_both.
off_rtg_bothFloat64Offensive rating with both A and B on the floor: pts_both per 100 poss_both; null with no possessions.
def_rtg_bothFloat64Defensive rating with both A and B on the floor: opp_pts_both per 100 opp_poss_both; null with no possessions.
net_rtg_bothFloat64Net rating with both A and B on the floor: off_rtg_both - def_rtg_both; null when either is null.
minutes_a_onlyFloat64Game-clock minutes of the team's season with A on the floor and B off.
poss_a_onlyInt64The team's offensive possessions with A on the floor and B off (a possession belongs to the five on the floor when it starts).
opp_poss_a_onlyInt64The team's defensive possessions with A on the floor and B off.
pts_a_onlyInt64The team's points with A on the floor and B off, each scoring action credited to the lineup at that action (a free throw to the lineup at the last foul).
opp_pts_a_onlyInt64The opponent's points with A on the floor and B off, credited as pts_a_only is.
plus_minus_a_onlyInt64pts_a_only - opp_pts_a_only.
off_rtg_a_onlyFloat64Offensive rating with A on the floor and B off: pts_a_only per 100 poss_a_only; null with no possessions.
def_rtg_a_onlyFloat64Defensive rating with A on the floor and B off: opp_pts_a_only per 100 opp_poss_a_only; null with no possessions.
net_rtg_a_onlyFloat64Net rating with A on the floor and B off: off_rtg_a_only - def_rtg_a_only; null when either is null.
minutes_b_onlyFloat64Game-clock minutes of the team's season with B on the floor and A off.
poss_b_onlyInt64The team's offensive possessions with B on the floor and A off (a possession belongs to the five on the floor when it starts).
opp_poss_b_onlyInt64The team's defensive possessions with B on the floor and A off.
pts_b_onlyInt64The team's points with B on the floor and A off, each scoring action credited to the lineup at that action (a free throw to the lineup at the last foul).
opp_pts_b_onlyInt64The opponent's points with B on the floor and A off, credited as pts_b_only is.
plus_minus_b_onlyInt64pts_b_only - opp_pts_b_only.
off_rtg_b_onlyFloat64Offensive rating with B on the floor and A off: pts_b_only per 100 poss_b_only; null with no possessions.
def_rtg_b_onlyFloat64Defensive rating with B on the floor and A off: opp_pts_b_only per 100 opp_poss_b_only; null with no possessions.
net_rtg_b_onlyFloat64Net rating with B on the floor and A off: off_rtg_b_only - def_rtg_b_only; null when either is null.
minutes_neitherFloat64Game-clock minutes of the team's season with neither A nor B on the floor.
poss_neitherInt64The team's offensive possessions with neither A nor B on the floor (a possession belongs to the five on the floor when it starts).
opp_poss_neitherInt64The team's defensive possessions with neither A nor B on the floor.
pts_neitherInt64The team's points with neither A nor B on the floor, each scoring action credited to the lineup at that action (a free throw to the lineup at the last foul).
opp_pts_neitherInt64The opponent's points with neither A nor B on the floor, credited as pts_neither is.
plus_minus_neitherInt64pts_neither - opp_pts_neither.
off_rtg_neitherFloat64Offensive rating with neither A nor B on the floor: pts_neither per 100 poss_neither; null with no possessions.
def_rtg_neitherFloat64Defensive rating with neither A nor B on the floor: opp_pts_neither per 100 opp_poss_neither; null with no possessions.
net_rtg_neitherFloat64Net rating with neither A nor B on the floor: off_rtg_neither - def_rtg_neither; null when either is null.

wnba_playtype_ratings​

wnba_playtype_ratings(season: 'str', *, off_team: "'Optional[pl.DataFrame]'" = None, def_team: "'Optional[pl.DataFrame]'" = None, schedule: "'Optional[pl.DataFrame]'" = None, return_as_pandas: 'bool' = False) -> "'Union[pl.DataFrame, pd.DataFrame]'"

WNBA Synergy play-type-adjusted offense/defense (league_id="10").

Thin wrapper binding sportsdataverse.nba.nba_playtype.nba_playtype_ratings to the women's league. Synergy coverage is sparse for the WNBA; an empty upstream fetch degrades to a zero-row frame (never raises).

Parameters

ParameterTypeDefaultDescription
seasonstrSeason string, e.g. "2024".
off_teamOptional[DataFrame]NoneInjected Synergy offensive team frame (bypasses the live fetch).
def_teamOptional[DataFrame]NoneInjected Synergy defensive team frame.
scheduleOptional[DataFrame]NoneInjected team_id/opp_team_id schedule frame.
return_as_pandasboolFalseReturn a pandas DataFrame instead of polars.

Returns

Same schema as sportsdataverse.nba.nba_playtype.nba_playtype_ratings.

No returns table is published for this function: no capture: it reads stats.nba.com (WNBA league id 10), which answers HTTP 403 to the datacenter IP the docs are built on; the function works from a residential IP.

Example

from sportsdataverse.wnba import wnba_playtype_ratings
r = wnba_playtype_ratings("2024")
print(r.sort("adj_off", descending=True).head())

wnba_referee_assignments​

wnba_referee_assignments(date: 'str | _dt.date', *, raw: 'bool' = False, return_as_pandas: 'bool' = False, proxy: 'dict | None' = None) -> 'dict[str, Any]'

Fetch and parse WNBA referee assignments for a given date from official.nba.com.

Retrieves the referee crew assignments and replay center officials for all WNBA games on a given date. The crew_position column (1–4) represents the feed's slot order; slot 1 is inferred to be the crew chief. The season column is the WNBA single-year season (feed year converted as-is). This is a thin shim over sportsdataverse.nba.nba_officiating.nba_referee_assignments that sets league="wnba".

Parameters

ParameterTypeDefaultDescription
datestr | dateThe date to fetch assignments for (str in "YYYY-MM-DD" format or datetime.date).
rawboolFalseIf True, return the raw JSON payload (dict) with all three leagues instead of parsed DataFrames.
return_as_pandasboolFalseIf True, return pandas DataFrames instead of polars.
proxydict | NoneNoneOptional proxy dict passed through to the HTTP layer.

Returns

A dict with keys "officials" and "replay_center" mapping to DataFrames. If raw=True, returns the full three-league JSON payload instead.

col_nametypedescription
officials.leagueStringLeague the assignment belongs to: nba, gl (G League), or wnba.
officials.game_idString10-digit game id (zero-padded) for the assigned game.
officials.game_dateDateGame date parsed from the feed's MM/DD/YYYY format.
officials.seasonInt64Season end year, converted from the feed's code: start year + 1 for NBA/G League's two-calendar-year seasons, start year unchanged for WNBA's single-year seasons.
officials.season_typeStringSeason type decoded from the feed's season code first digit: preseason, regular, all-star, playoffs, play-in, or nba-cup-final.
officials.game_codeStringLeague game code in YYYYMMDD/AWYHOM format, matching the away and home team abbreviations.
officials.home_team_idInt6410-digit team id of the home team.
officials.home_team_abbrStringThree-letter abbreviation of the home team.
officials.away_team_idInt6410-digit team id of the away team.
officials.away_team_abbrStringThree-letter abbreviation of the away team.
officials.crew_positionInt64Feed's official slot order (1-4); slot 1 is inferred to be the crew chief since the API does not label roles.
officials.official_idInt64Numeric official id from the feed (source field official{n}_code); expected to match stats.nba.com's OFFICIAL_ID.
officials.official_nameStringOfficial's display name for this crew slot.
officials.jersey_numStringOfficial's jersey number as a string, from the feed's official{n}_JNum field.
replay_center.leagueStringLeague the replay-center staffing belongs to: nba, gl, or wnba.
replay_center.game_dateDateDate the replay-center official worked; a date-level staffing record, not tied to one game.
replay_center.official_idInt64Numeric replay-center official id from the feed.
replay_center.official_nameStringReplay-center official's display name for that date.

Raises

ExceptionDescription
ValueErrordate is not a valid "YYYY-MM-DD" date (checked before any request).
NoDataErrorOfficial.nba.com answered 404, or 403 with S3's AccessDenied body. A date without WNBA games is not this (see the Note).
AssetFetchErrorThe fetch failed (network error, rate limit, or Akamai WAF block), the 200 body is not a JSON object, or the wnba block's Table/Table1 rows are missing or malformed (a row without game_id included). With raw=True all three leagues (nba, gl and wnba) are checked, since the whole payload is returned.

Example

from sportsdataverse.wnba.wnba_officiating import wnba_referee_assignments
result = wnba_referee_assignments("2026-06-13")
officials = result["officials"]
print(f"Found {officials.height} official slots")

wnba_season_sim​

wnba_season_sim(season: 'int', *, as_of_date: 'dt.date | None' = None, league_id: 'str' = '10', n_sims: 'int' = 10000, seed: 'int' = 20261103, chances: 'list[float] | None' = None, cup_schedule: 'pl.DataFrame | None' = None, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA season sim: projected W-L, seed, playoff and lottery odds (league_id='10'). See sportsdataverse.nba.nba_season_sim.nba_season_sim.

Parameters

ParameterTypeDefaultDescription
seasonint
as_of_datedate | NoneNone
league_idstr'10'
n_simsint10000
seedint20261103
chanceslist[float] | NoneNone
cup_scheduleDataFrame | NoneNone
return_as_pandasboolFalse

Returns

One row per team (stats.nba.com team_id, Int64), sorted by conference and mean seed: * wins / losses so far, games_remaining, and the as-of adj_net_rtg with its posterior sd adj_net_rtg_sd (capped so two teams' shift carries at most 3/4 of a game's variance; it binds only near the prior, before many games are played). * proj_wins / proj_losses (means), proj_wins_sd, the 10th and 90th percentiles, and proj_wins_se (the Monte Carlo error of the mean). * p_division (NBA), p_seed_1 .. p_seed_15 (the regular-season finish in the conference, NBA, or the league, WNBA) and mean_seed. * p_top4 (first-round home court), p_top6 (NBA, straight to the playoffs), p_play_in (NBA, seeds 7-10), p_playoffs (NBA: top 6 or through the play-in; WNBA: top 8) and its Monte Carlo p_playoffs_se. * p_lottery, p_pick_1, p_drawn_pick (a pick from the drawing: the NBA's top four, the WNBA's top two) and mean_pick (given a lottery finish). The pick columns are null when the league has no published chances for that many lottery teams. * n_sims.

col_nametypedescription
seasonInt64Season, named by the year it ends (2026 is 2025-26); the WNBA season is its calendar year.
as_of_dateDateThe as-of date: games on or after it are simulated, the ones before it are played. Null when every game with a score counts as played.
team_idInt64stats.nba.com team id (Int64).
conferenceStringNBA conference (East / West) from the 2004-05 alignment; "WNBA" for every WNBA team (one table).
divisionStringNBA division (Atlantic, Central, Southeast, Northwest, Pacific, Southwest); "WNBA" for every WNBA team.
winsInt64Regular-season wins in the games already played.
lossesInt64Regular-season losses in the games already played.
games_remainingInt64Regular-season games on the schedule still to play (simulated).
adj_net_rtgFloat64As-of adjusted net rating from the possession ridge at the sim's penalty: points per 100 over an average opponent on a neutral court.
adj_net_rtg_sdFloat64Posterior sd of adj_net_rtg (points per 100) from the ridge, capped so two teams' shift carries at most 3/4 of a game's variance; the sd of the per-season rating shift each simulated season draws.
proj_winsFloat64Mean final regular-season wins over the simulated seasons (played wins plus simulated ones).
proj_lossesFloat64Mean final regular-season losses over the simulated seasons.
proj_wins_sdFloat64Standard deviation of the final wins over the simulated seasons.
proj_wins_p10Float6410th percentile of the final wins over the simulated seasons.
proj_wins_p90Float6490th percentile of the final wins over the simulated seasons.
proj_wins_seFloat64Monte Carlo standard error of proj_wins: proj_wins_sd / sqrt(n_sims).
p_divisionFloat64Share of simulated seasons in which the team wins its division under the NBA tiebreakers; null for the WNBA.
p_seed_1Float64Share of simulated seasons in which the team finishes the regular season seeded 1: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_2Float64Share of simulated seasons in which the team finishes the regular season seeded 2: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_3Float64Share of simulated seasons in which the team finishes the regular season seeded 3: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_4Float64Share of simulated seasons in which the team finishes the regular season seeded 4: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_5Float64Share of simulated seasons in which the team finishes the regular season seeded 5: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_6Float64Share of simulated seasons in which the team finishes the regular season seeded 6: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_7Float64Share of simulated seasons in which the team finishes the regular season seeded 7: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_8Float64Share of simulated seasons in which the team finishes the regular season seeded 8: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_9Float64Share of simulated seasons in which the team finishes the regular season seeded 9: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_10Float64Share of simulated seasons in which the team finishes the regular season seeded 10: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_11Float64Share of simulated seasons in which the team finishes the regular season seeded 11: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_12Float64Share of simulated seasons in which the team finishes the regular season seeded 12: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_13Float64Share of simulated seasons in which the team finishes the regular season seeded 13: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_14Float64Share of simulated seasons in which the team finishes the regular season seeded 14: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
p_seed_15Float64Share of simulated seasons in which the team finishes the regular season seeded 15: in its conference for the NBA, in the league for the WNBA (before the NBA play-in). 0 for a seed past the number of teams.
mean_seedFloat64Mean regular-season seed over the simulated seasons (1 = best).
p_top4Float64Share of simulated seasons with a top-4 seed: first-round home court.
p_top6Float64NBA: share of simulated seasons with a top-6 conference seed, straight to the playoffs; null for the WNBA.
p_play_inFloat64NBA: share of simulated seasons with a conference seed of 7 to 10, the play-in; null for the WNBA.
p_playoffsFloat64Share of simulated seasons in which the team makes the playoffs: NBA top 6 or through the simulated play-in; WNBA top 8.
p_playoffs_seFloat64Monte Carlo standard error of p_playoffs: sqrt(p (1 - p) / n_sims).
p_lotteryFloat64Share of simulated seasons in which the team misses the playoffs and enters the draft lottery.
p_pick_1Float64Share of simulated seasons in which the team's own lottery slot draws the first pick; null when the league has no published chances for that many lottery teams.
p_drawn_pickFloat64Share of simulated seasons in which the team's slot gets a drawn pick (NBA top 4, WNBA top 2); null as p_pick_1.
mean_pickFloat64Mean draft pick over the simulated seasons in which the team is in the lottery; null when it never is, or as p_pick_1.
n_simsInt64Number of simulated seasons behind every share on the row.

wnba_season_standings​

wnba_season_standings(games: 'pl.DataFrame', *, league_id: 'str' = '10', seed: 'int' = 0, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA standings with the WNBA tiebreakers (league_id='10'). See sportsdataverse.nba.nba_season_rules.nba_season_standings.

Parameters

ParameterTypeDefaultDescription
gamesDataFrame
league_idstr'10'
seedint0
return_as_pandasboolFalse

Returns

One row per (season, team_id) that played: conference / division (NBA; the WNBA rows say "WNBA"), games, wins, losses, win_pct, point_diff, division_rank (1 = the division winner), division_leader, seed (rank in the conference for the NBA, in the league for the WNBA, 1 = best) and games_back (behind the seed-1 team). Sorted by season, conference and seed.

col_nametypedescription
seasonInt64Season, named by the year it ends (2026 is 2025-26); the WNBA season is its calendar year.
team_idInt64stats.nba.com team id (Int64).
conferenceStringNBA conference (East / West); "WNBA" for every WNBA team.
divisionStringNBA division; "WNBA" for every WNBA team.
gamesInt64Regular-season games played.
winsInt64Regular-season wins.
lossesInt64Regular-season losses.
win_pctFloat64Regular-season winning percentage, wins divided by games played; the first key of the seeding.
point_diffInt64Points scored minus points allowed over the regular-season games.
division_rankInt64Rank within the division under the NBA tiebreakers, 1 = the division winner (the WNBA rows rank the league).
division_leaderBooleanTrue for the NBA division winner after the division tiebreak; False for every WNBA row.
seedInt64Seed under the league's tiebreakers: rank in the conference (NBA) or the league (WNBA), 1 = best.
games_backFloat64Games behind the seed-1 team of the conference (NBA) or league (WNBA): ((leader wins - wins) + (losses - leader losses)) / 2.

wnba_shot_value​

wnba_shot_value(player_ids: "'list[int]'", season: 'str', *, include_context: 'bool' = False, return_as_pandas: 'bool' = False) -> "'dict[str, Union[pl.DataFrame, pd.DataFrame]]'"

WNBA one-call shot-value spine (league_id="10").

Thin wrapper binding sportsdataverse.nba.nba_shot_value.nba_shot_value to the women's league; fetches each player's shotchartdetail, scores per-shot expected points from the free LeagueAverages zone table, and returns the scored shots plus shooter talent, selection quality, and zone-value maps (and the defender/shot-clock context tables when include_context=True). Women's court geometry + shrinkage constant are keyed "10" in nba_shot_value_constants.

Parameters

ParameterTypeDefaultDescription
player_idslist[int]Player ids to fetch.
seasonstrSeason string, e.g. "2024".
include_contextboolFalseAlso fetch + return the playerdashptshots defender/shot-clock context tables.
return_as_pandasboolFalseReturn pandas frames instead of polars.

Returns

{"shots", "talent", "selection", "zones"} (plus "context" when requested). An empty fetch returns a dict of zero-row frames.

Example

from sportsdataverse.wnba import wnba_shot_value
out = wnba_shot_value([1628886], "2024")
out["talent"].head()

wnba_situational_lineup​

wnba_situational_lineup(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', top_n: 'int | None' = None, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA five-man unit splits by situation (league_id='10'). See sportsdataverse.nba.nba_situational.nba_situational_lineup.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
top_nint | NoneNone
return_as_pandasboolFalse

Returns

One row per (season, team_id, lineup_id, family, split): lineup_id is the five player ids sorted and joined with - (BB-D4's id), player_1..5 the same ids, then the columns of nba_situational_team. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64stats.nba.com team id.
lineup_idStringThe five player ids of the unit on the floor as the possession starts, sorted and joined with '-' (BB-D4's id).
player_1Int64Player 1 of the unit, in lineup_id order.
player_2Int64Player 2 of the unit, in lineup_id order.
player_3Int64Player 3 of the unit, in lineup_id order.
player_4Int64Player 4 of the unit, in lineup_id order.
player_5Int64Player 5 of the unit, in lineup_id order.
familyStringThe split family: all, clutch, period, half, garbage, score, venue, opponent, play_type or chance; within a family the splits add up to the all row.
splitStringThe split: all; clutch / not_clutch; p1..p4 / ot; h1 / h2 / ot; garbage_time / not_garbage_time; leading / tied / trailing; home / away / neutral; vs_top / vs_rest; transition / half_court; second_chance / first_chance.
gamesInt64Games with at least one possession in the split (does not add up across a family).
minutesFloat64Game-clock minutes of the split's possessions (seconds / 60).
secondsFloat64Game-clock seconds of the split's possessions: each possession's start clock minus its end clock.
possInt64Offensive possessions in the split.
opp_possInt64Defensive possessions in the split.
ptsInt64Points scored on the offensive possessions.
opp_ptsInt64Points allowed on the defensive possessions.
plus_minusInt64Plus-minus over the split: pts - opp_pts.
off_rtgFloat64Offensive rating: pts per 100 poss; null with no offensive possessions.
def_rtgFloat64Defensive rating: opp_pts per 100 opp_poss; null with no defensive possessions.
net_rtgFloat64Net rating: off_rtg - def_rtg; null when either is null.
off_rtg_nInt64Sample size of off_rtg: poss.
def_rtg_nInt64Sample size of def_rtg: opp_poss.
net_rtg_nInt64Sample size of net_rtg: poss + opp_poss.

wnba_situational_player​

wnba_situational_player(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', top_n: 'int | None' = None, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA player on-floor splits by situation (league_id='10'). See sportsdataverse.nba.nba_situational.nba_situational_player.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
top_nint | NoneNone
return_as_pandasboolFalse

Returns

One row per (season, team_id, player_id, family, split), the columns of nba_situational_team: the team's possessions, points and ratings with the player on the floor as the possession starts. player_id is the stats.nba.com person id (Int64). Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64stats.nba.com team id.
player_idInt64stats.nba.com person id. A possession counts for the five on the floor as it starts, with all its points.
familyStringThe split family: all, clutch, period, half, garbage, score, venue, opponent, play_type or chance; within a family the splits add up to the all row.
splitStringThe split: all; clutch / not_clutch; p1..p4 / ot; h1 / h2 / ot; garbage_time / not_garbage_time; leading / tied / trailing; home / away / neutral; vs_top / vs_rest; transition / half_court; second_chance / first_chance.
gamesInt64Games with at least one possession in the split (does not add up across a family).
minutesFloat64Game-clock minutes of the split's possessions (seconds / 60).
secondsFloat64Game-clock seconds of the split's possessions: each possession's start clock minus its end clock.
possInt64Offensive possessions in the split.
opp_possInt64Defensive possessions in the split.
ptsInt64Points scored on the offensive possessions.
opp_ptsInt64Points allowed on the defensive possessions.
plus_minusInt64Plus-minus over the split: pts - opp_pts.
off_rtgFloat64Offensive rating: pts per 100 poss; null with no offensive possessions.
def_rtgFloat64Defensive rating: opp_pts per 100 opp_poss; null with no defensive possessions.
net_rtgFloat64Net rating: off_rtg - def_rtg; null when either is null.
off_rtg_nInt64Sample size of off_rtg: poss.
def_rtg_nInt64Sample size of def_rtg: opp_poss.
net_rtg_nInt64Sample size of net_rtg: poss + opp_poss.

wnba_situational_team​

wnba_situational_team(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', top_n: 'int | None' = None, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA team splits by situation (league_id='10'). See sportsdataverse.nba.nba_situational.nba_situational_team.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
top_nint | NoneNone
return_as_pandasboolFalse

Returns

One row per (season, team_id, family, split): games, minutes / seconds, poss / opp_poss, pts / opp_pts, plus_minus, off_rtg / def_rtg / net_rtg (per 100 possessions) and their _n. Ids are the stats.nba.com ids (Int64). Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64stats.nba.com team id.
familyStringThe split family: all, clutch, period, half, garbage, score, venue, opponent, play_type or chance; within a family the splits add up to the all row.
splitStringThe split: all; clutch / not_clutch; p1..p4 / ot; h1 / h2 / ot; garbage_time / not_garbage_time; leading / tied / trailing; home / away / neutral; vs_top / vs_rest; transition / half_court; second_chance / first_chance.
gamesInt64Games with at least one possession in the split (does not add up across a family).
minutesFloat64Game-clock minutes of the split's possessions (seconds / 60).
secondsFloat64Game-clock seconds of the split's possessions: each possession's start clock minus its end clock.
possInt64Offensive possessions in the split.
opp_possInt64Defensive possessions in the split.
ptsInt64Points scored on the offensive possessions.
opp_ptsInt64Points allowed on the defensive possessions.
plus_minusInt64Plus-minus over the split: pts - opp_pts.
off_rtgFloat64Offensive rating: pts per 100 poss; null with no offensive possessions.
def_rtgFloat64Defensive rating: opp_pts per 100 opp_poss; null with no defensive possessions.
net_rtgFloat64Net rating: off_rtg - def_rtg; null when either is null.
off_rtg_nInt64Sample size of off_rtg: poss.
def_rtg_nInt64Sample size of def_rtg: opp_poss.
net_rtg_nInt64Sample size of net_rtg: poss + opp_poss.

wnba_team_clutch​

wnba_team_clutch(season: 'int', *, league_id: 'str' = '10', return_as_pandas: 'bool' = False) -> 'Union[pl.DataFrame, pd.DataFrame]'

WNBA clutch skill (league_id='10'). See sportsdataverse.nba.nba_clutch.nba_team_clutch.

Parameters

ParameterTypeDefaultDescription
seasonint
league_idstr'10'
return_as_pandasboolFalse

Returns

One row per team: season, team_id, clutch_net_rating, adj_net_rtg, clutch_delta, clutch_skill_shrunk, clutch_poss. Empty input returns that schema with zero rows.

No returns table is published for this function: no capture: it reads stats.wnba.com, which answers HTTP 403 to the datacenter IP the docs are built on; the function works from a residential IP.

wnba_team_luck​

wnba_team_luck(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA luck and close-game record: Pythagorean expected wins vs actual, close-game W-L (league_id='10'). See sportsdataverse.nba.nba_team_luck.nba_team_luck.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
return_as_pandasboolFalse

Returns

One row per (season, team_id); team_id is the stats.nba.com team id (Int64). games, wins, losses, pts and opp_pts are from the final scores; win_pct, pythag_win_pct, exp_wins and luck_wins (wins - exp_wins) follow. pbp_games counts the games with published possessions, and close_games, close_wins, close_losses and close_win_pct (null with no close game) are the close games among them. pythag_win_pct, luck_wins and close_win_pct have <m>_rank (1 = highest), <m>_pct (the Weibull percentile) and <m>_n (games, or close games); ranks are within the season, among teams with at least half the most games (close_win_pct also needs possessions for half of them and five close games), and null under five teams. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, the calendar year.
team_idInt64stats.nba.com team id (the 10-digit franchise id).
gamesInt64Games in the season type's completed games (the stats schedule's final scores).
winsInt64Wins in the season type's completed games (the stats schedule's final scores).
lossesInt64Losses in the season type's completed games (the stats schedule's final scores).
ptsInt64Points scored in those games (final scores).
opp_ptsInt64Points allowed in those games (final scores).
win_pctFloat64Win fraction: wins divided by games, from the final scores.
pythag_win_pctFloat64Pythagorean win fraction: pts^x / (pts^x + opp_pts^x), x = PYTHAG_EXPONENT['wnba'], fitted on past seasons by tools/fit_team_luck_pythag.py.
exp_winsFloat64Expected wins: pythag_win_pct * games.
luck_winsFloat64Luck in wins: wins minus exp_wins. Positive means the team won more games than its scoring says it should have.
pbp_gamesInt64Games with published possessions (wnba_stats_possessions); close_games is counted among these. A game whose late possessions are missing from the release counts as not close.
close_gamesInt64Close games: at least one possession in play with 5:00 or less left (starting there, or starting before 5:00 and ending after it) in the 4th quarter (the 2nd half through 2005, when the WNBA played two 20-minute halves) or an overtime, the score within 5 as that possession starts (stats.nba.com's clutch window; BB-D3's close split). The margin is the running sum of the possessions' points, so it can drift from the scoreboard: NBA 2025-26 agrees with an independent ESPN play-by-play recount on 1215 of 1229 games.
close_winsInt64Wins in close games.
close_lossesInt64Losses in close games.
close_win_pctFloat64close_wins / close_games; null with no close game.
pythag_win_pct_rankFloat64Rank of pythag_win_pct within the season (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the season; null for a non-qualifier, a null value, or fewer than five qualifiers, or when every qualifier has the same value.
luck_wins_rankFloat64Rank of luck_wins within the season (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the season; null for a non-qualifier, a null value, or fewer than five qualifiers, or when every qualifier has the same value.
close_win_pct_rankFloat64Rank of close_win_pct within the season (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the season, have possessions for at least half their games and played at least five close games (MIN_CLOSE_GAMES); null otherwise, for a null value, or with fewer than five qualifiers, or when every qualifier has the same value.
pythag_win_pct_pctFloat64Percentile of pythag_win_pct within the season among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
luck_wins_pctFloat64Percentile of luck_wins within the season among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
close_win_pct_pctFloat64Percentile of close_win_pct within the season among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
pythag_win_pct_nInt64Sample size of pythag_win_pct: games.
luck_wins_nInt64Sample size of luck_wins: games.
close_win_pct_nInt64Sample size of close_win_pct: close games.

wnba_team_season_flow​

wnba_team_season_flow(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA game flow per team and season, with ranks (league_id='10'). See sportsdataverse.nba.nba_game_flow.nba_team_season_flow.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
return_as_pandasboolFalse

Returns

One row per (season, team_id): games, wins; lead_pct, trail_pct, tied_pct, avg_margin and avg_wp (weighted by game clock); lead_changes_pg and times_tied_pg; largest_lead, largest_comeback and max_run (season bests); runs_10 / opp_runs_10 and their per-game rates; avg_longest_drought_sec; def_poss, stops, stop_pct; kills, double_kills, kills_pg, double_kills_pg and kills_per_100. The ten rated metrics carry <m>_rank (1 = best; opp_runs_10_pg and avg_longest_drought_sec rank low first), <m>_pct and <m>_n (games; the games with possessions for kills_pg / double_kills_pg and with a win probability for avg_wp; defensive possessions for stop_pct and kills_per_100), among teams with at least half the season's most games, null under five teams. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64stats.wnba.com team id.
gamesInt64Games played (completed games of the season type).
winsInt64Games the team won among its completed games of the season type (pts > opp_pts).
trail_pctFloat64Share of the team's game clock spent behind (sum trail_sec / sum game_seconds).
tied_pctFloat64Share of the team's game clock spent tied.
lead_changes_pgFloat64Lead changes per game.
times_tied_pgFloat64Times tied per game.
largest_leadInt64The team's biggest lead of the season.
largest_comebackInt64The biggest deficit the team overcame in a win this season (0 if none).
max_runInt64The team's biggest n-0 run of the season.
runs_10Int64The team's runs of 10 or more unanswered points, summed over the season.
opp_runs_10Int64The opponents' runs of 10 or more unanswered points against the team, summed.
def_possInt64Defensive possessions, summed.
stopsInt64Stops (scoreless defensive possessions), summed.
killsInt64Kills (three straight stops), summed.
double_killsInt64Double kills (six straight stops), summed.
avg_marginFloat64Game control: the score margin averaged over the season's game clock.
avg_wpFloat64Game control: the in-game win probability averaged over the season's game clock.
lead_pctFloat64Share of the team's game clock spent ahead (sum lead_sec / sum game_seconds).
runs_10_pgFloat64The team's 10-0 (or better) runs per game.
opp_runs_10_pgFloat64The opponents' 10-0 (or better) runs against the team per game.
avg_longest_drought_secFloat64The team's longest scoring drought, in seconds, averaged over its games.
stop_pctFloat64stops / def_poss; null with no possessions.
kills_pgFloat64Kills per game.
double_kills_pgFloat64Double kills per game.
kills_per_100Float64Kills per 100 defensive possessions; null with no possessions.
avg_margin_rankFloat64Rank of avg_margin within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
avg_wp_rankFloat64Rank of avg_wp within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
lead_pct_rankFloat64Rank of lead_pct within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
runs_10_pg_rankFloat64Rank of runs_10_pg within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
opp_runs_10_pg_rankFloat64Rank of opp_runs_10_pg within the season (the lowest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
avg_longest_drought_sec_rankFloat64Rank of avg_longest_drought_sec within the season (the lowest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
stop_pct_rankFloat64Rank of stop_pct within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
kills_pg_rankFloat64Rank of kills_pg within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
double_kills_pg_rankFloat64Rank of double_kills_pg within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
kills_per_100_rankFloat64Rank of kills_per_100 within the season (the highest value ranks 1; ties average), among teams with at least half the season's most games; null for a non-qualifier, a null value, or fewer than five qualifiers.
avg_margin_pctFloat64Percentile of avg_margin among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
avg_wp_pctFloat64Percentile of avg_wp among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
lead_pct_pctFloat64Percentile of lead_pct among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
runs_10_pg_pctFloat64Percentile of runs_10_pg among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
opp_runs_10_pg_pctFloat64Percentile of opp_runs_10_pg among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
avg_longest_drought_sec_pctFloat64Percentile of avg_longest_drought_sec among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
stop_pct_pctFloat64Percentile of stop_pct among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
kills_pg_pctFloat64Percentile of kills_pg among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
double_kills_pg_pctFloat64Percentile of double_kills_pg among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
kills_per_100_pctFloat64Percentile of kills_per_100 among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null.
avg_margin_nInt64Sample size of avg_margin: games.
avg_wp_nInt64Sample size of avg_wp: the games with a win probability.
lead_pct_nInt64Sample size of lead_pct: games.
runs_10_pg_nInt64Sample size of runs_10_pg: games.
opp_runs_10_pg_nInt64Sample size of opp_runs_10_pg: games.
avg_longest_drought_sec_nInt64Sample size of avg_longest_drought_sec: games.
stop_pct_nInt64Sample size of stop_pct: the teams defensive possessions.
kills_pg_nInt64Sample size of kills_pg: the games with published possessions.
double_kills_pg_nInt64Sample size of double_kills_pg: the games with published possessions.
kills_per_100_nInt64Sample size of kills_per_100: the teams defensive possessions.

wnba_team_season_rates​

wnba_team_season_rates(seasons: 'int | list[int]', *, league_id: 'str' = '10', season_type: 'str' = 'regular-season', return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'

WNBA season team rates from possessions (league_id='10'). See sportsdataverse.nba.nba_team_season_rates.nba_team_season_rates.

Parameters

ParameterTypeDefaultDescription
seasonsint | list[int]
league_idstr'10'
season_typestr'regular-season'
return_as_pandasboolFalse

Returns

One row per (season, team_id, split). team_id is the stats.nba.com team id (Int64). games, poss / opp_poss (offensive / defensive possessions) and pts / opp_pts are the split's totals. The twelve rates are off_rtg, def_rtg, net_rtg (per 100 possessions), pace (possessions per 48 minutes, 40 in the WNBA), the four factors efg_pct, tov_pct, orb_pct, ft_rate and the same four against (opp_*), all fractions. Each rate has <m>_rank (1 = best; def_rtg, tov_pct, opp_efg_pct, opp_orb_pct and opp_ft_rate rank low first; pace ranks high first), <m>_pct (the Weibull percentile) and <m>_n (the sample: possessions for the ratings, the clock in regulation games for pace, field-goal attempts for eFG% and FT rate, possessions for turnover rate, rebound chances for ORB%). Ranks are within the season and split, among teams with at least half the most games whose <m>_n reaches the league's ~sportsdataverse._common.rate_gates.TEAM_MIN_N gate (a clutch split reaches none), and null under five teams. Empty input returns that schema with zero rows.

col_nametypedescription
seasonInt64WNBA season (its calendar year).
team_idInt64stats.nba.com team id (the 10-digit franchise id).
splitStringWhich possessions the row covers: all; home or away (the team's home or road games; neutral-site games are in neither: the curated nba_neutral_site_games list, plus every game dated inside the 2020 bubble (from the schedule's game_date)); close (every possession of a game that had a clutch possession); clutch (a possession in play with 5:00 or less left (starting there, or starting before 5:00 and ending after it) in the 4th quarter (the 2nd half through 2005, when the WNBA played two 20-minute halves) or an overtime, the score within 5 as it starts).
gamesInt64Games with at least one possession in the split.
possInt64Offensive possessions in the split, counted from possession rows.
opp_possInt64Defensive possessions in the split (the opponents' offensive possessions).
ptsInt64Points scored on the team's offensive possessions in the split. Counted from each possession's made shots and free throws.
opp_ptsInt64Points allowed on the team's defensive possessions in the split.
off_rtgFloat64Offensive rating: points scored per 100 offensive possessions.
def_rtgFloat64Defensive rating: points allowed per 100 defensive possessions.
net_rtgFloat64Net rating: off_rtg minus def_rtg.
paceFloat64Pace: possessions per 40 minutes, the mean of poss and opp_poss over the game clock those possessions used.
efg_pctFloat64Effective field-goal percentage, (FGM + 0.5 * 3PM) / FGA, as a fraction.
tov_pctFloat64Turnovers per offensive possession, as a fraction.
orb_pctFloat64Offensive rebound rate: offensive rebounds over offensive-rebound chances (own OREB plus the defense's DREB), as a fraction.
ft_rateFloat64Free-throw rate, FTA / FGA.
opp_efg_pctFloat64Opponents' effective field-goal percentage, (FGM + 0.5 * 3PM) / FGA, as a fraction.
opp_tov_pctFloat64Opponents' turnovers per possession (turnovers forced), as a fraction.
opp_orb_pctFloat64Opponents' offensive rebound rate, as a fraction (one minus the team's defensive rebound rate).
opp_ft_rateFloat64Opponents' free-throw rate, FTA / FGA.
off_rtg_rankFloat64Rank of off_rtg within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose off_rtg_n is at least 660 offensive possessions (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
def_rtg_rankFloat64Rank of def_rtg within the season and split (the lowest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose def_rtg_n is at least 810 defensive possessions (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
net_rtg_rankFloat64Rank of net_rtg within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose net_rtg_n is at least 840 possessions (offense plus defense) (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
pace_rankFloat64Rank of pace within the season and split (the highest value ranks 1; pace has no better direction; ties average), among teams that played at least half the most games any team played in the split, whose pace_n is at least 7 games (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers. An owner-accepted exception (2026-11-09), as on the unseen 2023-2025 seasons the 7-game gate is 0.33 signal, under a third, as measured by the gate's proxy (ESPN box possessions per game over whole regular seasons, not per split); this table's own pace scores 0.44 there. Pace stays ranked, as no data or source defect was found (rate_gates).
efg_pct_rankFloat64Rank of efg_pct within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose efg_pct_n is at least 750 field-goal attempts (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
tov_pct_rankFloat64Rank of tov_pct within the season and split (the lowest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose tov_pct_n is at least 1,100 offensive possessions (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
orb_pct_rankFloat64Rank of orb_pct within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose orb_pct_n is at least 220 offensive-rebound chances (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
ft_rate_rankFloat64Rank of ft_rate within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose ft_rate_n is at least 720 field-goal attempts (the sample at which the rate is half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
opp_efg_pct_rankFloat64Rank of opp_efg_pct within the season and split (the lowest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose opp_efg_pct_n is at least 1,300 opponent field-goal attempts (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
opp_tov_pct_rankFloat64Rank of opp_tov_pct within the season and split (the highest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose opp_tov_pct_n is at least 350 defensive possessions (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
opp_orb_pct_rankFloat64Rank of opp_orb_pct within the season and split (the lowest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose opp_orb_pct_n is at least 860 opponent offensive-rebound chances (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
opp_ft_rate_rankFloat64Rank of opp_ft_rate within the season and split (the lowest value ranks 1; ties average), among teams that played at least half the most games any team played in the split, whose opp_ft_rate_n is at least 880 opponent field-goal attempts (the sample at which the rate was, on the fit seasons, half signal, rate_gates); null for a non-qualifier, a sample under that gate, a null rate, or fewer than five qualifiers.
off_rtg_pctFloat64Percentile of off_rtg within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
def_rtg_pctFloat64Percentile of def_rtg within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
net_rtg_pctFloat64Percentile of net_rtg within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
pace_pctFloat64Percentile of pace within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
efg_pct_pctFloat64Percentile of efg_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
tov_pct_pctFloat64Percentile of tov_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
orb_pct_pctFloat64Percentile of orb_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
ft_rate_pctFloat64Percentile of ft_rate within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
opp_efg_pct_pctFloat64Percentile of opp_efg_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
opp_tov_pct_pctFloat64Percentile of opp_tov_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
opp_orb_pct_pctFloat64Percentile of opp_orb_pct within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
opp_ft_rate_pctFloat64Percentile of opp_ft_rate within the season and split among the same qualified teams: 100 * (n + 1 - rank) / (n + 1), n the number ranked, so the best team is under 100 and nobody is 0; null when the rank is null.
off_rtg_nInt64Sample size of off_rtg: the team's offensive possessions in the split.
def_rtg_nInt64Sample size of def_rtg: the team's defensive possessions in the split.
net_rtg_nInt64Sample size of net_rtg: the team's offensive plus defensive possessions in the split.
pace_nInt64Sample size of pace: the game clock the split's possessions used, in regulation games (48 minutes, 40 in the WNBA and college), rounded: a full game counts 1, a clutch split's five-minute windows about 0.1 each.
efg_pct_nInt64Sample size of efg_pct: the team's field-goal attempts in the split.
tov_pct_nInt64Sample size of tov_pct: the team's offensive possessions in the split.
orb_pct_nInt64Sample size of orb_pct: the team's offensive-rebound chances in the split.
ft_rate_nInt64Sample size of ft_rate: the team's field-goal attempts in the split.
opp_efg_pct_nInt64Sample size of opp_efg_pct: the opponents' field-goal attempts in the split.
opp_tov_pct_nInt64Sample size of opp_tov_pct: the team's defensive possessions in the split.
opp_orb_pct_nInt64Sample size of opp_orb_pct: the opponents' offensive-rebound chances in the split.
opp_ft_rate_nInt64Sample size of opp_ft_rate: the opponents' field-goal attempts in the split.