Women's college basketball — additional Python functions — Analytics: wbb_situational–wbb_team
wbb_situational_team
wbb_situational_team(seasons: 'int | list[int]', *, top_n: 'int' = 25, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's college team splits by situation: clutch, period, half, garbage time, score, venue, opponent, play type.
Delegates to sportsdataverse.mbb.mbb_situational.mbb_situational_team with league="womens".
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | int | list[int] | A season or list of seasons, named by the year it ends (2026 is 2025-26). | |
top_n | int | 25 | How many of the season's best teams by the published adj_em are vs_top. |
return_as_pandas | bool | False | Return a pandas frame instead of polars. |
Returns
One row per (season, team_id, family, split) with the columns of sportsdataverse.nba.nba_situational.nba_situational_team.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by the year it ends (the WNBA season is its calendar year). |
team_id | Int64 | ESPN team id of the team (Int64). |
family | String | The split family: all, clutch, period, half, garbage, score, venue, opponent or play_type (college has no second-chance flag, so no chance family); within a family the splits add up to the all row. |
split | String | The split: all; clutch / not_clutch; p1..p4 / ot (p1, p2 for halves); h1 / h2 / ot; garbage_time / not_garbage_time; leading / tied / trailing; home / away / neutral; vs_top / vs_rest; transition / half_court. |
games | Int64 | Games with at least one possession in the split (does not add up across a family). |
minutes | Float64 | Game-clock minutes of the split's possessions (seconds / 60). |
seconds | Float64 | Game-clock seconds of the split's possessions: each possession's start clock minus its end clock. |
poss | Int64 | Offensive possessions in the split. |
opp_poss | Int64 | Defensive possessions in the split. |
pts | Int64 | Points scored on the offensive possessions. |
opp_pts | Int64 | Points allowed on the defensive possessions. |
plus_minus | Int64 | Plus-minus over the split: pts - opp_pts. |
off_rtg | Float64 | Offensive rating: pts per 100 poss; null with no offensive possessions. |
def_rtg | Float64 | Defensive rating: opp_pts per 100 opp_poss; null with no defensive possessions. |
net_rtg | Float64 | Net rating: off_rtg - def_rtg; null when either is null. |
off_rtg_n | Int64 | Sample size of off_rtg: poss. |
def_rtg_n | Int64 | Sample size of def_rtg: opp_poss. |
net_rtg_n | Int64 | Sample size of net_rtg: poss + opp_poss. |
Example
from sportsdataverse.wbb import wbb_situational_team
wbb_situational_team(2026).filter(split="clutch").sort("net_rtg", descending=True).head()
wbb_strength_of_schedule
wbb_strength_of_schedule(seasons: 'list[int]', *, as_of_date: 'datetime.date | None' = None, ineligible: 'Iterable[str] | None' = None, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's daily strength_of_schedule table: records, SoS, quad résumé, WAB, RPI and a NET estimate.
Delegates to sportsdataverse.mbb.mbb_strength_of_schedule.mbb_strength_of_schedule with league="womens" (WBB loaders, women's constants and quad ranges; RPI location weights from 2011-12).
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | list[int] | Seasons to compute (e.g. [2024]). | |
as_of_date | date | None | None | Only use games strictly before this date; None uses every completed game. |
ineligible | Iterable[str] | None | None | Team ids barred from the NCAA tournament (sets eligible); None (default) reads the bundled list for each season. |
return_as_pandas | bool | False | Return a pandas DataFrame instead of polars. |
Returns
One row per Division I (season, team_id) -- see the mbb core for the full contract.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by its end year (2024 is 2023-24). |
as_of_date | Date | The as-of date: only games strictly before it count as played. Null when every completed game is used. |
team_id | String | ESPN team id (Utf8). |
team | String | Team (ESPN location name). |
conference_id | String | ESPN conference id, read off the schedule (Utf8). |
conference | String | Conference short name. Null for independents, which get no auto-bid. |
eligible | Boolean | False for a team the caller listed as barred from the NCAA tournament (reclassifying to Division I, a postseason ban). It counts in every rating and résumé but gets no bid. |
wins | Int64 | Wins in played games, against every opponent (non-Division I included). |
losses | Int64 | Losses in played games, against every opponent. |
conf_wins | Int64 | Regular-season conference wins (conference tournaments and multi-team events excluded). |
conf_losses | Int64 | Regular-season conference losses. |
games | Int64 | Games behind the ratings (every played game with a usable box score). |
adj_o | Float64 | Opponent-adjusted offensive efficiency: points per 100 possessions (mbb_team_ratings). |
adj_d | Float64 | Opponent-adjusted defensive efficiency: points allowed per 100 possessions. |
adj_em | Float64 | Adjusted efficiency margin, adj_o - adj_d. |
adj_em_z | Float64 | adj_em z-scored over Division I within the season. |
sos | Float64 | Strength of schedule: mean opponent adj_em over Division I games. |
wab | Float64 | Wins above bubble: Division I wins minus a bubble-quality team's expected wins against the same schedule and venues. |
quad1_w | Int64 | Quad 1 wins over Division I opponents, by the opponent's NET-estimate rank and the venue (NCAA ranges, men's and women's differ). |
quad1_l | Int64 | Quad 1 losses to Division I opponents, by the same opponent rank and venue ranges. |
quad2_w | Int64 | Quad 2 wins over Division I opponents, by the opponent's NET-estimate rank and the venue (NCAA ranges, men's and women's differ). |
quad2_l | Int64 | Quad 2 losses to Division I opponents, by the same opponent rank and venue ranges. |
quad3_w | Int64 | Quad 3 wins over Division I opponents, by the opponent's NET-estimate rank and the venue (NCAA ranges, men's and women's differ). |
quad3_l | Int64 | Quad 3 losses to Division I opponents, by the same opponent rank and venue ranges. |
quad4_w | Int64 | Quad 4 wins over Division I opponents, by the opponent's NET-estimate rank and the venue (NCAA ranges, men's and women's differ). |
quad4_l | Int64 | Quad 4 losses to Division I opponents, by the same opponent rank and venue ranges. |
quality_wins | Int64 | Quad 1 plus Quad 2 wins. |
rpi_games | Int64 | Division I games behind the RPI. |
rpi_wp | Float64 | RPI winning percentage over Division I games, location weighted: a home win 0.6, a road win 1.4, a home loss 1.4, a road loss 0.6, neutral 1.0 (men's from 2004-05, women's from 2011-12). |
rpi_owp | Float64 | Opponents' winning percentage: each opponent's unweighted Division I record without its games against this team, averaged over this team's games. |
rpi_oowp | Float64 | Opponents' opponents' winning percentage: the opponents' rpi_owp averaged over this team's games. |
rpi | Float64 | NCAA Rating Percentage Index: 0.25 * rpi_wp + 0.50 * rpi_owp + 0.25 * rpi_oowp. |
net_estimate | Float64 | NET-style score: 0.8 * z(adj_em) + 0.2 * z(wab) within the season (the NET's efficiency and results halves; weights fitted to the men's 2024 NET). Higher is better. |
adj_em_rank | Float64 | Rank of adj_em within the season among Division I teams: 1 is best, average ties. |
adj_em_pct | Float64 | Percentile of adj_em within the season: 100 * (n + 1 - rank) / (n + 1). |
adj_em_n | Int64 | Sample size of adj_em: the games behind the ratings. |
sos_rank | Float64 | Rank of sos (1 = hardest schedule) within the season among Division I teams: 1 is best, average ties. |
sos_pct | Float64 | Percentile of sos within the season: 100 * (n + 1 - rank) / (n + 1). |
sos_n | Int64 | Sample size of sos: the team's Division I games. |
wab_rank | Float64 | Rank of wab within the season among Division I teams: 1 is best, average ties. |
wab_pct | Float64 | Percentile of wab within the season: 100 * (n + 1 - rank) / (n + 1). |
wab_n | Int64 | Sample size of wab: the team's Division I games. |
rpi_rank | Float64 | Rank of rpi within the season among Division I teams: 1 is best, average ties. |
rpi_pct | Float64 | Percentile of rpi within the season: 100 * (n + 1 - rank) / (n + 1). |
rpi_n | Int64 | Sample size of rpi: the team's Division I games. |
net_estimate_rank | Float64 | Rank of net_estimate (the NET-estimate ranking the quads use) within the season among Division I teams: 1 is best, average ties. |
net_estimate_pct | Float64 | Percentile of net_estimate within the season: 100 * (n + 1 - rank) / (n + 1). |
net_estimate_n | Int64 | Sample size of net_estimate: the team's Division I games. |
Example
from sportsdataverse.wbb import wbb_strength_of_schedule
wbb_strength_of_schedule([2024]).sort("rpi_rank").head(20)
wbb_team_luck
wbb_team_luck(seasons: 'int | list[int]', *, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's college luck and close-game record: Pythagorean expected wins vs actual, close-game W-L.
Delegates to sportsdataverse.mbb.mbb_team_luck.mbb_team_luck with
league="womens".
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | int | list[int] | A season or list of seasons, named by the year it ends (2025 is 2024-25). | |
return_as_pandas | bool | False | Return a pandas frame instead of polars. |
Returns
One row per (season, team_id): games, wins, losses, pts, opp_pts, win_pct, pythag_win_pct, exp_wins, luck_wins, pbp_games, the close-game record and the _rank / _pct / _n columns. See the mbb core for the definitions.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by the year it ends (2025 is 2024-25). |
team_id | Int64 | ESPN team id. Non-D1 opponents get rows of their own (a game or two) and no ranks. |
games | Int64 | Games in the season's completed ESPN games, postseason included. |
wins | Int64 | Wins in the season's completed ESPN games, postseason included. |
losses | Int64 | Losses in the season's completed ESPN games, postseason included. |
pts | Int64 | Points scored in those games (final scores). |
opp_pts | Int64 | Points allowed in those games (final scores). |
win_pct | Float64 | Win fraction: wins divided by games, from the final scores. |
pythag_win_pct | Float64 | Pythagorean win fraction: pts^x / (pts^x + opp_pts^x), x = PYTHAG_EXPONENT['wbb'], fitted on past seasons by tools/fit_team_luck_pythag.py. |
exp_wins | Float64 | Expected wins: pythag_win_pct * games. |
luck_wins | Float64 | Luck in wins: wins minus exp_wins. Positive means the team won more games than its scoring says it should have. |
pbp_games | Int64 | Games with published possessions (ncaa_wbb_possessions); close_games is counted among these. A game whose late possessions are missing from the release counts as not close. |
close_games | Int64 | Close 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 before 2015-16) 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_wins | Int64 | Wins in close games. |
close_losses | Int64 | Losses in close games. |
close_win_pct | Float64 | close_wins / close_games; null with no close game. |
pythag_win_pct_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_n | Int64 | Sample size of pythag_win_pct: games. |
luck_wins_n | Int64 | Sample size of luck_wins: games. |
close_win_pct_n | Int64 | Sample size of close_win_pct: close games. |
Example
from sportsdataverse.wbb import wbb_team_luck
wbb_team_luck(2025).sort("luck_wins", descending=True).head()
wbb_team_season_flow
wbb_team_season_flow(seasons: 'int | list[int]', *, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's college game flow per team and season, with ranks, percentiles and _n.
Delegates to sportsdataverse.mbb.mbb_game_flow.mbb_team_season_flow with league="womens".
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | int | list[int] | A season or list of seasons, named by the year it ends (2026 is 2025-26). | |
return_as_pandas | bool | False | Return a pandas frame instead of polars. |
Returns
One row per (season, team_id) with the columns of sportsdataverse.nba.nba_game_flow.nba_team_season_flow.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by the year it ends (the WNBA season is its calendar year). |
team_id | Int64 | ESPN team id; a non-D1 opponent has none and gets no row. |
games | Int64 | Games played (completed games of the season type). |
wins | Int64 | Games the team won among its completed games of the season type (pts > opp_pts). |
trail_pct | Float64 | Share of the team's game clock spent behind (sum trail_sec / sum game_seconds). |
tied_pct | Float64 | Share of the team's game clock spent tied. |
lead_changes_pg | Float64 | Lead changes per game. |
times_tied_pg | Float64 | Times tied per game. |
largest_lead | Int64 | The team's biggest lead of the season. |
largest_comeback | Int64 | The biggest deficit the team overcame in a win this season (0 if none). |
max_run | Int64 | The team's biggest n-0 run of the season. |
runs_10 | Int64 | The team's runs of 10 or more unanswered points, summed over the season. |
opp_runs_10 | Int64 | The opponents' runs of 10 or more unanswered points against the team, summed. |
def_poss | Int64 | Defensive possessions, summed. |
stops | Int64 | Stops (scoreless defensive possessions), summed. |
kills | Int64 | Kills (three straight stops), summed. |
double_kills | Int64 | Double kills (six straight stops), summed. |
avg_margin | Float64 | Game control: the score margin averaged over the season's game clock. |
avg_wp | Float64 | Game control: the in-game win probability averaged over the season's game clock. |
lead_pct | Float64 | Share of the team's game clock spent ahead (sum lead_sec / sum game_seconds). |
runs_10_pg | Float64 | The team's 10-0 (or better) runs per game. |
opp_runs_10_pg | Float64 | The opponents' 10-0 (or better) runs against the team per game. |
avg_longest_drought_sec | Float64 | The team's longest scoring drought, in seconds, averaged over its games. |
stop_pct | Float64 | stops / def_poss; null with no possessions. |
kills_pg | Float64 | Kills per game. |
double_kills_pg | Float64 | Double kills per game. |
kills_per_100 | Float64 | Kills per 100 defensive possessions; null with no possessions. |
avg_margin_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_rank | Float64 | Rank 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_n | Int64 | Sample size of avg_margin: games. |
avg_wp_n | Int64 | Sample size of avg_wp: the games with a win probability. |
lead_pct_n | Int64 | Sample size of lead_pct: games. |
runs_10_pg_n | Int64 | Sample size of runs_10_pg: games. |
opp_runs_10_pg_n | Int64 | Sample size of opp_runs_10_pg: games. |
avg_longest_drought_sec_n | Int64 | Sample size of avg_longest_drought_sec: games. |
stop_pct_n | Int64 | Sample size of stop_pct: the teams defensive possessions. |
kills_pg_n | Int64 | Sample size of kills_pg: the games with published possessions. |
double_kills_pg_n | Int64 | Sample size of double_kills_pg: the games with published possessions. |
kills_per_100_n | Int64 | Sample size of kills_per_100: the teams defensive possessions. |
Example
from sportsdataverse.wbb import wbb_team_season_flow
wbb_team_season_flow(2026).sort("kills_pg_rank").head()
wbb_team_season_rates
wbb_team_season_rates(seasons: 'int | list[int]', *, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's college season team rates from possessions, with home/away/close/clutch splits.
Delegates to sportsdataverse.mbb.mbb_team_season_rates.mbb_team_season_rates with
league="womens". Clutch is a possession in play in the last 5:00 of the 4th quarter (the
2nd half before 2016) or an overtime, the score within 5 as it starts. That is one starting
with 5:00 or less left, or the one live at the mark: a possession from 5:10 to 4:50 counts in
full, one that ends exactly at 5:00 does not.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | int | list[int] | A season or list of seasons, named by the year it ends (2025 is 2024-25). | |
return_as_pandas | bool | False | Return a pandas frame instead of polars. |
Returns
One row per (season, team_id, split): games, poss, opp_poss, pts, opp_pts, the twelve rates (off_rtg, def_rtg, net_rtg, pace, the four factors and the four against) and their _rank / _pct / _n. See the mbb core for the definitions.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by the year it ends (2025 is 2024-25). |
team_id | Int64 | ESPN team id. Non-D1 opponents have none and get no row. |
split | String | Which possessions the row covers: all; home or away (the team's home or road games; neutral-site games are in neither); 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 before 2016) or an overtime, the score within 5 as it starts). |
games | Int64 | Games with at least one possession in the split. |
poss | Int64 | Offensive possessions in the split, counted from possession rows. |
opp_poss | Int64 | Defensive possessions in the split (the opponents' offensive possessions). |
pts | Int64 | Points scored on the team's offensive possessions in the split. |
opp_pts | Int64 | Points allowed on the team's defensive possessions in the split. |
off_rtg | Float64 | Offensive rating: points scored per 100 offensive possessions. |
def_rtg | Float64 | Defensive rating: points allowed per 100 defensive possessions. |
net_rtg | Float64 | Net rating: off_rtg minus def_rtg. |
pace | Float64 | Pace: possessions per 40 minutes, the mean of poss and opp_poss over the game clock those possessions used. |
efg_pct | Float64 | Effective field-goal percentage, (FGM + 0.5 * 3PM) / FGA, as a fraction. Game-level, from the NCAA team box; null in the clutch split. |
tov_pct | Float64 | Turnovers per offensive possession, as a fraction. Game-level, from the NCAA team box; null in the clutch split. |
orb_pct | Float64 | Offensive rebound rate: offensive rebounds over offensive-rebound chances (own OREB plus the defense's DREB), as a fraction. Game-level, from the NCAA team box; null in the clutch split. |
ft_rate | Float64 | Free-throw rate, FTA / FGA. Game-level, from the NCAA team box; null in the clutch split. |
opp_efg_pct | Float64 | Opponents' effective field-goal percentage, (FGM + 0.5 * 3PM) / FGA, as a fraction. Game-level, from the NCAA team box; null in the clutch split. |
opp_tov_pct | Float64 | Opponents' turnovers per possession (turnovers forced), as a fraction. Game-level, from the NCAA team box; null in the clutch split. |
opp_orb_pct | Float64 | Opponents' offensive rebound rate, as a fraction (one minus the team's defensive rebound rate). Game-level, from the NCAA team box; null in the clutch split. |
opp_ft_rate | Float64 | Opponents' free-throw rate, FTA / FGA. Game-level, from the NCAA team box; null in the clutch split. |
off_rtg_rank | Float64 | Rank 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 130 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_rank | Float64 | Rank 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 470 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_rank | Float64 | Rank 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 360 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_rank | Float64 | Rank 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 3 games (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. |
efg_pct_rank | Float64 | Rank 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 230 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_rank | Float64 | Rank 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 210 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_rank | Float64 | Rank 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 160 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_rank | Float64 | Rank 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 550 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_rank | Float64 | Rank 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 600 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_rank | Float64 | Rank 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 300 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_rank | Float64 | Rank 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 240 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_rank | Float64 | Rank 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 420 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_pct | Float64 | Percentile 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_n | Int64 | Sample size of off_rtg: the team's offensive possessions in the split. |
def_rtg_n | Int64 | Sample size of def_rtg: the team's defensive possessions in the split. |
net_rtg_n | Int64 | Sample size of net_rtg: the team's offensive plus defensive possessions in the split. |
pace_n | Int64 | Sample 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_n | Int64 | Sample size of efg_pct: the team's field-goal attempts in the split, 0 when the rate is null. |
tov_pct_n | Int64 | Sample size of tov_pct: the NCAA team box's possessions (o_poss) in the split, 0 when the rate is null. |
orb_pct_n | Int64 | Sample size of orb_pct: the team's offensive-rebound chances in the split, 0 when the rate is null. |
ft_rate_n | Int64 | Sample size of ft_rate: the team's field-goal attempts in the split, 0 when the rate is null. |
opp_efg_pct_n | Int64 | Sample size of opp_efg_pct: the opponents' field-goal attempts in the split, 0 when the rate is null. |
opp_tov_pct_n | Int64 | Sample size of opp_tov_pct: the opponents' NCAA team-box possessions in the split, 0 when the rate is null. |
opp_orb_pct_n | Int64 | Sample size of opp_orb_pct: the opponents' offensive-rebound chances in the split, 0 when the rate is null. |
opp_ft_rate_n | Int64 | Sample size of opp_ft_rate: the opponents' field-goal attempts in the split, 0 when the rate is null. |
Example
from sportsdataverse.wbb import wbb_team_season_rates
wbb_team_season_rates(2025).filter(split="all").sort("net_rtg_rank").head()
wbb_team_shot_zones
wbb_team_shot_zones(seasons: 'int | list[int]', *, return_as_pandas: 'bool' = False) -> 'pl.DataFrame | pd.DataFrame'
Women's college season shot profile by zone per team, for and allowed.
Delegates to sportsdataverse.mbb.mbb_shot_zone_profiles.mbb_team_shot_zones with
league="womens".
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seasons | int | list[int] | A season or list of seasons, named by the year it ends (2025 is 2024-25). | |
return_as_pandas | bool | False | Return a pandas frame instead of polars. |
Returns
One row per (season, team_id): games, the team's zone profile and its opponents' (opp_), with the _n / _rank / _pct columns. See the mbb core for the definitions.
| col_name | type | description |
|---|---|---|
season | Int64 | Season, named by the year it ends (2025 is 2024-25). |
team_id | Int64 | The team's ESPN team id (Int64). |
games | Int64 | The team's games with a field-goal attempt by or against it. |
fga | Int64 | Field-goal attempts by the team (games). |
fgm | Int64 | Field goals made by the team. |
unlocated_fga | Int64 | Attempts by the team with no real location (the WNBA's 1997-2010 hoop-centre placeholders; 0 elsewhere): counted in fga, in no zone. |
rim_fga | Int64 | Attempts by the team at the rim (within 4 ft, the shot chart's rim zone). |
rim_fgm | Int64 | Makes by the team at the rim (within 4 ft, the shot chart's rim zone). |
rim_ast | Int64 | Assisted makes by the team at the rim (within 4 ft, the shot chart's rim zone). |
mid_fga | Int64 | Attempts by the team in the mid zone (every other two: the chart's paint and mid-range). |
mid_fgm | Int64 | Makes by the team in the mid zone (every other two: the chart's paint and mid-range). |
mid_ast | Int64 | Assisted makes by the team in the mid zone (every other two: the chart's paint and mid-range). |
corner_3_fga | Int64 | Attempts by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
corner_3_fgm | Int64 | Makes by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
corner_3_ast | Int64 | Assisted makes by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
above_break_3_fga | Int64 | Attempts by the team from above the break (every other three). |
above_break_3_fgm | Int64 | Makes by the team from above the break (every other three). |
above_break_3_ast | Int64 | Assisted makes by the team from above the break (every other three). |
opp_fga | Int64 | Allowed: Field-goal attempts by the team's opponents (games). |
opp_fgm | Int64 | Allowed: Field goals made by the team's opponents. |
opp_unlocated_fga | Int64 | Allowed: Attempts by the team's opponents with no real location (the WNBA's 1997-2010 hoop-centre placeholders; 0 elsewhere): counted in opp_fga, in no zone. |
opp_rim_fga | Int64 | Allowed: Attempts by the team's opponents at the rim (within 4 ft, the shot chart's rim zone). |
opp_rim_fgm | Int64 | Allowed: Makes by the team's opponents at the rim (within 4 ft, the shot chart's rim zone). |
opp_rim_ast | Int64 | Allowed: Assisted makes by the team's opponents at the rim (within 4 ft, the shot chart's rim zone). |
opp_mid_fga | Int64 | Allowed: Attempts by the team's opponents in the mid zone (every other two: the chart's paint and mid-range). |
opp_mid_fgm | Int64 | Allowed: Makes by the team's opponents in the mid zone (every other two: the chart's paint and mid-range). |
opp_mid_ast | Int64 | Allowed: Assisted makes by the team's opponents in the mid zone (every other two: the chart's paint and mid-range). |
opp_corner_3_fga | Int64 | Allowed: Attempts by the team's opponents from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
opp_corner_3_fgm | Int64 | Allowed: Makes by the team's opponents from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
opp_corner_3_ast | Int64 | Allowed: Assisted makes by the team's opponents from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band). |
opp_above_break_3_fga | Int64 | Allowed: Attempts by the team's opponents from above the break (every other three). |
opp_above_break_3_fgm | Int64 | Allowed: Makes by the team's opponents from above the break (every other three). |
opp_above_break_3_ast | Int64 | Allowed: Assisted makes by the team's opponents from above the break (every other three). |
rim_fg_pct | Float64 | rim_fgm / rim_fga; null with no attempt. |
rim_freq | Float64 | rim_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
rim_ast_pct | Float64 | Share of rim_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
mid_fg_pct | Float64 | mid_fgm / mid_fga; null with no attempt. |
mid_freq | Float64 | mid_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
mid_ast_pct | Float64 | Share of mid_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
corner_3_fg_pct | Float64 | corner_3_fgm / corner_3_fga; null with no attempt. |
corner_3_freq | Float64 | corner_3_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
corner_3_ast_pct | Float64 | Share of corner_3_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
above_break_3_fg_pct | Float64 | above_break_3_fgm / above_break_3_fga; null with no attempt. |
above_break_3_freq | Float64 | above_break_3_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
above_break_3_ast_pct | Float64 | Share of above_break_3_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
opp_rim_fg_pct | Float64 | Allowed: opp_rim_fgm / opp_rim_fga; null with no attempt. |
opp_rim_freq | Float64 | Allowed: opp_rim_fga / (opp_fga - opp_unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
opp_rim_ast_pct | Float64 | Allowed: Share of opp_rim_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
opp_mid_fg_pct | Float64 | Allowed: opp_mid_fgm / opp_mid_fga; null with no attempt. |
opp_mid_freq | Float64 | Allowed: opp_mid_fga / (opp_fga - opp_unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
opp_mid_ast_pct | Float64 | Allowed: Share of opp_mid_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
opp_corner_3_fg_pct | Float64 | Allowed: opp_corner_3_fgm / opp_corner_3_fga; null with no attempt. |
opp_corner_3_freq | Float64 | Allowed: opp_corner_3_fga / (opp_fga - opp_unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
opp_corner_3_ast_pct | Float64 | Allowed: Share of opp_corner_3_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
opp_above_break_3_fg_pct | Float64 | Allowed: opp_above_break_3_fgm / opp_above_break_3_fga; null with no attempt. |
opp_above_break_3_freq | Float64 | Allowed: opp_above_break_3_fga / (opp_fga - opp_unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none. |
opp_above_break_3_ast_pct | Float64 | Allowed: Share of opp_above_break_3_fgm that were assisted, over the makes linked to a play-by-play row (whose assist is known); null with none. |
rim_fg_pct_n | Int64 | Sample size of rim_fg_pct: rim_fga. |
rim_freq_n | Int64 | Sample size of rim_freq: located attempts (fga - unlocated_fga). |
rim_ast_pct_n | Int64 | Sample size of rim_ast_pct: makes linked to a play-by-play row in the zone. |
mid_fg_pct_n | Int64 | Sample size of mid_fg_pct: mid_fga. |
mid_freq_n | Int64 | Sample size of mid_freq: located attempts (fga - unlocated_fga). |
mid_ast_pct_n | Int64 | Sample size of mid_ast_pct: makes linked to a play-by-play row in the zone. |
corner_3_fg_pct_n | Int64 | Sample size of corner_3_fg_pct: corner_3_fga. |
corner_3_freq_n | Int64 | Sample size of corner_3_freq: located attempts (fga - unlocated_fga). |
corner_3_ast_pct_n | Int64 | Sample size of corner_3_ast_pct: makes linked to a play-by-play row in the zone. |
above_break_3_fg_pct_n | Int64 | Sample size of above_break_3_fg_pct: above_break_3_fga. |
above_break_3_freq_n | Int64 | Sample size of above_break_3_freq: located attempts (fga - unlocated_fga). |
above_break_3_ast_pct_n | Int64 | Sample size of above_break_3_ast_pct: makes linked to a play-by-play row in the zone. |
opp_rim_fg_pct_n | Int64 | Sample size of opp_rim_fg_pct: opp_rim_fga. |
opp_rim_freq_n | Int64 | Sample size of opp_rim_freq: located attempts (opp_fga - opp_unlocated_fga). |
opp_rim_ast_pct_n | Int64 | Sample size of opp_rim_ast_pct: makes linked to a play-by-play row in the zone. |
opp_mid_fg_pct_n | Int64 | Sample size of opp_mid_fg_pct: opp_mid_fga. |
opp_mid_freq_n | Int64 | Sample size of opp_mid_freq: located attempts (opp_fga - opp_unlocated_fga). |
opp_mid_ast_pct_n | Int64 | Sample size of opp_mid_ast_pct: makes linked to a play-by-play row in the zone. |
opp_corner_3_fg_pct_n | Int64 | Sample size of opp_corner_3_fg_pct: opp_corner_3_fga. |
opp_corner_3_freq_n | Int64 | Sample size of opp_corner_3_freq: located attempts (opp_fga - opp_unlocated_fga). |
opp_corner_3_ast_pct_n | Int64 | Sample size of opp_corner_3_ast_pct: makes linked to a play-by-play row in the zone. |
opp_above_break_3_fg_pct_n | Int64 | Sample size of opp_above_break_3_fg_pct: opp_above_break_3_fga. |
opp_above_break_3_freq_n | Int64 | Sample size of opp_above_break_3_freq: located attempts (opp_fga - opp_unlocated_fga). |
opp_above_break_3_ast_pct_n | Int64 | Sample size of opp_above_break_3_ast_pct: makes linked to a play-by-play row in the zone. |
rim_fg_pct_rank | Float64 | Rank of rim_fg_pct within the season (the highest ranks 1; ties average), among teams whose rim_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
rim_freq_rank | Float64 | Rank of rim_freq within the season (the highest ranks 1; ties average), among teams whose rim_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
rim_ast_pct_rank | Float64 | Rank of rim_ast_pct within the season (the highest ranks 1; ties average), among teams whose rim_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
mid_fg_pct_rank | Float64 | Rank of mid_fg_pct within the season (the highest ranks 1; ties average), among teams whose mid_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
mid_freq_rank | Float64 | Rank of mid_freq within the season (the highest ranks 1; ties average), among teams whose mid_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
mid_ast_pct_rank | Float64 | Rank of mid_ast_pct within the season (the highest ranks 1; ties average), among teams whose mid_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
corner_3_fg_pct_rank | Float64 | Rank of corner_3_fg_pct within the season (the highest ranks 1; ties average), among teams whose corner_3_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
corner_3_freq_rank | Float64 | Rank of corner_3_freq within the season (the highest ranks 1; ties average), among teams whose corner_3_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
corner_3_ast_pct_rank | Float64 | Rank of corner_3_ast_pct within the season (the highest ranks 1; ties average), among teams whose corner_3_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
above_break_3_fg_pct_rank | Float64 | Rank of above_break_3_fg_pct within the season (the highest ranks 1; ties average), among teams whose above_break_3_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
above_break_3_freq_rank | Float64 | Rank of above_break_3_freq within the season (the highest ranks 1; ties average), among teams whose above_break_3_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
above_break_3_ast_pct_rank | Float64 | Rank of above_break_3_ast_pct within the season (the highest ranks 1; ties average), among teams whose above_break_3_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_rim_fg_pct_rank | Float64 | Rank of opp_rim_fg_pct within the season (the lowest ranks 1, the stingiest defense; ties average), among teams whose opp_rim_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_rim_freq_rank | Float64 | Rank of opp_rim_freq within the season (the highest ranks 1; ties average), among teams whose opp_rim_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_rim_ast_pct_rank | Float64 | Rank of opp_rim_ast_pct within the season (the highest ranks 1; ties average), among teams whose opp_rim_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_mid_fg_pct_rank | Float64 | Rank of opp_mid_fg_pct within the season (the lowest ranks 1, the stingiest defense; ties average), among teams whose opp_mid_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_mid_freq_rank | Float64 | Rank of opp_mid_freq within the season (the highest ranks 1; ties average), among teams whose opp_mid_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_mid_ast_pct_rank | Float64 | Rank of opp_mid_ast_pct within the season (the highest ranks 1; ties average), among teams whose opp_mid_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_corner_3_fg_pct_rank | Float64 | Rank of opp_corner_3_fg_pct within the season (the lowest ranks 1, the stingiest defense; ties average), among teams whose opp_corner_3_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_corner_3_freq_rank | Float64 | Rank of opp_corner_3_freq within the season (the highest ranks 1; ties average), among teams whose opp_corner_3_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_corner_3_ast_pct_rank | Float64 | Rank of opp_corner_3_ast_pct within the season (the highest ranks 1; ties average), among teams whose opp_corner_3_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_above_break_3_fg_pct_rank | Float64 | Rank of opp_above_break_3_fg_pct within the season (the lowest ranks 1, the stingiest defense; ties average), among teams whose opp_above_break_3_fg_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_above_break_3_freq_rank | Float64 | Rank of opp_above_break_3_freq within the season (the highest ranks 1; ties average), among teams whose opp_above_break_3_freq_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
opp_above_break_3_ast_pct_rank | Float64 | Rank of opp_above_break_3_ast_pct within the season (the highest ranks 1; ties average), among teams whose opp_above_break_3_ast_pct_n reaches the rate's split-half gate (TEAM_MIN_N); null under the gate, for a rate with no gate (never half signal), or with fewer than five teams ranked. |
rim_fg_pct_pct | Float64 | Percentile of rim_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
rim_freq_pct | Float64 | Percentile of rim_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
rim_ast_pct_pct | Float64 | Percentile of rim_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
mid_fg_pct_pct | Float64 | Percentile of mid_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
mid_freq_pct | Float64 | Percentile of mid_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
mid_ast_pct_pct | Float64 | Percentile of mid_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
corner_3_fg_pct_pct | Float64 | Percentile of corner_3_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
corner_3_freq_pct | Float64 | Percentile of corner_3_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
corner_3_ast_pct_pct | Float64 | Percentile of corner_3_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
above_break_3_fg_pct_pct | Float64 | Percentile of above_break_3_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
above_break_3_freq_pct | Float64 | Percentile of above_break_3_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
above_break_3_ast_pct_pct | Float64 | Percentile of above_break_3_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_rim_fg_pct_pct | Float64 | Percentile of opp_rim_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_rim_freq_pct | Float64 | Percentile of opp_rim_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_rim_ast_pct_pct | Float64 | Percentile of opp_rim_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_mid_fg_pct_pct | Float64 | Percentile of opp_mid_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_mid_freq_pct | Float64 | Percentile of opp_mid_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_mid_ast_pct_pct | Float64 | Percentile of opp_mid_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_corner_3_fg_pct_pct | Float64 | Percentile of opp_corner_3_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_corner_3_freq_pct | Float64 | Percentile of opp_corner_3_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_corner_3_ast_pct_pct | Float64 | Percentile of opp_corner_3_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_above_break_3_fg_pct_pct | Float64 | Percentile of opp_above_break_3_fg_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_above_break_3_freq_pct | Float64 | Percentile of opp_above_break_3_freq within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
opp_above_break_3_ast_pct_pct | Float64 | Percentile of opp_above_break_3_ast_pct within the season among the same ranked rows: 100 * (n + 1 - rank) / (n + 1), n the number ranked; null when the rank is null. |
Example
from sportsdataverse.wbb import wbb_team_shot_zones
wbb_team_shot_zones(2025).sort("opp_rim_freq").head()