Skip to main content

NFL — additional Python functions — Dataset loaders: nfl_pfr–player_stats

load_nfl_pfr_weekly_pass​

load_nfl_pfr_weekly_pass(seasons: 'List[int]', return_as_pandas: 'bool' = False) -> 'pl.DataFrame'

Deprecated alias for load_nfl_pfr_advstats(stat_type='pass', summary_level='week').

Will be removed in a future release. Migrate callers to the unified load_nfl_pfr_advstats function.

Parameters

ParameterTypeDefaultDescription
seasonsList[int]
return_as_pandasboolFalse

Returns

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
pfr_game_idcharacterPFR game ID
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
game_typecharacterThe most recent game type of that season that a player appeared on the roster.
teamcharacterNFL team. Uses official abbreviations as per NFL.com
opponentcharacterOpposing team of player
pfr_player_namecharacterPlayer's name as recorded by PFR
pfr_player_idcharacterID from Pro Football Reference
passing_dropsdoubleNumber of catchable passes thrown by the quarterback that were dropped by receivers.
passing_drop_pctdoublePercentage of catchable targets that were dropped by receivers on passes thrown by the quarterback.
receiving_dropdoubleNumber of catchable targets the player (as receiver) dropped in this weekly game.
receiving_drop_pctdoublePercentage of catchable targets the player dropped in this weekly game.
passing_bad_throwsdoubleNumber of pass attempts charted as poor or inaccurate throws by the quarterback in this weekly log.
passing_bad_throw_pctdoublePercentage of pass attempts that were charted as poor throws (inaccurate, off-target, or otherwise below expectation), per Pro Football Reference.
times_sackeddoubleNumber of times the quarterback was sacked in this weekly game log.
times_blitzeddoubleNumber of times blitzed
times_hurrieddoubleNumber of times hurried
times_hitdoubleNumber of times hit
times_pressureddoubleNumber of times pressured
times_pressured_pctdoublePercentage of pass plays on which the quarterback faced defensive pressure in this weekly game.
def_times_blitzeddoubleNumber of pass plays on which the defense sent a blitz, as experienced by the quarterback in this weekly log.
def_times_hurrieddoubleNumber of times the quarterback was hurried (pressured into an early throw) without being sacked or hit.
def_times_hitqbdoubleNumber of times the quarterback was hit by a defender on a pass play in this weekly game log.

Example

from sportsdataverse.nfl import load_nfl_pfr_advstats
df = load_nfl_pfr_advstats(
seasons=[2024], stat_type="pass", summary_level="week"
)

load_nfl_pfr_weekly_rec​

load_nfl_pfr_weekly_rec(seasons: 'List[int]', return_as_pandas: 'bool' = False) -> 'pl.DataFrame'

Deprecated alias for load_nfl_pfr_advstats(stat_type='rec', summary_level='week').

Will be removed in a future release. Migrate callers to the unified load_nfl_pfr_advstats function.

Parameters

ParameterTypeDefaultDescription
seasonsList[int]
return_as_pandasboolFalse

Returns

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
pfr_game_idcharacterPFR game ID
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
game_typecharacterThe most recent game type of that season that a player appeared on the roster.
teamcharacterNFL team. Uses official abbreviations as per NFL.com
opponentcharacterOpposing team of player
pfr_player_namecharacterPlayer's name as recorded by PFR
pfr_player_idcharacterID from Pro Football Reference
rushing_broken_tacklesdoubleNumber of broken tackles recorded by the player on rushing plays during the week.
receiving_broken_tacklesdoubleNumber of broken tackles recorded by the receiver after the catch.
passing_dropsdoubleNumber of passes dropped by intended receivers on targeted throws.
passing_drop_pctdoublePercentage of pass targets that resulted in a drop, as tracked by Pro Football Reference.
receiving_dropdoubleNumber of catchable passes dropped by the receiver during the week.
receiving_drop_pctdoublePercentage of catchable targets that were dropped by the receiver during the week.
receiving_intdoubleNumber of passes intended for the receiver that were intercepted.
receiving_ratdoublePasser rating when targeting this receiver, reflecting QB efficiency on those throws.

Example

from sportsdataverse.nfl import load_nfl_pfr_advstats
df = load_nfl_pfr_advstats(
seasons=[2024], stat_type="rec", summary_level="week"
)

load_nfl_pfr_weekly_rush​

load_nfl_pfr_weekly_rush(seasons: 'List[int]', return_as_pandas: 'bool' = False) -> 'pl.DataFrame'

Deprecated alias for load_nfl_pfr_advstats(stat_type='rush', summary_level='week').

Will be removed in a future release. Migrate callers to the unified load_nfl_pfr_advstats function.

Parameters

ParameterTypeDefaultDescription
seasonsList[int]
return_as_pandasboolFalse

Returns

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
pfr_game_idcharacterPFR game ID
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
game_typecharacterThe most recent game type of that season that a player appeared on the roster.
teamcharacterNFL team. Uses official abbreviations as per NFL.com
opponentcharacterOpposing team of player
pfr_player_namecharacterPlayer's name as recorded by PFR
pfr_player_idcharacterID from Pro Football Reference
carriesdoubleThe number of official rush attempts (incl. scrambles and kneel downs). Rushes after a lateral reception don't count as carry.
rushing_yards_before_contactdoubleTotal rushing yards gained by the player before making contact with a defender in this weekly game log.
rushing_yards_before_contact_avgdoubleAverage rushing yards gained before first contact per rushing attempt in this weekly game log.
rushing_yards_after_contactdoubleTotal rushing yards gained by the player after initial contact with a defender in this weekly game log.
rushing_yards_after_contact_avgdoubleAverage rushing yards gained after initial contact per rushing attempt in this weekly game log.
rushing_broken_tacklesdoubleNumber of broken tackles the player recorded on rushing plays in this weekly game log.
receiving_broken_tacklesdoubleNumber of broken tackles the player recorded after a reception in this weekly game log.

Example

from sportsdataverse.nfl import load_nfl_pfr_advstats
df = load_nfl_pfr_advstats(
seasons=[2024], stat_type="rush", summary_level="week"
)

load_nfl_player_stats​

load_nfl_player_stats(seasons: 'List[int] | None' = None, kicking=False, return_as_pandas=False, *, source: 'str' = 'nflverse') -> 'pl.DataFrame'

Load NFL player stats data

Week-level player stats. For the default source="nflverse" this reads the live stats_player release (stats_player_week_{season}.parquet, one asset per season, 1999-2026) -- not the combined player_stats.parquet, which nflverse froze in 2025-05 and which therefore ends at season 2024.

The weekly release is a 150-column superset of the old combined file. To keep every downstream consumer working, the output is reconciled to ONE stable schema -- the legacy column set, in the legacy order, at the legacy dtypes:

  • Renamed back: team -> recent_team, passing_interceptions -> interceptions, sacks_suffered -> sacks.
  • Sign-flipped: sack_yards_lost (negative upstream) is negated into sack_yards (positive yards lost), matching the legacy frame.
  • Kept null: dakota is no longer published upstream; the column remains, all-null, so the column set does not move.
  • Dropped: the ~100 added columns (def_*, pt_*, punt/kickoff returns, yardage buckets, game_id, passing_cpoe, ...) are not emitted. kicking=True returns the legacy kicking contract, which the weekly release still carries in full (44/44 columns).
  • Rows: a row is kept when at least one contracted stat is non-zero, so the weekly release's defensive / offensive-line rows -- which have no column to land in under this contract -- do not arrive as all-null noise.

Parameters

ParameterTypeDefaultDescription
seasonslistNoneSeasons to load. 1999 is the earliest available season. None (the default) loads every season from 1999 through the current one, matching the old whole-file behavior.
kickingboolFalseIf True, load kicking stats. If False, load all other stats.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.
sourcestr'nflverse'Which player-stats release to read. "nflverse" (the default, also accepts None) returns the nflverse published stats_player weekly release, reconciled to the legacy schema described above. "sportsdataverse" / "sdv" returns the SDV-native nfl_player_stats release built by sportsdataverse.nfl.build_nfl_player_stats from SDV-native play-by-play (1999-present, week-level, REG+POST) with its own columns, season-filtered but otherwise untouched. Any other value raises ValueError.

Returns

Polars dataframe containing player stats.

col_nametypedescription
player_idcharacterPlayer ID (aka GSIS ID) as defined by nflreadr::load_rosters
player_namecharacterFull name of player
player_display_namecharacterFull name of the player
positioncharacterPrimary position as reported by NFL.com
position_groupcharacterPostion group of player as listed by NFL
headshot_urlcharacterA URL string that points to player photos used by NFL.com (or sometimes ESPN)
recent_teamcharacterMost recent team player appears in pbp with.
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
season_typecharacterREG or POST indicating if the timeframe belongs to regular or post season.
opponent_teamcharacterAbbreviation or name of the opposing team faced by the player in a given game or week.
completionsintegerThe number of completed passes.
attemptsintegerThe number of pass attempts as defined by the NFL.
passing_yardsdoubleNumeric yards by the passer_player_name, including yards gained in pass plays with laterals. This should equal official passing statistics.
passing_tdsintegerThe number of passing touchdowns.
interceptionsdoubleThe number of interceptions thrown.
sacksdoubleThe Number of times sacked.
sack_yardsdoubleYards lost on sack plays.
sack_fumblesintegerThe number of sacks with a fumble.
sack_fumbles_lostintegerThe number of sacks with a lost fumble.
passing_air_yardsdoublePassing air yards (includes incomplete passes).
passing_yards_after_catchdoubleYards after the catch gained on plays in which player was the passer (this is an unofficial stat and may differ slightly between different sources).
passing_first_downsdoubleFirst downs on pass attempts.
passing_epadoubleTotal expected points added on pass attempts and sacks. NOTE: this uses the variable qb_epa, which gives QB credit for EPA for up to the point where a receiver lost a fumble after a completed catch and makes EPA work more like passing yards on plays with fumbles.
passing_2pt_conversionsintegerTwo-point conversion passes.
pacrdoublePassing (yards) Air (yards) Conversion Ratio - the number of passing yards per air yards thrown per game
dakotadoubleAdjusted EPA + CPOE composite based on coefficients which best predict adjusted EPA/play in the following year.
carriesintegerThe number of official rush attempts (incl. scrambles and kneel downs). Rushes after a lateral reception don't count as carry.
rushing_yardsdoubleNumeric yards by the rusher_player_name, excluding yards gained in rush plays with laterals. This should equal official rushing statistics but could miss yards gained in rush plays with laterals. Please see the description of lateral_rusher_player_name for further information.
rushing_tdsintegerThe number of rushing touchdowns (incl. scrambles). Also includes touchdowns after obtaining a lateral on a play that started with a rushing attempt.
rushing_fumblesdoubleThe number of rushes with a fumble.
rushing_fumbles_lostdoubleThe number of rushes with a lost fumble.
rushing_first_downsdoubleFirst downs on rush attempts (incl. scrambles).
rushing_epadoubleExpected points added on rush attempts (incl. scrambles and kneel downs).
rushing_2pt_conversionsintegerTwo-point conversion rushes
receptionsintegerThe number of pass receptions. Lateral receptions officially don't count as reception.
targetsintegerThe number of pass plays where the player was the targeted receiver.
receiving_yardsdoubleNumeric yards by the receiver_player_name, excluding yards gained in pass plays with laterals. This should equal official receiving statistics but could miss yards gained in pass plays with laterals. Please see the description of lateral_receiver_player_name for further information.
receiving_tdsintegerThe number of touchdowns following a pass reception. Also includes touchdowns after receiving a lateral on a play that started as a pass play.
receiving_fumblesdoubleThe number of fumbles after a pass reception.
receiving_fumbles_lostdoubleThe number of fumbles lost after a pass reception.
receiving_air_yardsdoubleReceiving air yards (incl. incomplete passes).
receiving_yards_after_catchdoubleYards after the catch gained on plays in which player was receiver (this is an unofficial stat and may differ slightly between different sources).
receiving_first_downsdoubleTotal number of first downs gained on receptions
receiving_epadoubleTotal EPA on plays where this receiver was targeted
receiving_2pt_conversionsintegerTwo-point conversion receptions
racrdoubleReceiving (yards) Air (yards) Conversion Ratio - the number of receiving yards per air yards targeted per game
target_sharedouble"Player's share of team receiving targets in this game"
air_yards_sharedoublePlayer's share of the team's air yards in this game
woprdoubleWeighted OPportunity Rating - 1.5 x target_share + 0.7 x air_yards_share - a weighted average that contextualizes total fantasy usage.
special_teams_tdsdoubleTotal number of kick/punt return touchdowns
fantasy_pointsdoubleStandard fantasy points.
fantasy_points_pprdoublePPR fantasy points.

Example

from sportsdataverse.nfl import load_nfl_player_stats
stats = load_nfl_player_stats()
stats.shape

# SDV-native player stats (week-level, built from SDV play-by-play)

stats_sdv = load_nfl_player_stats(source="sdv")
stats_sdv.select(["season", "week", "player_id", "attempts"]).head()

# Kicking-only stats (nflverse source only)

kicking = load_nfl_player_stats(seasons=[2025], kicking=True)

# A single season (2025 and 2026 live only in the weekly release)

stats_2025 = load_nfl_player_stats(seasons=[2025])

load_nfl_players​

load_nfl_players(return_as_pandas=False, *, source: 'str' = 'nflverse') -> 'pl.DataFrame'

Load the nflverse NFL player-identity master.

Reads nflverse's published players.parquet — a one-row-per-player identity master that is the union of seven upstream systems (GSIS, ESPN, NGS roster, Pro-Football-Reference, OverTheCap, PFF, and the Sleeper / Yahoo cross-walk). It is the canonical source for cross-system identifier columns (gsis_id, espn_id, pfr_id, pff_id, otc_id, smart_id, esb_id, nfl_id) plus name, position, physical, draft, and status fields.

This is the full identity master. For an SDV-native, public-source-only alternative that does not depend on the nflverse release, see sportsdataverse.nfl.build_nfl_players (ESPN-athletes tier only) and sportsdataverse.nfl.nfl_players_crosswalk (a thin ID-only slice of this same parquet).

Parameters

ParameterTypeDefaultDescription
return_as_pandasboolFalseIf True, return a pandas.DataFrame; otherwise a polars.DataFrame (default).
sourcestr'nflverse'Which player-master release to read. "nflverse" (the default, also accepts None) returns the nflverse seven-system players.parquet identity master described above. "sportsdataverse" / "sdv" returns the SDV-native nfl_players release built by sportsdataverse.nfl.build_nfl_players from the public NFL Shield / ESPN-athletes surface, with gsis_id and the other cross-system IDs enriched by a best-effort join against the nflverse player master. The SDV tier is a partial build: its columns are a subset of nflverse's and cross-system IDs are sparser (notably pre-2016), though espn_id is populated. The default stays "nflverse". Any other value raises ValueError.

Returns

One-row-per-player identity master. return_as_pandas narrows the return to a pandas.DataFrame.

col_nametypedescription
gsis_idcharacterNFL Game Statistics & Information System player identifier, the canonical nflverse player key.
display_namecharacterPlayer's full display name as published by nflverse.
common_first_namecharacterPlayer's commonly used first name (the name they go by, which may differ from their legal first name).
first_namecharacterPlayer's legal first name.
last_namecharacterPlayer's last name.
short_namecharacterAbbreviated name (typically first initial plus last name).
football_namecharacterPlayer's preferred on-field name as used in broadcast and box-score contexts.
suffixcharacterGenerational or honorific name suffix (e.g., Jr., Sr., III), when present.
esb_idcharacterElias Sports Bureau player identifier.
nfl_idcharacterNFL.com / Shield player identifier.
pfr_idcharacterPro-Football-Reference player identifier.
pff_idcharacterPro Football Focus player identifier.
otc_idcharacterOverTheCap player identifier (salary-cap data source).
espn_idcharacterESPN athlete identifier.
smart_idcharacterNFL SMART (Standard Media and Reference Table) globally unique player identifier.
birth_datecharacterPlayer's date of birth (ISO YYYY-MM-DD).
position_groupcharacterBroad positional grouping the player belongs to (e.g., QB, RB, WR, DL).
positioncharacterPlayer's specific listed position abbreviation.
ngs_position_groupcharacterPositional grouping as classified by NFL Next Gen Stats.
ngs_positioncharacterSpecific position as classified by NFL Next Gen Stats.
heightintegerPlayer's height in inches.
weightintegerPlayer's listed weight in pounds.
headshotcharacterURL to the player's official headshot image.
college_namecharacterName of the college the player attended.
college_conferencecharacterAthletic conference of the player's college.
jersey_numbercharacterPlayer's uniform / jersey number.
rookie_seasonintegerSeason (year) the player entered the league as a rookie.
last_seasonintegerMost recent season (year) the player appeared on an NFL roster.
latest_teamcharacterAbbreviation of the most recent team the player was rostered on.
statuscharacterPlayer's current roster status (e.g., active, retired, free agent).
ngs_statuscharacterPlayer status as reported by NFL Next Gen Stats.
ngs_status_short_descriptioncharacterShort human-readable description of the NFL Next Gen Stats status.
years_of_experienceintegerNumber of accrued NFL seasons of experience.
pff_positioncharacterPlayer's position as classified by Pro Football Focus.
pff_statuscharacterPlayer's status as classified by Pro Football Focus.
draft_yearintegerYear the player was selected in the NFL Draft (null if undrafted).
draft_roundintegerRound in which the player was drafted (null if undrafted).
draft_pickintegerOverall pick number at which the player was drafted (null if undrafted).
draft_teamcharacterAbbreviation of the team that drafted the player (null if undrafted).

Example

from sportsdataverse.nfl import load_nfl_players
players = load_nfl_players()
print(players.shape)

# Pandas round-trip

players_pd = load_nfl_players(return_as_pandas=True)
players_pd.head()

# SDV-native player master (public Shield/ESPN-athletes build; subset of nflverse columns, sparser cross-IDs)

players_sdv = load_nfl_players(source="sdv")
players_sdv.select(["display_name", "position", "espn_id"]).head()

# Pipeline next step (one line)

import polars as pl
load_nfl_players().select(["gsis_id", "display_name", "position"]).head()

load_nfl_schedule​

load_nfl_schedule(seasons: 'List[int]', return_as_pandas=False) -> 'pl.DataFrame'

Load NFL schedule data

Parameters

ParameterTypeDefaultDescription
seasonslistUsed to define different seasons. 1999 is the earliest available season.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing the schedule for the requested seasons.

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
game_typecharacterThe most recent game type of that season that a player appeared on the roster.
weekintegerSeason week.
gamedaycharacterThe date on which the game occurred.
weekdaycharacterThe day of the week on which the game occcured.
gametimecharacterThe kickoff time of the game. This is represented in 24-hour time and the Eastern time zone, regardless of what time zone the game was being played in.
away_teamcharacterString abbreviation for the away team.
away_scoreintegerThe number of points the away team scored. Is NA for games which haven't yet been played.
home_teamcharacterThe home team. Note that this contains the designated home team for games which no team is playing at home such as Super Bowls or NFL International games.
home_scoreintegerThe number of points the home team scored. Is NA for games which haven't yet been played.
locationcharacterEither Home if the home team is playing in their home stadium, or Neutral if the game is being played at a neutral location. This still shows as Home for games between the Giants and Jets even though they share the same home stadium.
resultintegerThe number of points the home team scored minus the number of points the visiting team scored. Equals h_score - v_score. Is NA for games which haven't yet been played. Convenient for evaluating against the spread bets.
totalintegerThe sum of each team's score in the game. Equals h_score + v_score. Is NA for games which haven't yet been played. Convenient for evaluating over/under total bets.
overtimeintegerBinary indicator of whether or not game went to overtime.
old_game_idcharacterLegacy NFL game ID.
gsisintegerThe id of the game issued by the NFL Game Statistics & Information System.
nfl_detail_idcharacterThe id of the game issued by NFL Detail.
pfrcharacterThe id of the game issued by Pro-Football-Reference
pffintegerThe id of the game issued by Pro Football Focus
espncharacterThe id of the game issued by ESPN
ftnintegerFTN Data game identifier corresponding to this scheduled game.
away_restintegerDays of rest that the away team is coming off of.
home_restintegerDays of rest that the home team is coming off of.
away_moneylineintegerOdds for away team to win the game.
home_moneylineintegerOdds for home team to win the game.
spread_linedoubleThe closing spread line for the game. A positive number means the home team was favored by that many points, a negative number means the away team was favored by that many points. (Source: Pro-Football-Reference)
away_spread_oddsintegerOdds for away team to cover the spread.
home_spread_oddsintegerOdds for home team to cover the spread.
total_linedoubleThe closing total line for the game. (Source: Pro-Football-Reference)
under_oddsintegerOdds that total score of game would be under the total_line.
over_oddsintegerOdds that total score of game would be over the total_ine.
div_gameintegerBinary indicator of whether or not game was played by 2 teams in the same division.
roofcharacterOne of 'dome', 'outdoors', 'closed', 'open' indicating indicating the roof status of the stadium the game was played in. (Source: Pro-Football-Reference)
surfacecharacterWhat type of ground the game was played on. (Source: Pro-Football-Reference)
tempintegerThe temperature at the stadium only for 'roof' = 'outdoors' or 'open'.(Source: Pro-Football-Reference)
windintegerThe speed of the wind in miles/hour only for 'roof' = 'outdoors' or 'open'. (Source: Pro-Football-Reference)
away_qb_idcharacterGSIS Player ID for away team starting quarterback.
home_qb_idcharacterGSIS Player ID for home team starting quarterback.
away_qb_namecharacterName of away team starting QB.
home_qb_namecharacterName of home team starting QB.
away_coachcharacterFirst and last name of the away team coach. (Source: Pro-Football-Reference)
home_coachcharacterFirst and last name of the home team coach. (Source: Pro-Football-Reference)
refereecharacterName of the game's referee (head official)
stadium_idcharacterID of the stadium the game was played in. (Source: Pro-Football-Reference)
stadiumcharacterName of the stadium

Example

from sportsdataverse.nfl import load_nfl_schedule
schedule = load_nfl_schedule(seasons=[2024])
schedule.shape

# Multi-season range

schedule = load_nfl_schedule(seasons=range(2020, 2025))

# Filter to a single week

import polars as pl
week_one = load_nfl_schedule(seasons=[2024]).filter(pl.col("week") == 1)

# Pandas round-trip

schedule_pd = load_nfl_schedule(seasons=[2024], return_as_pandas=True)
schedule_pd[["game_id", "home_team", "away_team", "week"]].head()

load_nfl_team_stats​

load_nfl_team_stats(seasons: 'List[int]', summary_level: 'str' = 'week', return_as_pandas=False, *, source: 'str' = 'nflverse') -> 'pl.DataFrame'

Load NFL team stats data going back to 1999

Parameters

ParameterTypeDefaultDescription
seasonslistUsed to define different seasons. 1999 is the earliest available season.
summary_levelstr'week'Aggregation level. One of "week", "reg", "post", "reg+post". Defaults to "week". Ignored when source is the SDV-native release (a single week-level parquet covering all seasons; filter post-load).
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.
sourcestr'nflverse'Which team-stats release to read. "nflverse" (the default) reads the per-season nflverse stats_team releases. "sportsdataverse" / "sdv" reads the SDV-native nfl_team_stats release (a single combined week-level parquet, built by sportsdataverse.nfl.build_nfl_team_stats from the SDV play-by-play and filtered to the requested seasons post-load).

Returns

Polars dataframe containing team stats available for the requested seasons.

col_nametypedescription
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
teamcharacterNFL team. Uses official abbreviations as per NFL.com
season_typecharacterREG or POST indicating if the timeframe belongs to regular or post season.
game_idcharacterTen digit identifier for NFL game.
opponent_teamcharacterTeam abbreviation or identifier of the opposing team faced during the game or period.
completionsintegerThe number of completed passes.
attemptsintegerThe number of pass attempts as defined by the NFL.
passing_yardsintegerNumeric yards by the passer_player_name, including yards gained in pass plays with laterals. This should equal official passing statistics.
passing_tdsintegerThe number of passing touchdowns.
passing_interceptionsintegerTotal number of interceptions thrown by the team's passers during the game or season period.
sacks_sufferedintegerTotal number of times the team's quarterback was sacked by the opposing defense during the period.
sack_yards_lostintegerTotal offensive yards lost by the team on plays where the quarterback was sacked during the period.
sack_fumblesintegerThe number of sacks with a fumble.
sack_fumbles_lostintegerThe number of sacks with a lost fumble.
passing_air_yardsintegerPassing air yards (includes incomplete passes).
passing_yards_after_catchintegerYards after the catch gained on plays in which player was the passer (this is an unofficial stat and may differ slightly between different sources).
passing_first_downsintegerFirst downs on pass attempts.
passing_epadoubleTotal expected points added on pass attempts and sacks. NOTE: this uses the variable qb_epa, which gives QB credit for EPA for up to the point where a receiver lost a fumble after a completed catch and makes EPA work more like passing yards on plays with fumbles.
passing_cpoedoubleCompletion percentage over expectation (CPOE) for the team's passing attack during the period, relative to a model-based baseline. Percentage points (100 * the completion-rate gap), not a 0-1 rate.
passing_2pt_conversionsintegerTwo-point conversion passes.
passing_10integerNumber of the team's completed passes that gained 10 or more yards (one of nflfastR's 'explosive' play thresholds).
passing_16integerNumber of the team's completed passes that gained 16 or more yards (one of nflfastR's 'explosive' play thresholds).
passing_20integerNumber of the team's completed passes that gained 20 or more yards (one of nflfastR's 'explosive' play thresholds).
passing_40integerNumber of the team's completed passes that gained 40 or more yards (one of nflfastR's 'explosive' play thresholds).
carriesintegerThe number of official rush attempts (incl. scrambles and kneel downs). Rushes after a lateral reception don't count as carry.
rushing_yardsintegerNumeric yards by the rusher_player_name, excluding yards gained in rush plays with laterals. This should equal official rushing statistics but could miss yards gained in rush plays with laterals. Please see the description of lateral_rusher_player_name for further information.
rushing_tdsintegerThe number of rushing touchdowns (incl. scrambles). Also includes touchdowns after obtaining a lateral on a play that started with a rushing attempt.
rushing_fumblesintegerThe number of rushes with a fumble.
rushing_fumbles_lostintegerThe number of rushes with a lost fumble.
rushing_first_downsintegerFirst downs on rush attempts (incl. scrambles).
rushing_epadoubleExpected points added on rush attempts (incl. scrambles and kneel downs).
rushing_2pt_conversionsintegerTwo-point conversion rushes
rushing_10integerNumber of the team's runs that gained 10 or more yards (one of nflfastR's 'explosive' play thresholds).
rushing_12integerNumber of the team's runs that gained 12 or more yards (one of nflfastR's 'explosive' play thresholds).
rushing_20integerNumber of the team's runs that gained 20 or more yards (one of nflfastR's 'explosive' play thresholds).
rushing_40integerNumber of the team's runs that gained 40 or more yards (one of nflfastR's 'explosive' play thresholds).
receptionsintegerThe number of pass receptions. Lateral receptions officially don't count as reception.
targetsintegerThe number of pass plays where the player was the targeted receiver.
receiving_yardsintegerNumeric yards by the receiver_player_name, excluding yards gained in pass plays with laterals. This should equal official receiving statistics but could miss yards gained in pass plays with laterals. Please see the description of lateral_receiver_player_name for further information.
receiving_tdsintegerThe number of touchdowns following a pass reception. Also includes touchdowns after receiving a lateral on a play that started as a pass play.
receiving_fumblesintegerThe number of fumbles after a pass reception.
receiving_fumbles_lostintegerThe number of fumbles lost after a pass reception.
receiving_air_yardsintegerReceiving air yards (incl. incomplete passes).
receiving_yards_after_catchintegerYards after the catch gained on plays in which player was receiver (this is an unofficial stat and may differ slightly between different sources).
receiving_first_downsintegerTotal number of first downs gained on receptions
receiving_epadoubleTotal EPA on plays where this receiver was targeted
receiving_2pt_conversionsintegerTwo-point conversion receptions
receiving_10integerNumber of the team's receptions that gained 10 or more yards (one of nflfastR's 'explosive' play thresholds).
receiving_16integerNumber of the team's receptions that gained 16 or more yards (one of nflfastR's 'explosive' play thresholds).
receiving_20integerNumber of the team's receptions that gained 20 or more yards (one of nflfastR's 'explosive' play thresholds).
receiving_40integerNumber of the team's receptions that gained 40 or more yards (one of nflfastR's 'explosive' play thresholds).
special_teams_tdsintegerTotal number of kick/punt return touchdowns
def_tackles_solointegerTotal number of solo tackles for this player
def_tackles_with_assistintegerNumber of tackles this player had with an assisted tackle
def_tackle_assistsintegerNumber of assisted tackles for this player
def_tackles_for_lossintegerNumber of tackles for loss (TFL) for this player
def_tackles_for_loss_yardsintegerYards lost from TFLs involving this player
def_fumbles_forcedintegerNumber of times a fumble was forced from this player
def_sacksdoubleNumber of sacks form this player
def_sack_yardsdoubleYards lost from sacks forced by this player
def_qb_hitsintegerNumber of QB hits from this player (should not include plays where the QB was sacked)
def_interceptionsintegerNumber of interceptions forced by this player
def_interception_yardsintegeryards gained/lost by interception returns from this player
def_pass_defendedintegerNumber of passes defended/broken up by this player
def_tdsintegerNumber of defensive touchdowns scored by this player
def_fumblesintegerNumber of fumbles by this player
def_safetiesintegerNumber of safeties scored by the defense (opponent tackled in their own end zone) during the period.
def_punt_blocksintegerNumber of opponent punts blocked by the team's defense.
def_pat_blocksintegerNumber of opponent extra point attempts blocked by the team's defense.
def_fg_blocksintegerNumber of opponent field goal attempts blocked by the team's defense.
def_2pt_attsintegerNumber of defensive two-point conversion returns attempted by the team (nflfastR stat id 403).
def_2pt_madeintegerNumber of successful defensive two-point conversion returns by the team (nflfastR stat id 404).
misc_yardsintegerMiscellaneous yards not attributed to passing, rushing, or standard return categories during the period.
fumble_recovery_ownintegerNumber of fumbles recovered by the team that were originally fumbled by their own players.
fumble_recovery_yards_ownintegerTotal yards gained (or lost) on recoveries of the team's own fumbles during the period.
fumble_recovery_oppintegerNumber of fumbles recovered by the team that were originally lost by the opposing team.
fumble_recovery_yards_oppintegerTotal yards gained on returns of fumbles recovered from the opposing team during the period.
fumble_recovery_tdsintegerNumber of touchdowns scored by the team on fumble recoveries during the game or season period.
penaltiesintegerTotal number of penalties.
penalty_yardsintegerYards gained (or lost) by the posteam from the penalty.
timeoutsintegerNumber of timeouts remaining or used by the team during the game or period.
fumbles_forced_by_oppintegerFumbles by the team's players that were forced by the opponent, counted across all units (offense, defense and special teams).
fumbles_not_forcedintegerFumbles by the team's players that were not forced by the opponent, counted across all units.
fumbles_out_of_boundsintegerFumbles by the team's players where the ball went out of bounds, forced or not; each is also counted in fumbles_forced_by_opp or fumbles_not_forced.
fumbles_totalintegerTotal fumbles by the team's players across all units; equals fumbles_forced_by_opp + fumbles_not_forced.
fumbles_lost_totalintegerTotal fumbles lost by the team's players, counted across all units.
punt_returnsintegerNumber of punt returns.
punt_return_yardsintegerTeam punt return yards.
kickoff_returnsintegerTotal number of kickoff returns recorded by the team during the game or season period.
kickoff_return_yardsintegerTotal yards gained by the team on kickoff returns during the game or season period.
fg_madeintegerTRUE when the field goal attempt was successful.
fg_attintegerTotal number of field goal attempts by the team's kicker during the game or season period.
fg_missedintegerTotal number of field goal attempts missed (not blocked) by the team's kicker during the period.
fg_blockedintegerTotal number of field goal attempts that were blocked by the opposing defense during the period.
fg_longintegerDistance in yards of the longest successful field goal made by the team's kicker during the period.
fg_pctdoubleField goal percentage (0-1).
fg_made_0_19integerNumber of successful field goals made from 0–19 yards during the game or season period.
fg_made_20_29integerNumber of successful field goals made from 20–29 yards during the game or season period.
fg_made_30_39integerNumber of successful field goals made from 30–39 yards during the game or season period.
fg_made_40_49integerNumber of successful field goals made from 40–49 yards during the game or season period.
fg_made_50_59integerNumber of successful field goals made from 50–59 yards during the game or season period.
fg_made_60_integerNumber of successful field goals made from 60 yards or longer during the game or season period.
fg_missed_0_19integerNumber of field goal attempts from 0–19 yards that were missed (not blocked) during the period.
fg_missed_20_29integerNumber of field goal attempts from 20–29 yards that were missed (not blocked) during the period.
fg_missed_30_39integerNumber of field goal attempts from 30–39 yards that were missed (not blocked) during the period.
fg_missed_40_49integerNumber of field goal attempts from 40–49 yards that were missed (not blocked) during the period.
fg_missed_50_59integerNumber of field goal attempts from 50–59 yards that were missed (not blocked) during the period.
fg_missed_60_integerNumber of field goal attempts from 60 yards or longer that were missed (not blocked) during the period.
fg_made_listcharacterList of distances (in yards) of each successful field goal made during the game or season period.
fg_missed_listcharacterList of distances (in yards) of each missed field goal attempt during the game or season period.
fg_blocked_listcharacterList of distances (in yards) of each blocked field goal attempt during the game or season period.
fg_made_distanceintegerCumulative distance in yards of all successful field goals made during the game or season period.
fg_missed_distanceintegerCumulative distance in yards of all missed field goal attempts during the game or season period.
fg_blocked_distanceintegerDistance (in yards) of field goal attempts that were blocked by the opposing defense during the period.
pat_madeintegerTotal number of successful point-after-touchdown kicks made by the team's kicker during the period.
pat_attintegerTotal number of point-after-touchdown (PAT / extra point) attempts by the team's kicker during the period.
pat_missedintegerNumber of point-after-touchdown attempts that were missed (not blocked) during the period.
pat_blockedintegerNumber of point-after-touchdown attempts that were blocked by the opposing defense during the period.
pat_pctdoublePercentage of point-after-touchdown attempts that were successfully converted during the period.
gwfg_madeintegerNumber of successful game-winning field goals made to secure a victory in the final moments.
gwfg_attintegerNumber of game-winning field goal attempts made in the final moments to win the game.
gwfg_missedintegerNumber of game-winning field goal attempts that were missed (no good) in the final moments.
gwfg_blockedintegerNumber of game-winning field goal attempts that were blocked by the opposing defense.
gwfg_distanceintegerDistance in yards of the game-winning field goal attempt (or attempts) during the period.
pt_attintegerNumber of punts kicked by the team; blocked punts are counted separately in pt_blocked.
pt_blockedintegerNumber of the team's punts that were blocked.
pt_longintegerLength in yards of the team's longest punt; null when the team had no kicked punt (never 0 in the 2024 sample).
pt_yardsintegerTotal gross yards of the team's punts.
pt_inside_20integerNumber of the team's punts credited as ending inside the opponent's 20-yard line (nflfastR defines the spot as where the return ended).
pt_out_of_boundsintegerNumber of the team's punts that went out of bounds without a return.
pt_downedintegerNumber of the team's punts that were downed without a return.
pt_touchbackintegerNumber of the team's punts that resulted in a touchback.
pt_fair_caughtintegerNumber of the team's punts that were fair caught by the opponent.
pt_returnedintegerNumber of the team's punts that were returned by the opponent.
pt_return_yardsintegerPunt return yards gained by the opponent on the team's punts; can be negative (minimum -4 in the 2024 sample).
pt_return_tdsintegerNumber of the team's punts that the opponent returned for a touchdown.
pt_net_yardsintegerNet punting yards: pt_yards minus pt_return_yards minus 20 yards per touchback.

Example

from sportsdataverse.nfl import load_nfl_team_stats
weekly = load_nfl_team_stats(seasons=[2024])

# Regular-season-only team stats

reg = load_nfl_team_stats(seasons=[2024], summary_level="reg")

# SDV-native team stats (built from SDV play-by-play)

sdv = load_nfl_team_stats(seasons=[2024], source="sdv")

load_nfl_teams​

load_nfl_teams(return_as_pandas=False) -> 'pl.DataFrame'

Load NFL team ID information and logos

Parameters

ParameterTypeDefaultDescription
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing teams available.

col_nametypedescription
team_abbrcharacterOfficial team abbreveation
team_namecharacterTeam nickname; team_detail = TRUE only.
team_idintegerESPN team id.
team_nickcharacterTeam nickname (e.g., 'Chiefs', 'Eagles', 'Patriots') without the city or state prefix.
team_confcharacterConference affiliation of the team (e.g., 'AFC' or 'NFC').
team_divisioncharacterDivision affiliation of the team (e.g., 'AFC North', 'NFC West').
team_colorcharacterPrimary team color; team_detail = TRUE only.
team_color2characterSecondary brand color for the team in hexadecimal format (e.g., '#FFB612').
team_color3characterTertiary brand color for the team in hexadecimal format, used in alternate uniforms or accents.
team_color4characterQuaternary brand color for the team in hexadecimal format, part of the team's full brand palette.
team_logo_wikipediacharacterURL to the team's primary logo image as hosted on Wikimedia Commons / Wikipedia.
team_logo_espncharacterURL to the team's primary logo image as hosted by ESPN.
team_wordmarkcharacterURL to the team's wordmark image (team name rendered in official typography without the primary logo mark).
team_conference_logocharacterURL to the logo image for the team's conference (AFC or NFC).
team_league_logocharacterURL to the NFL league logo image.
team_logo_squaredcharacterURL to a square-cropped version of the team's logo suitable for thumbnails and grid layouts.

Example

from sportsdataverse.nfl import load_nfl_teams
teams = load_nfl_teams()
teams.shape

# Pandas round-trip

teams_pd = load_nfl_teams(return_as_pandas=True)
teams_pd[["team_abbr", "team_name", "team_conf", "team_division"]].head()

load_nfl_trades​

load_nfl_trades(return_as_pandas=False) -> 'pl.DataFrame'

Load NFL trades data

Parameters

ParameterTypeDefaultDescription
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing NFL trade information.

col_nametypedescription
trade_idintegerID of Trade
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
trade_datecharacterExact date that trade occurred
gavecharacterTeam that gave pick/player in row
receivedcharacterTeam that received pick/player in row
pick_seasonintegerDraft in which traded pick was in
pick_roundintegerRound in which traded pick was in
pick_numberintegerPick number of traded pick
conditionalintegerBinary indicator of whether or not traded pick was conditional
pfr_idcharacterPro-Football-Reference ID for player
pfr_namecharacterFull name of traded player

Example

from sportsdataverse.nfl import load_nfl_trades
trades = load_nfl_trades()
trades.shape

# Filter to a single season

import polars as pl
trades_2024 = load_nfl_trades().filter(pl.col("season") == 2024)

load_officials​

load_officials(return_as_pandas=False) -> 'pl.DataFrame'

Load NFL Officials information

Parameters

ParameterTypeDefaultDescription
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing officials available.

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
game_keycharacterUnique numeric key assigned by the NFL to identify the specific game in official records.
official_namecharacterOfficial name.
positioncharacterPrimary position as reported by NFL.com
jersey_numberintegerJersey number. Often useful for joins by name/team/jersey.
official_idcharacterUnique official / referee identifier.
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
season_typecharacterREG or POST indicating if the timeframe belongs to regular or post season.
weekintegerSeason week.

Example

from sportsdataverse.nfl import load_nfl_officials
officials = load_nfl_officials()
officials.shape

# Pandas round-trip

officials_pd = load_nfl_officials(return_as_pandas=True)
officials_pd.head()

load_participation​

load_participation(seasons: 'List[int]', return_as_pandas=False) -> 'pl.DataFrame'

Load NFL play-by-play participation data for selected seasons

Parameters

ParameterTypeDefaultDescription
seasonslistUsed to define different seasons. 2016 is the earliest available season.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing play-by-play participation data available for the requested seasons.

col_nametypedescription
nflverse_game_idcharacternflverse identifier for games. Format is season, week, away_team, home_team
old_game_idcharacterLegacy NFL game ID.
play_iddoubleNumeric play id that when used with game_id and drive provides the unique identifier for a single play.
possession_teamcharacterString abbreviation for the team with possession.
offense_formationcharacterFormation the offense lines up in to snap the ball.
offense_personnelcharacterThe positions of the offensive personnel lined up on the field for a play.
defenders_in_boxintegerNumber of defensive players lined up in the box at the snap.
defense_personnelcharacterThe positions of the defensive personnel lined up on the field for a play.
number_of_pass_rushersintegerNumber of defensive player who rushed the passer.
players_on_playcharacterA list of every player on the field for the play, by gsis_id
offense_playerscharacterA list of every offensive player on the field for the play, by gsis_id
defense_playerscharacterA list of every defensive player on the field for the play, by gsis_id
n_offenseintegerNumber of offensive players on the field for the play
n_defenseintegerNumber of defensive players on the field for the play
ngs_air_yardsdoubleLegacy column. For 2023 and prior years, reflects the distance (in yards) that the ball traveled in the air on a given passing play as tracked by NGS. Is NA for 2024 on--we advise instead using the air_yards column from nflreadr::load_pbp() moving forward.
time_to_throwdoubleDuration (in seconds) between the time of the ball being snapped and the time of release of a pass attempt
was_pressurelogicalA boolean indicating whether or not the QB was pressured on a play
routecharacterA string indicating the route the primary receiver on a play took. Has the following possible values: "CORNER", "DEEP OUT", "GO", "HITCH/CURL", "IN/DIG", "POST", "QUICK OUT", "SCREEN", "SHALLOW CROSS/DRAG", "SLANT", "SWING", "TEXAS/ANGLE", "WHEEL".
defense_man_zone_typecharacterA string indicating whether the defense was in man or zone coverage on a play
defense_coverage_typecharacterA string indicating what type of cover the defense was in on a play. Has one of the following values: "COVER_0", "COVER_1", "COVER_2", "2_MAN", "COVER_3", "COVER_4", "COVER_6", "COVER_9", "COMBO", "BLOWN".
offense_namescharacterA string listing all of the names of offensive players in the order of their gsis_ids in offense_players.
defense_namescharacterA string listing all of the names of defensive players in the order of their gsis_ids in defense_players.
offense_positionscharacterA string listing all of the positions of offensive players in the order of their gsis_ids in offense_players.
defense_positionscharacterA string listing all of the positions of defensive players in the order of their gsis_ids in defense_players.
offense_numberscharacterA string listing all of the numbers of offensive players in the order of their gsis_ids in offense_players.
defense_numberscharacterA string listing all of the numbers of defensive players in the order of their gsis_ids in defense_players.

Example

from sportsdataverse.nfl import load_nfl_pbp_participation
participation = load_nfl_pbp_participation(seasons=[2022])

# Multi-season range

participation = load_nfl_pbp_participation(seasons=range(2018, 2023))

load_pfr_advstats​

load_pfr_advstats(seasons: 'List[int]', stat_type: 'str' = 'pass', summary_level: 'str' = 'week', return_as_pandas: 'bool' = False) -> 'pl.DataFrame'

Load Pro-Football Reference advanced statistics going back to 2018.

Unified loader that consolidates the per-stat-type / per-summary-level PFR advstats accessors. Mirrors the API surface of nflreadpy's load_pfr_advstats so downstream code can swap engines without changing call sites.

Parameters

ParameterTypeDefaultDescription
seasonslist[int]Seasons to load. For summary_level='week' this drives the per-season parquet fan-out; for summary_level='season' it post-filters the combined parquet by the season column.
stat_typestr'pass'One of "pass", "rush", "rec", "def". Defaults to "pass".
summary_levelstr'week'One of "week" or "season". Defaults to "week".
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing PFR advanced stats data for the requested stat_type, summary_level, and seasons.

col_nametypedescription
game_idcharacterTen digit identifier for NFL game.
pfr_game_idcharacterPFR game ID
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
game_typecharacterThe most recent game type of that season that a player appeared on the roster.
teamcharacterNFL team. Uses official abbreviations as per NFL.com
opponentcharacterOpposing team of player
pfr_player_namecharacterPlayer's name as recorded by PFR
pfr_player_idcharacterID from Pro Football Reference
passing_dropsdoubleRaw count of catchable passes dropped by the intended receiver, from Pro Football Reference charting.
passing_drop_pctdoublePercentage of pass attempts dropped by the receiver, isolating receiver-side incompletions from passer error.
receiving_dropdoubleNumber of catchable targets dropped by the receiver in the given game or season, from Pro Football Reference advanced receiving data.
receiving_drop_pctdoublePercentage of targets that resulted in a drop by the receiver, from Pro Football Reference advanced receiving data.
passing_bad_throwsdoubleRaw count of bad throws by the passer, as charted and defined by Pro Football Reference advanced passing data.
passing_bad_throw_pctdoublePercentage of pass attempts classified as bad throws by Pro Football Reference (passes the passer should not have attempted or severely underthreww/overthrew).
times_sackeddoubleTotal number of times the defensive player recorded a sack of the quarterback, from Pro Football Reference.
times_blitzeddoubleNumber of times blitzed
times_hurrieddoubleNumber of times hurried
times_hitdoubleNumber of times hit
times_pressureddoubleNumber of times pressured
times_pressured_pctdoublePercentage of pass-blocking snaps on which the lineman or back allowed the quarterback to be pressured, from Pro Football Reference.
def_times_blitzeddoubleNumber of plays on which the defensive player sent five or more pass rushers, from Pro Football Reference advanced defensive stats.
def_times_hurrieddoubleNumber of times the defensive player hurried (pressured but did not sack or hit) the quarterback, from Pro Football Reference.
def_times_hitqbdoubleNumber of times the defensive player hit the quarterback on a pass play without recording a sack, from Pro Football Reference.

Example

from sportsdataverse.nfl import load_nfl_pfr_advstats
pass_week = load_nfl_pfr_advstats(
seasons=[2024], stat_type="pass", summary_level="week"
)

# Season-level rushing summaries (one row per player per season)

rush_season = load_nfl_pfr_advstats(
seasons=[2024], stat_type="rush", summary_level="season"
)

# Defensive stats with a follow-up filter

import polars as pl
def_week = (
load_nfl_pfr_advstats(seasons=[2024], stat_type="def", summary_level="week")
.filter(pl.col("week") <= 8)
)

# Pandas round-trip

rec_pd = load_nfl_pfr_advstats(
seasons=[2024],
stat_type="rec",
summary_level="season",
return_as_pandas=True,
)

load_player_stats​

load_player_stats(seasons: 'List[int] | None' = None, kicking=False, return_as_pandas=False, *, source: 'str' = 'nflverse') -> 'pl.DataFrame'

Load NFL player stats data

Week-level player stats. For the default source="nflverse" this reads the live stats_player release (stats_player_week_{season}.parquet, one asset per season, 1999-2026) -- not the combined player_stats.parquet, which nflverse froze in 2025-05 and which therefore ends at season 2024.

The weekly release is a 150-column superset of the old combined file. To keep every downstream consumer working, the output is reconciled to ONE stable schema -- the legacy column set, in the legacy order, at the legacy dtypes:

  • Renamed back: team -> recent_team, passing_interceptions -> interceptions, sacks_suffered -> sacks.
  • Sign-flipped: sack_yards_lost (negative upstream) is negated into sack_yards (positive yards lost), matching the legacy frame.
  • Kept null: dakota is no longer published upstream; the column remains, all-null, so the column set does not move.
  • Dropped: the ~100 added columns (def_*, pt_*, punt/kickoff returns, yardage buckets, game_id, passing_cpoe, ...) are not emitted. kicking=True returns the legacy kicking contract, which the weekly release still carries in full (44/44 columns).
  • Rows: a row is kept when at least one contracted stat is non-zero, so the weekly release's defensive / offensive-line rows -- which have no column to land in under this contract -- do not arrive as all-null noise.

Parameters

ParameterTypeDefaultDescription
seasonslistNoneSeasons to load. 1999 is the earliest available season. None (the default) loads every season from 1999 through the current one, matching the old whole-file behavior.
kickingboolFalseIf True, load kicking stats. If False, load all other stats.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.
sourcestr'nflverse'Which player-stats release to read. "nflverse" (the default, also accepts None) returns the nflverse published stats_player weekly release, reconciled to the legacy schema described above. "sportsdataverse" / "sdv" returns the SDV-native nfl_player_stats release built by sportsdataverse.nfl.build_nfl_player_stats from SDV-native play-by-play (1999-present, week-level, REG+POST) with its own columns, season-filtered but otherwise untouched. Any other value raises ValueError.

Returns

Polars dataframe containing player stats.

col_nametypedescription
player_idcharacterPlayer ID (aka GSIS ID) as defined by nflreadr::load_rosters
player_namecharacterFull name of player
player_display_namecharacterFull name of the player
positioncharacterPrimary position as reported by NFL.com
position_groupcharacterPostion group of player as listed by NFL
headshot_urlcharacterA URL string that points to player photos used by NFL.com (or sometimes ESPN)
recent_teamcharacterMost recent team player appears in pbp with.
seasoninteger4 digit number indicating to which season(s) the specified timeframe belongs to.
weekintegerSeason week.
season_typecharacterREG or POST indicating if the timeframe belongs to regular or post season.
opponent_teamcharacterAbbreviation of the opposing team the player faced in the game or week represented by this row.
completionsintegerThe number of completed passes.
attemptsintegerThe number of pass attempts as defined by the NFL.
passing_yardsdoubleNumeric yards by the passer_player_name, including yards gained in pass plays with laterals. This should equal official passing statistics.
passing_tdsintegerThe number of passing touchdowns.
interceptionsdoubleThe number of interceptions thrown.
sacksdoubleThe Number of times sacked.
sack_yardsdoubleYards lost on sack plays.
sack_fumblesintegerThe number of sacks with a fumble.
sack_fumbles_lostintegerThe number of sacks with a lost fumble.
passing_air_yardsdoublePassing air yards (includes incomplete passes).
passing_yards_after_catchdoubleYards after the catch gained on plays in which player was the passer (this is an unofficial stat and may differ slightly between different sources).
passing_first_downsdoubleFirst downs on pass attempts.
passing_epadoubleTotal expected points added on pass attempts and sacks. NOTE: this uses the variable qb_epa, which gives QB credit for EPA for up to the point where a receiver lost a fumble after a completed catch and makes EPA work more like passing yards on plays with fumbles.
passing_2pt_conversionsintegerTwo-point conversion passes.
pacrdoublePassing (yards) Air (yards) Conversion Ratio - the number of passing yards per air yards thrown per game
dakotadoubleAdjusted EPA + CPOE composite based on coefficients which best predict adjusted EPA/play in the following year.
carriesintegerThe number of official rush attempts (incl. scrambles and kneel downs). Rushes after a lateral reception don't count as carry.
rushing_yardsdoubleNumeric yards by the rusher_player_name, excluding yards gained in rush plays with laterals. This should equal official rushing statistics but could miss yards gained in rush plays with laterals. Please see the description of lateral_rusher_player_name for further information.
rushing_tdsintegerThe number of rushing touchdowns (incl. scrambles). Also includes touchdowns after obtaining a lateral on a play that started with a rushing attempt.
rushing_fumblesdoubleThe number of rushes with a fumble.
rushing_fumbles_lostdoubleThe number of rushes with a lost fumble.
rushing_first_downsdoubleFirst downs on rush attempts (incl. scrambles).
rushing_epadoubleExpected points added on rush attempts (incl. scrambles and kneel downs).
rushing_2pt_conversionsintegerTwo-point conversion rushes
receptionsintegerThe number of pass receptions. Lateral receptions officially don't count as reception.
targetsintegerThe number of pass plays where the player was the targeted receiver.
receiving_yardsdoubleNumeric yards by the receiver_player_name, excluding yards gained in pass plays with laterals. This should equal official receiving statistics but could miss yards gained in pass plays with laterals. Please see the description of lateral_receiver_player_name for further information.
receiving_tdsintegerThe number of touchdowns following a pass reception. Also includes touchdowns after receiving a lateral on a play that started as a pass play.
receiving_fumblesdoubleThe number of fumbles after a pass reception.
receiving_fumbles_lostdoubleThe number of fumbles lost after a pass reception.
receiving_air_yardsdoubleReceiving air yards (incl. incomplete passes).
receiving_yards_after_catchdoubleYards after the catch gained on plays in which player was receiver (this is an unofficial stat and may differ slightly between different sources).
receiving_first_downsdoubleTotal number of first downs gained on receptions
receiving_epadoubleTotal EPA on plays where this receiver was targeted
receiving_2pt_conversionsintegerTwo-point conversion receptions
racrdoubleReceiving (yards) Air (yards) Conversion Ratio - the number of receiving yards per air yards targeted per game
target_sharedouble"Player's share of team receiving targets in this game"
air_yards_sharedoublePlayer's share of the team's air yards in this game
woprdoubleWeighted OPportunity Rating - 1.5 x target_share + 0.7 x air_yards_share - a weighted average that contextualizes total fantasy usage.
special_teams_tdsdoubleTotal number of kick/punt return touchdowns
fantasy_pointsdoubleStandard fantasy points.
fantasy_points_pprdoublePPR fantasy points.

Example

from sportsdataverse.nfl import load_nfl_player_stats
stats = load_nfl_player_stats()
stats.shape

# SDV-native player stats (week-level, built from SDV play-by-play)

stats_sdv = load_nfl_player_stats(source="sdv")
stats_sdv.select(["season", "week", "player_id", "attempts"]).head()

# Kicking-only stats (nflverse source only)

kicking = load_nfl_player_stats(seasons=[2025], kicking=True)

# A single season (2025 and 2026 live only in the weekly release)

stats_2025 = load_nfl_player_stats(seasons=[2025])