Skip to main content

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

ParameterTypeDefaultDescription
seasonsint | list[int]A season or list of seasons, named by the year it ends (2026 is 2025-26).
top_nint25How many of the season's best teams by the published adj_em are vs_top.
return_as_pandasboolFalseReturn 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_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64ESPN team id of the team (Int64).
familyStringThe 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.
splitStringThe 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.
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.

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

ParameterTypeDefaultDescription
seasonslist[int]Seasons to compute (e.g. [2024]).
as_of_datedate | NoneNoneOnly use games strictly before this date; None uses every completed game.
ineligibleIterable[str] | NoneNoneTeam ids barred from the NCAA tournament (sets eligible); None (default) reads the bundled list for each season.
return_as_pandasboolFalseReturn a pandas DataFrame instead of polars.

Returns

One row per Division I (season, team_id) -- see the mbb core for the full contract.

col_nametypedescription
seasonInt64Season, named by its end year (2024 is 2023-24).
as_of_dateDateThe as-of date: only games strictly before it count as played. Null when every completed game is used.
team_idStringESPN team id (Utf8).
teamStringTeam (ESPN location name).
conference_idStringESPN conference id, read off the schedule (Utf8).
conferenceStringConference short name. Null for independents, which get no auto-bid.
eligibleBooleanFalse 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.
winsInt64Wins in played games, against every opponent (non-Division I included).
lossesInt64Losses in played games, against every opponent.
conf_winsInt64Regular-season conference wins (conference tournaments and multi-team events excluded).
conf_lossesInt64Regular-season conference losses.
gamesInt64Games behind the ratings (every played game with a usable box score).
adj_oFloat64Opponent-adjusted offensive efficiency: points per 100 possessions (mbb_team_ratings).
adj_dFloat64Opponent-adjusted defensive efficiency: points allowed per 100 possessions.
adj_emFloat64Adjusted efficiency margin, adj_o - adj_d.
adj_em_zFloat64adj_em z-scored over Division I within the season.
sosFloat64Strength of schedule: mean opponent adj_em over Division I games.
wabFloat64Wins above bubble: Division I wins minus a bubble-quality team's expected wins against the same schedule and venues.
quad1_wInt64Quad 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_lInt64Quad 1 losses to Division I opponents, by the same opponent rank and venue ranges.
quad2_wInt64Quad 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_lInt64Quad 2 losses to Division I opponents, by the same opponent rank and venue ranges.
quad3_wInt64Quad 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_lInt64Quad 3 losses to Division I opponents, by the same opponent rank and venue ranges.
quad4_wInt64Quad 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_lInt64Quad 4 losses to Division I opponents, by the same opponent rank and venue ranges.
quality_winsInt64Quad 1 plus Quad 2 wins.
rpi_gamesInt64Division I games behind the RPI.
rpi_wpFloat64RPI 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_owpFloat64Opponents' winning percentage: each opponent's unweighted Division I record without its games against this team, averaged over this team's games.
rpi_oowpFloat64Opponents' opponents' winning percentage: the opponents' rpi_owp averaged over this team's games.
rpiFloat64NCAA Rating Percentage Index: 0.25 * rpi_wp + 0.50 * rpi_owp + 0.25 * rpi_oowp.
net_estimateFloat64NET-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_rankFloat64Rank of adj_em within the season among Division I teams: 1 is best, average ties.
adj_em_pctFloat64Percentile of adj_em within the season: 100 * (n + 1 - rank) / (n + 1).
adj_em_nInt64Sample size of adj_em: the games behind the ratings.
sos_rankFloat64Rank of sos (1 = hardest schedule) within the season among Division I teams: 1 is best, average ties.
sos_pctFloat64Percentile of sos within the season: 100 * (n + 1 - rank) / (n + 1).
sos_nInt64Sample size of sos: the team's Division I games.
wab_rankFloat64Rank of wab within the season among Division I teams: 1 is best, average ties.
wab_pctFloat64Percentile of wab within the season: 100 * (n + 1 - rank) / (n + 1).
wab_nInt64Sample size of wab: the team's Division I games.
rpi_rankFloat64Rank of rpi within the season among Division I teams: 1 is best, average ties.
rpi_pctFloat64Percentile of rpi within the season: 100 * (n + 1 - rank) / (n + 1).
rpi_nInt64Sample size of rpi: the team's Division I games.
net_estimate_rankFloat64Rank of net_estimate (the NET-estimate ranking the quads use) within the season among Division I teams: 1 is best, average ties.
net_estimate_pctFloat64Percentile of net_estimate within the season: 100 * (n + 1 - rank) / (n + 1).
net_estimate_nInt64Sample 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

ParameterTypeDefaultDescription
seasonsint | list[int]A season or list of seasons, named by the year it ends (2025 is 2024-25).
return_as_pandasboolFalseReturn 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_nametypedescription
seasonInt64Season, named by the year it ends (2025 is 2024-25).
team_idInt64ESPN team id. Non-D1 opponents get rows of their own (a game or two) and no ranks.
gamesInt64Games in the season's completed ESPN games, postseason included.
winsInt64Wins in the season's completed ESPN games, postseason included.
lossesInt64Losses in the season's completed ESPN games, postseason included.
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['wbb'], 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 (ncaa_wbb_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 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_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.

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

ParameterTypeDefaultDescription
seasonsint | list[int]A season or list of seasons, named by the year it ends (2026 is 2025-26).
return_as_pandasboolFalseReturn 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_nametypedescription
seasonInt64Season, named by the year it ends (the WNBA season is its calendar year).
team_idInt64ESPN team id; a non-D1 opponent has none and gets no row.
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.

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

ParameterTypeDefaultDescription
seasonsint | list[int]A season or list of seasons, named by the year it ends (2025 is 2024-25).
return_as_pandasboolFalseReturn 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_nametypedescription
seasonInt64Season, named by the year it ends (2025 is 2024-25).
team_idInt64ESPN team id. Non-D1 opponents have none and get no row.
splitStringWhich 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).
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.
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. Game-level, from the NCAA team box; null in the clutch split.
tov_pctFloat64Turnovers per offensive possession, as a fraction. Game-level, from the NCAA team box; null in the clutch split.
orb_pctFloat64Offensive 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_rateFloat64Free-throw rate, FTA / FGA. Game-level, from the NCAA team box; null in the clutch split.
opp_efg_pctFloat64Opponents' 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_pctFloat64Opponents' turnovers per possession (turnovers forced), as a fraction. Game-level, from the NCAA team box; null in the clutch split.
opp_orb_pctFloat64Opponents' 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_rateFloat64Opponents' free-throw rate, FTA / FGA. Game-level, from the NCAA team box; null in the clutch split.
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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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, 0 when the rate is null.
tov_pct_nInt64Sample size of tov_pct: the NCAA team box's possessions (o_poss) in the split, 0 when the rate is null.
orb_pct_nInt64Sample size of orb_pct: the team's offensive-rebound chances in the split, 0 when the rate is null.
ft_rate_nInt64Sample size of ft_rate: the team's field-goal attempts in the split, 0 when the rate is null.
opp_efg_pct_nInt64Sample size of opp_efg_pct: the opponents' field-goal attempts in the split, 0 when the rate is null.
opp_tov_pct_nInt64Sample size of opp_tov_pct: the opponents' NCAA team-box possessions in the split, 0 when the rate is null.
opp_orb_pct_nInt64Sample size of opp_orb_pct: the opponents' offensive-rebound chances in the split, 0 when the rate is null.
opp_ft_rate_nInt64Sample 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

ParameterTypeDefaultDescription
seasonsint | list[int]A season or list of seasons, named by the year it ends (2025 is 2024-25).
return_as_pandasboolFalseReturn 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_nametypedescription
seasonInt64Season, named by the year it ends (2025 is 2024-25).
team_idInt64The team's ESPN team id (Int64).
gamesInt64The team's games with a field-goal attempt by or against it.
fgaInt64Field-goal attempts by the team (games).
fgmInt64Field goals made by the team.
unlocated_fgaInt64Attempts by the team with no real location (the WNBA's 1997-2010 hoop-centre placeholders; 0 elsewhere): counted in fga, in no zone.
rim_fgaInt64Attempts by the team at the rim (within 4 ft, the shot chart's rim zone).
rim_fgmInt64Makes by the team at the rim (within 4 ft, the shot chart's rim zone).
rim_astInt64Assisted makes by the team at the rim (within 4 ft, the shot chart's rim zone).
mid_fgaInt64Attempts by the team in the mid zone (every other two: the chart's paint and mid-range).
mid_fgmInt64Makes by the team in the mid zone (every other two: the chart's paint and mid-range).
mid_astInt64Assisted makes by the team in the mid zone (every other two: the chart's paint and mid-range).
corner_3_fgaInt64Attempts by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band).
corner_3_fgmInt64Makes by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band).
corner_3_astInt64Assisted makes by the team from the corner (a three with |x| >= 21 ft and |y| <= 9 ft, the baseline band).
above_break_3_fgaInt64Attempts by the team from above the break (every other three).
above_break_3_fgmInt64Makes by the team from above the break (every other three).
above_break_3_astInt64Assisted makes by the team from above the break (every other three).
opp_fgaInt64Allowed: Field-goal attempts by the team's opponents (games).
opp_fgmInt64Allowed: Field goals made by the team's opponents.
opp_unlocated_fgaInt64Allowed: 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_fgaInt64Allowed: Attempts by the team's opponents at the rim (within 4 ft, the shot chart's rim zone).
opp_rim_fgmInt64Allowed: Makes by the team's opponents at the rim (within 4 ft, the shot chart's rim zone).
opp_rim_astInt64Allowed: Assisted makes by the team's opponents at the rim (within 4 ft, the shot chart's rim zone).
opp_mid_fgaInt64Allowed: Attempts by the team's opponents in the mid zone (every other two: the chart's paint and mid-range).
opp_mid_fgmInt64Allowed: Makes by the team's opponents in the mid zone (every other two: the chart's paint and mid-range).
opp_mid_astInt64Allowed: Assisted makes by the team's opponents in the mid zone (every other two: the chart's paint and mid-range).
opp_corner_3_fgaInt64Allowed: 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_fgmInt64Allowed: 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_astInt64Allowed: 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_fgaInt64Allowed: Attempts by the team's opponents from above the break (every other three).
opp_above_break_3_fgmInt64Allowed: Makes by the team's opponents from above the break (every other three).
opp_above_break_3_astInt64Allowed: Assisted makes by the team's opponents from above the break (every other three).
rim_fg_pctFloat64rim_fgm / rim_fga; null with no attempt.
rim_freqFloat64rim_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none.
rim_ast_pctFloat64Share 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_pctFloat64mid_fgm / mid_fga; null with no attempt.
mid_freqFloat64mid_fga / (fga - unlocated_fga): the zone's share of the located attempts (the four zones add up to 1); null with none.
mid_ast_pctFloat64Share 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_pctFloat64corner_3_fgm / corner_3_fga; null with no attempt.
corner_3_freqFloat64corner_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_pctFloat64Share 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_pctFloat64above_break_3_fgm / above_break_3_fga; null with no attempt.
above_break_3_freqFloat64above_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_pctFloat64Share 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_pctFloat64Allowed: opp_rim_fgm / opp_rim_fga; null with no attempt.
opp_rim_freqFloat64Allowed: 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_pctFloat64Allowed: 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_pctFloat64Allowed: opp_mid_fgm / opp_mid_fga; null with no attempt.
opp_mid_freqFloat64Allowed: 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_pctFloat64Allowed: 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_pctFloat64Allowed: opp_corner_3_fgm / opp_corner_3_fga; null with no attempt.
opp_corner_3_freqFloat64Allowed: 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_pctFloat64Allowed: 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_pctFloat64Allowed: opp_above_break_3_fgm / opp_above_break_3_fga; null with no attempt.
opp_above_break_3_freqFloat64Allowed: 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_pctFloat64Allowed: 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_nInt64Sample size of rim_fg_pct: rim_fga.
rim_freq_nInt64Sample size of rim_freq: located attempts (fga - unlocated_fga).
rim_ast_pct_nInt64Sample size of rim_ast_pct: makes linked to a play-by-play row in the zone.
mid_fg_pct_nInt64Sample size of mid_fg_pct: mid_fga.
mid_freq_nInt64Sample size of mid_freq: located attempts (fga - unlocated_fga).
mid_ast_pct_nInt64Sample size of mid_ast_pct: makes linked to a play-by-play row in the zone.
corner_3_fg_pct_nInt64Sample size of corner_3_fg_pct: corner_3_fga.
corner_3_freq_nInt64Sample size of corner_3_freq: located attempts (fga - unlocated_fga).
corner_3_ast_pct_nInt64Sample size of corner_3_ast_pct: makes linked to a play-by-play row in the zone.
above_break_3_fg_pct_nInt64Sample size of above_break_3_fg_pct: above_break_3_fga.
above_break_3_freq_nInt64Sample size of above_break_3_freq: located attempts (fga - unlocated_fga).
above_break_3_ast_pct_nInt64Sample size of above_break_3_ast_pct: makes linked to a play-by-play row in the zone.
opp_rim_fg_pct_nInt64Sample size of opp_rim_fg_pct: opp_rim_fga.
opp_rim_freq_nInt64Sample size of opp_rim_freq: located attempts (opp_fga - opp_unlocated_fga).
opp_rim_ast_pct_nInt64Sample size of opp_rim_ast_pct: makes linked to a play-by-play row in the zone.
opp_mid_fg_pct_nInt64Sample size of opp_mid_fg_pct: opp_mid_fga.
opp_mid_freq_nInt64Sample size of opp_mid_freq: located attempts (opp_fga - opp_unlocated_fga).
opp_mid_ast_pct_nInt64Sample size of opp_mid_ast_pct: makes linked to a play-by-play row in the zone.
opp_corner_3_fg_pct_nInt64Sample size of opp_corner_3_fg_pct: opp_corner_3_fga.
opp_corner_3_freq_nInt64Sample size of opp_corner_3_freq: located attempts (opp_fga - opp_unlocated_fga).
opp_corner_3_ast_pct_nInt64Sample size of opp_corner_3_ast_pct: makes linked to a play-by-play row in the zone.
opp_above_break_3_fg_pct_nInt64Sample size of opp_above_break_3_fg_pct: opp_above_break_3_fga.
opp_above_break_3_freq_nInt64Sample size of opp_above_break_3_freq: located attempts (opp_fga - opp_unlocated_fga).
opp_above_break_3_ast_pct_nInt64Sample size of opp_above_break_3_ast_pct: makes linked to a play-by-play row in the zone.
rim_fg_pct_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_rankFloat64Rank 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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_pctFloat64Percentile 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()