Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

KenPom can add a useful team-strength lens to March Madness analysis, and Python’s pandas library can help organize ratings and tournament results—but neither one guarantees a correct bracket. The key is to compare data from the same season and pre-tournament date, understand what each metric measures, and verify the team matches before summarizing results.

How do I use KenPom to fill out a March Madness bracket?

Use KenPom as one input about team strength, not as a stand-in for a team’s tournament résumé or as a bracket-picking formula. The NCAA describes KenPom as “a predictive rating meant to show how strong a team would be if it played tonight.” It is intended to estimate team strength at a point in time, rather than directly measure what a team has accomplished over the season. See the NCAA selection explainer.

For a historical bracket analysis, use the ratings snapshot available before that tournament began. An end-of-season rating includes games played after the bracket was set, so using it to assess an earlier decision would introduce information that was not available at the time. Record the season and the rating’s data-through date alongside your results; ratings change as games are played. KenPom’s API documentation describes ratings endpoints and a DataThrough field.

When comparing teams, look at the components and context rather than treating a single rank as a complete explanation: adjusted offensive efficiency, adjusted defensive efficiency, adjusted efficiency margin (AdjEM), tempo, and opponent strength. Those measures describe different aspects of a team. They can inform a comparison, but they do not establish who will win a particular tournament game.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What does KenPom adjusted efficiency margin mean?

Efficiency is expressed in points per possession. KenPom’s adjusted offensive and defensive efficiencies account for opponent quality; the published methodology explains that game efficiency is compared with the opponent’s defensive efficiency and the national average, then adjusted game values are averaged with more weight given to recent games. Ken Pomeroy’s ratings explanation dates to November 29, 2006, and his 2016 methodology update dates to October 4, 2016. These sources explain the concepts, but are not a current-season data dictionary or an independent reconstruction of KenPom’s proprietary ratings.

AdjEM is adjusted offensive efficiency minus adjusted defensive efficiency. Ken Pomeroy wrote, “AdjEM is the difference between a team’s offensive and defensive efficiency.” In his 2016 explanation, AdjEM represents the expected points by which a team would outscore an average Division I team over 100 possessions. It is a team-strength measure, not the same thing as a tournament résumé score.

Tempo is related to possessions, but possessions are estimated rather than recorded as an official NCAA statistic. Ken Pomeroy’s glossary notes this distinction. If you calculate possession-based values from box scores, state the estimator you use and apply it consistently; do not label those derived estimates official NCAA data.

Is KenPom the same as the NCAA NET ranking?

No. They address different questions. KenPom is predictive: it estimates how strong a team would be at a given time. The NCAA describes NET as a team evaluation and sorting metric that incorporates efficiency and game results. The NCAA also describes Wins Above Bubble (WAB) as comparing a team’s actual wins with what a bubble-level team would be expected to achieve against the same schedule. The NCAA discusses these in its NET and selection explainer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A high predictive rating alone does not establish a strong tournament résumé, and a résumé measure is not itself a forecast of a game’s outcome. If you place metrics side by side, label whether each is predictive, résumé-oriented, or a descriptive summary of tournament results. Compare teams on consistent measures and at a consistent date rather than collapsing unlike metrics into one universal ranking.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How do I analyze March Madness data with Python pandas?

pandas is an open-source Python data-analysis library with facilities for reading tabular files, joining datasets, and summarizing groups. Its documentation includes beginner guides and a user guide for input/output, merging, and grouping. The documentation retrieved September 27, 2026, identifies pandas version 3.0.6, published September 17, 2026; report the version you actually use if you publish code.

  1. Choose comparable inputs. Obtain tournament results and a KenPom ratings snapshot for one season, with a clearly identified cutoff date. KenPom’s API documentation describes ratings and other endpoints and notes bearer-token authentication. Keep credentials private; do not imply API access is free. The separate KenPom access page describes web and API access, while current terms can change.
  2. Load and standardize the files. Read the tabular sources into pandas DataFrames using its documented input/output tools. Normalize team names and season labels before joining, but preserve original source values and identifiers so that changes can be audited.
  3. Validate the join keys. Prefer stable team and season identifiers when the sources provide them. If team names are the only common key, explicitly map known aliases. Check that each table has the expected uniqueness at the intended team-season level before merging.
  4. Inspect the merge. Compare row counts before and after the join, and check duplicate rows, null keys, unmatched teams, and missing values. pandas warns that duplicate keys on both sides can produce a Cartesian product, multiplying rows and distorting later summaries. Its merging guide also explains that null merge keys can match one another, so a null-to-null match should not be accepted as a valid team match without review.
  5. Summarize declared groups. Once the joined rows are validated, use groupby with built-in aggregations to summarize outcomes by seed, round, rating band, or another category you define. pandas describes this pattern as splitting data into groups, applying operations, and combining the results in its groupby guide.
  6. Keep conclusions descriptive unless you evaluate a forecast. A historical summary can describe what happened in the data; a predictive claim requires a specified method and evaluation using only information that would have been available before the games. For bracket-era comparisons, use pre-tournament ratings rather than ratings updated with later games.

What should I check before trusting a summary?

  • Season and cutoff: Confirm that results and ratings refer to the same season and that the rating snapshot date matches the question being asked.
  • Metric purpose: Keep predictive ratings separate from résumé or evaluation measures, and label descriptive tournament outcomes as outcomes rather than predictions.
  • Team identity: Review name aliases, duplicate keys, unmatched records, and null values before accepting merged rows.
  • Possession method: Document any possession estimator used for independently calculated tempo or efficiency.
  • Claim strength: Do not turn a grouped historical pattern into a claim that KenPom beats another system or that the pattern predicts a future tournament without separate, dated evidence and an appropriate evaluation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.