Skip to content

chicken_nhl

Here is where you can find basic information about using the chicken_nhl module.

For more in-depth materials, including source code, please consult the Reference

Basic usage

Import module

chicken_nhl scrapes data from various official NHL endpoints, combining them into a usable play-by-play dataframe. The module and the most relevant classes can be imported using the below snippet:

from chickenstats.chicken_nhl import Season, Scraper

Season and Game IDs

Each NHL game has a 10-digit game ID, with the first four digits indicating the season (e.g., 2024 for 2024-25 season), the next four digits indicating the "session," or stage during which the game was played (e.g., 02 for the regular season, 03 for the post-season), and the last four digits indicating the game number (e.g., 0001 for the first game of the season).(1)

  1. This convention changes slightly in the playoffs. Game IDs are 10-digits, but the last four digits indicate the round, series, and game number (e.g., 0127 is the seventh game in the second series of the first round of the playoffs)

These game IDs can be readily accessed via the schedule method of Season class. The below snippet scrapes the Nashville Predators' schedule for the 2024-25 season:

season = Season(2024)
nsh_schedule = season.schedule("NSH")

condition = nsh_schedule.game_state == "OFF" # (1)!

game_ids = nsh_schedule.loc[condition].game_id.tolist()
  1. We want to limit the games we're scraping to those that have already occurred, otherwise there's no data
Tip

It's obviously possible to scrape only the regular season / playoffs, a combination of the two, a list of teams, or even the 4 Nations Face-Off, using the below snippets.

The example throughout this guide is meant to be lightweight to avoid time spent waiting on data to download.

To scrape the playoffs, provide the letter "P" to the sessions parameter:

season = Season(2023)
playoff_schedule = season.schedule(sessions="P")

To scrape more than one team, provide the preferred team codes as a list to the same parameter:

teams = ["NSH", "TBL", "DET", "TOR"]
schedule = season.schedule(team_schedule=teams)

To scrape the 4 Nations Face-Off in the 2024-25 season:

season = Season(2024)
fo_schedule = season.schedule(sessions="FO")

Scraper

The Scraper object is used for scraping data from the API and HTML endpoints:

scraper = Scraper(game_ids) # (1)! 

pbp = scraper.play_by_play # (2)!
  1. The scraper object takes a list of game IDs
  2. Access play-by-play data as a Pandas DataFrame
Tip

The Scraper object can also be used with individual game IDs:

scraper = Scraper(game_ids[0])
pbp = scraper.play_by_play

To see the first 5 goals for the Predators' in the 2024-25 season:

conditions = np.logical_and(pbp.event_team == "NSH", pbp.event == "GOAL")
pbp.loc[conditions].head(5)
id season session game_id game_date event_idx period period_seconds game_seconds strength_state event_team opp_team event description zone coords_x coords_y danger high_danger player_1 player_1_eh_id player_1_eh_id_api player_1_api_id player_1_position player_1_type player_2 player_2_eh_id player_2_eh_id_api player_2_api_id player_2_position player_2_type player_3 player_3_eh_id player_3_eh_id_api player_3_api_id player_3_position player_3_type score_state score_diff forwards_percent opp_forwards_percent shot_type event_length event_distance pbp_distance event_angle penalty penalty_length home_score home_score_diff away_score away_score_diff is_home is_away home_team away_team home_skaters away_skaters home_on home_on_eh_id home_on_api_id home_on_positions away_on away_on_eh_id away_on_api_id away_on_positions event_team_skaters teammates teammates_eh_id teammates_api_id teammates_positions own_goalie own_goalie_eh_id own_goalie_api_id forwards forwards_eh_id forwards_api_id forwards_count defense defense_eh_id defense_api_id defense_count opp_strength_state opp_score_state opp_score_diff opp_team_skaters opp_team_on opp_team_on_eh_id opp_team_on_api_id opp_team_on_positions opp_goalie opp_goalie_eh_id opp_goalie_api_id opp_forwards opp_forwards_eh_id opp_forwards_api_id opp_forwards_count opp_defense opp_defense_eh_id opp_defense_api_id opp_defense_count home_forwards home_forwards_eh_id home_forwards_api_id home_forwards_count home_forwards_percent home_defense home_defense_eh_id home_defense_api_id home_defense_count home_goalie home_goalie_eh_id home_goalie_api_id away_forwards away_forwards_eh_id away_forwards_api_id away_forwards_count away_forwards_percent away_defense away_defense_eh_id away_defense_api_id away_defense_count away_goalie away_goalie_eh_id away_goalie_api_id change_on_count change_off_count change_on change_on_eh_id change_on_api_id change_on_positions change_off change_off_eh_id change_off_api_id change_off_positions change_on_forwards_count change_off_forwards_count change_on_forwards change_on_forwards_eh_id change_on_forwards_api_id change_off_forwards change_off_forwards_eh_id change_off_forwards_api_id change_on_defense_count change_off_defense_count change_on_defense change_on_defense_eh_id change_on_defense_api_id change_off_defense change_off_defense_eh_id change_off_defense_api_id change_on_goalie_count change_off_goalie_count change_on_goalie change_on_goalie_eh_id change_on_goalie_api_id change_off_goalie change_off_goalie_eh_id change_off_goalie_api_id pred_goal pred_goal_adj goal goal_adj hd_goal shot shot_adj hd_shot miss miss_adj hd_miss fenwick fenwick_adj hd_fenwick corsi corsi_adj block block_adj teammate_block teammate_block_adj hit give take fac penl change stop chl ozf nzf dzf ozc nzc dzc otf pen0 pen2 pen4 pen5 pen10
20240200170342 20242025 R 2024020017 2024-10-10 342 2 210 1410 5v4 NSH DAL GOAL NSH #9 FORSBERG(1), SNAP , OFF. ZONE, 29 FT.ASSISTS: #81 MARCHESSAULT(1); #59 JOSI(1) OFF -60 6 1 0 FILIP FORSBERG FILIP.FORSBERG FILIP.FORSBERG 8.47689e+06 L GOAL SCORER JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT JONATHAN.MARCHESSAULT 8.47654e+06 R PRIMARY ASSIST ROMAN JOSI ROMAN.JOSI ROMAN.JOSI 8.4746e+06 D SECONDARY ASSIST 0v2 -2 0.8 0.5 SNAP 0 29.6142 29 11.6894 nan nan 0 -2 2 2 1 0 NSH DAL 5 4 FILIP FORSBERG, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS, ROMAN JOSI FILIP.FORSBERG, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS, ROMAN.JOSI 8476887, 8476539, 8475158, 8474564, 8474600 L, R, C, C, D OSKAR BACK, COLIN BLACKWELL, ESA LINDELL, ILYA LYUBUSHKIN OSKAR.BACK, COLIN.BLACKWELL, ESA.LINDELL, ILYA.LYUBUSHKIN 8480840, 8476278, 8476902, 8480950 C, C, D, D 5 FILIP FORSBERG, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS, ROMAN JOSI FILIP.FORSBERG, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS, ROMAN.JOSI 8476887, 8476539, 8475158, 8474564, 8474600 L, R, C, C, D SCOTT WEDGEWOOD SCOTT.WEDGEWOOD 8.47581e+06 FILIP FORSBERG, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS FILIP.FORSBERG, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS 8476887, 8476539, 8475158, 8474564 4 ROMAN JOSI ROMAN.JOSI 8474600 1 4v5 2v0 2 4 OSKAR BACK, COLIN BLACKWELL, ESA LINDELL, ILYA LYUBUSHKIN OSKAR.BACK, COLIN.BLACKWELL, ESA.LINDELL, ILYA.LYUBUSHKIN 8480840, 8476278, 8476902, 8480950 C, C, D, D JAKE OETTINGER JAKE.OETTINGER 8479979 OSKAR BACK, COLIN BLACKWELL OSKAR.BACK, COLIN.BLACKWELL 8480840, 8476278 2 ESA LINDELL, ILYA LYUBUSHKIN ESA.LINDELL, ILYA.LYUBUSHKIN 8476902, 8480950 2 FILIP FORSBERG, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS FILIP.FORSBERG, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS 8476887, 8476539, 8475158, 8474564 4 0.8 ROMAN JOSI ROMAN.JOSI 8474600 1 SCOTT WEDGEWOOD SCOTT.WEDGEWOOD 8.47581e+06 OSKAR BACK, COLIN BLACKWELL OSKAR.BACK, COLIN.BLACKWELL 8480840, 8476278 2 0.5 ESA LINDELL, ILYA LYUBUSHKIN ESA.LINDELL, ILYA.LYUBUSHKIN 8476902, 8480950 2 JAKE OETTINGER JAKE.OETTINGER 8479979 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.108429 0.0947426 1 0.868644 0 1 0.856656 0 0 0 0 1 0.854207 0 1 0.854204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20240200170615 20242025 R 2024020017 2024-10-10 615 3 277 2677 5v5 NSH DAL GOAL NSH #82 NOVAK(1), BACKHAND , OFF. ZONE, 7 FT.ASSISTS: #77 EVANGELISTA(1); #9 FORSBERG(1) OFF 82 -2 0 1 THOMAS NOVAK THOMAS.NOVAK THOMAS.NOVAK 8.47844e+06 C GOAL SCORER LUKE EVANGELISTA LUKE.EVANGELISTA LUKE.EVANGELISTA 8.48215e+06 R PRIMARY ASSIST FILIP FORSBERG FILIP.FORSBERG FILIP.FORSBERG 8.47689e+06 L SECONDARY ASSIST 1v4 -3 0.6 0.6 BACKHAND 0 7.28011 7 15.9454 nan nan 1 -3 4 3 1 0 NSH DAL 5 5 PHILIP TOMASINO, LUKE EVANGELISTA, THOMAS NOVAK, JEREMY LAUZON, ALEX CARRIER PHILIP.TOMASINO, LUKE.EVANGELISTA, THOMAS.NOVAK, JEREMY.LAUZON, ALEX.CARRIER 8481577, 8482146, 8478438, 8478468, 8478851 C, R, C, D, D JAMIE BENN, SAM STEEL, EVGENY DADONOV, ILYA LYUBUSHKIN, THOMAS HARLEY JAMIE.BENN, SAM.STEEL, EVGENY.DADONOV, ILYA.LYUBUSHKIN, THOMAS.HARLEY 8473994, 8479351, 8474149, 8480950, 8481581 L, C, R, D, D 5 PHILIP TOMASINO, LUKE EVANGELISTA, THOMAS NOVAK, JEREMY LAUZON, ALEX CARRIER PHILIP.TOMASINO, LUKE.EVANGELISTA, THOMAS.NOVAK, JEREMY.LAUZON, ALEX.CARRIER 8481577, 8482146, 8478438, 8478468, 8478851 C, R, C, D, D SCOTT WEDGEWOOD SCOTT.WEDGEWOOD 8.47581e+06 PHILIP TOMASINO, LUKE EVANGELISTA, THOMAS NOVAK PHILIP.TOMASINO, LUKE.EVANGELISTA, THOMAS.NOVAK 8481577, 8482146, 8478438 3 JEREMY LAUZON, ALEX CARRIER JEREMY.LAUZON, ALEX.CARRIER 8478468, 8478851 2 5v5 4v1 3 5 JAMIE BENN, SAM STEEL, EVGENY DADONOV, ILYA LYUBUSHKIN, THOMAS HARLEY JAMIE.BENN, SAM.STEEL, EVGENY.DADONOV, ILYA.LYUBUSHKIN, THOMAS.HARLEY 8473994, 8479351, 8474149, 8480950, 8481581 L, C, R, D, D JAKE OETTINGER JAKE.OETTINGER 8479979 JAMIE BENN, SAM STEEL, EVGENY DADONOV JAMIE.BENN, SAM.STEEL, EVGENY.DADONOV 8473994, 8479351, 8474149 3 ILYA LYUBUSHKIN, THOMAS HARLEY ILYA.LYUBUSHKIN, THOMAS.HARLEY 8480950, 8481581 2 PHILIP TOMASINO, LUKE EVANGELISTA, THOMAS NOVAK PHILIP.TOMASINO, LUKE.EVANGELISTA, THOMAS.NOVAK 8481577, 8482146, 8478438 3 0.6 JEREMY LAUZON, ALEX CARRIER JEREMY.LAUZON, ALEX.CARRIER 8478468, 8478851 2 SCOTT WEDGEWOOD SCOTT.WEDGEWOOD 8.47581e+06 JAMIE BENN, SAM STEEL, EVGENY DADONOV JAMIE.BENN, SAM.STEEL, EVGENY.DADONOV 8473994, 8479351, 8474149 3 0.6 ILYA LYUBUSHKIN, THOMAS HARLEY ILYA.LYUBUSHKIN, THOMAS.HARLEY 8480950, 8481581 2 JAKE OETTINGER JAKE.OETTINGER 8479979 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.198434 0.183853 1 0.949278 1 1 0.877605 1 0 0 0 1 0.876902 1 1 0.859574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20240200170792 20242025 R 2024020017 2024-10-10 792 3 1105 3505 Ev5 NSH DAL GOAL NSH #90 O'REILLY(1), WRIST , OFF. ZONE, 21 FT.ASSIST: #81 MARCHESSAULT(2) OFF 74 -15 1 0 RYAN O'REILLY RYAN.O'REILLY RYAN.O'REILLY 8.47516e+06 C GOAL SCORER JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT JONATHAN.MARCHESSAULT 8.47654e+06 R PRIMARY ASSIST nan nan nan nan nan nan 2v4 -2 0.833333 0.6 WRIST 0 21.2132 21 45 nan nan 2 -2 4 2 1 0 NSH DAL 6 5 FILIP FORSBERG, GUSTAV NYQUIST, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS, ROMAN JOSI FILIP.FORSBERG, GUSTAV.NYQUIST, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS, ROMAN.JOSI 8476887, 8474679, 8476539, 8475158, 8474564, 8474600 L, C, R, C, C, D JAMIE BENN, EVGENY DADONOV, MATT DUCHENE, ESA LINDELL, ILYA LYUBUSHKIN JAMIE.BENN, EVGENY.DADONOV, MATT.DUCHENE, ESA.LINDELL, ILYA.LYUBUSHKIN 8473994, 8474149, 8475168, 8476902, 8480950 L, R, C, D, D 6 FILIP FORSBERG, GUSTAV NYQUIST, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS, ROMAN JOSI FILIP.FORSBERG, GUSTAV.NYQUIST, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS, ROMAN.JOSI 8476887, 8474679, 8476539, 8475158, 8474564, 8474600 L, C, R, C, C, D nan nan nan FILIP FORSBERG, GUSTAV NYQUIST, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS FILIP.FORSBERG, GUSTAV.NYQUIST, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS 8476887, 8474679, 8476539, 8475158, 8474564 5 ROMAN JOSI ROMAN.JOSI 8474600 1 5vE 4v2 2 5 JAMIE BENN, EVGENY DADONOV, MATT DUCHENE, ESA LINDELL, ILYA LYUBUSHKIN JAMIE.BENN, EVGENY.DADONOV, MATT.DUCHENE, ESA.LINDELL, ILYA.LYUBUSHKIN 8473994, 8474149, 8475168, 8476902, 8480950 L, R, C, D, D JAKE OETTINGER JAKE.OETTINGER 8479979 JAMIE BENN, EVGENY DADONOV, MATT DUCHENE JAMIE.BENN, EVGENY.DADONOV, MATT.DUCHENE 8473994, 8474149, 8475168 3 ESA LINDELL, ILYA LYUBUSHKIN ESA.LINDELL, ILYA.LYUBUSHKIN 8476902, 8480950 2 FILIP FORSBERG, GUSTAV NYQUIST, JONATHAN MARCHESSAULT, RYAN O'REILLY, STEVEN STAMKOS FILIP.FORSBERG, GUSTAV.NYQUIST, JONATHAN.MARCHESSAULT, RYAN.O'REILLY, STEVEN.STAMKOS 8476887, 8474679, 8476539, 8475158, 8474564 5 0.833333 ROMAN JOSI ROMAN.JOSI 8474600 1 nan nan nan JAMIE BENN, EVGENY DADONOV, MATT DUCHENE JAMIE.BENN, EVGENY.DADONOV, MATT.DUCHENE 8473994, 8474149, 8475168 3 0.6 ESA LINDELL, ILYA LYUBUSHKIN ESA.LINDELL, ILYA.LYUBUSHKIN 8476902, 8480950 2 JAKE OETTINGER JAKE.OETTINGER 8479979 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.0762365 0.0762365 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20240200530225 20242025 R 2024020053 2024-10-15 225 1 887 887 5v5 NSH SEA GOAL NSH #47 MCCARRON(1), BACKHAND , OFF. ZONE, 10 FT.ASSISTS: #13 PARSSINEN(1); #45 CARRIER(1) OFF 80 6 0 1 MICHAEL MCCARRON MICHAEL.MCCARRON MICHAEL.MCCARRON 8.47745e+06 R GOAL SCORER JUUSO PARSSINEN JUUSO.PARSSINEN JUUSO.PARSSINEN 8.4817e+06 C PRIMARY ASSIST ALEX CARRIER ALEX.CARRIER ALEX.CARRIER 8.47885e+06 D SECONDARY ASSIST 0v2 -2 0.6 0.6 BACKHAND 0 10.8167 10 33.6901 nan nan 0 -2 2 2 1 0 NSH SEA 5 5 COLTON SISSONS, JUUSO PARSSINEN, MICHAEL MCCARRON, ALEX CARRIER, ROMAN JOSI COLTON.SISSONS, JUUSO.PARSSINEN, MICHAEL.MCCARRON, ALEX.CARRIER, ROMAN.JOSI 8476925, 8481704, 8477446, 8478851, 8474600 C, C, R, D, D CHANDLER STEPHENSON, JADEN SCHWARTZ, OLIVER BJORKSTRAND, ADAM LARSSON, VINCE DUNN CHANDLER.STEPHENSON, JADEN.SCHWARTZ, OLIVER.BJORKSTRAND, ADAM.LARSSON, VINCE.DUNN 8476905, 8475768, 8477416, 8476457, 8478407 C, C, R, D, D 5 COLTON SISSONS, JUUSO PARSSINEN, MICHAEL MCCARRON, ALEX CARRIER, ROMAN JOSI COLTON.SISSONS, JUUSO.PARSSINEN, MICHAEL.MCCARRON, ALEX.CARRIER, ROMAN.JOSI 8476925, 8481704, 8477446, 8478851, 8474600 C, C, R, D, D JUUSE SAROS JUUSE.SAROS 8.47742e+06 COLTON SISSONS, JUUSO PARSSINEN, MICHAEL MCCARRON COLTON.SISSONS, JUUSO.PARSSINEN, MICHAEL.MCCARRON 8476925, 8481704, 8477446 3 ALEX CARRIER, ROMAN JOSI ALEX.CARRIER, ROMAN.JOSI 8478851, 8474600 2 5v5 2v0 2 5 CHANDLER STEPHENSON, JADEN SCHWARTZ, OLIVER BJORKSTRAND, ADAM LARSSON, VINCE DUNN CHANDLER.STEPHENSON, JADEN.SCHWARTZ, OLIVER.BJORKSTRAND, ADAM.LARSSON, VINCE.DUNN 8476905, 8475768, 8477416, 8476457, 8478407 C, C, R, D, D JOEY DACCORD JOEY.DACCORD 8478916 CHANDLER STEPHENSON, JADEN SCHWARTZ, OLIVER BJORKSTRAND CHANDLER.STEPHENSON, JADEN.SCHWARTZ, OLIVER.BJORKSTRAND 8476905, 8475768, 8477416 3 ADAM LARSSON, VINCE DUNN ADAM.LARSSON, VINCE.DUNN 8476457, 8478407 2 COLTON SISSONS, JUUSO PARSSINEN, MICHAEL MCCARRON COLTON.SISSONS, JUUSO.PARSSINEN, MICHAEL.MCCARRON 8476925, 8481704, 8477446 3 0.6 ALEX CARRIER, ROMAN JOSI ALEX.CARRIER, ROMAN.JOSI 8478851, 8474600 2 JUUSE SAROS JUUSE.SAROS 8.47742e+06 CHANDLER STEPHENSON, JADEN SCHWARTZ, OLIVER BJORKSTRAND CHANDLER.STEPHENSON, JADEN.SCHWARTZ, OLIVER.BJORKSTRAND 8476905, 8475768, 8477416 3 0.6 ADAM LARSSON, VINCE DUNN ADAM.LARSSON, VINCE.DUNN 8476457, 8478407 2 JOEY DACCORD JOEY.DACCORD 8478916 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.114337 0.105935 1 0.949278 1 1 0.902697 1 0 0 0 1 0.896915 1 1 0.881481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20240200530253 20242025 R 2024020053 2024-10-15 253 1 1020 1020 5v5 NSH SEA GOAL NSH #82 NOVAK(2), WRIST , OFF. ZONE, 9 FT.ASSISTS: #17 JANKOWSKI(1); #77 EVANGELISTA(2) OFF 85 -9 1 0 THOMAS NOVAK THOMAS.NOVAK THOMAS.NOVAK 8.47844e+06 C GOAL SCORER MARK JANKOWSKI MARK.JANKOWSKI MARK.JANKOWSKI 8.47687e+06 C PRIMARY ASSIST LUKE EVANGELISTA LUKE.EVANGELISTA LUKE.EVANGELISTA 8.48215e+06 R SECONDARY ASSIST 1v2 -1 0.6 0.6 WRIST 0 9.84886 9 66.0375 nan nan 1 -1 2 1 1 0 NSH SEA 5 5 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK, ALEX CARRIER, BRADY SKJEI MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK, ALEX.CARRIER, BRADY.SKJEI 8476873, 8482146, 8478438, 8478851, 8476869 C, R, C, D, D TYE KARTYE, BRANDON TANEV, YANNI GOURDE, WILLIAM BORGEN, RYKER EVANS TYE.KARTYE, BRANDON.TANEV, YANNI.GOURDE, WILLIAM.BORGEN, RYKER.EVANS 8481789, 8479293, 8476826, 8478840, 8482858 L, L, C, D, D 5 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK, ALEX CARRIER, BRADY SKJEI MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK, ALEX.CARRIER, BRADY.SKJEI 8476873, 8482146, 8478438, 8478851, 8476869 C, R, C, D, D JUUSE SAROS JUUSE.SAROS 8.47742e+06 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK 8476873, 8482146, 8478438 3 ALEX CARRIER, BRADY SKJEI ALEX.CARRIER, BRADY.SKJEI 8478851, 8476869 2 5v5 2v1 1 5 TYE KARTYE, BRANDON TANEV, YANNI GOURDE, WILLIAM BORGEN, RYKER EVANS TYE.KARTYE, BRANDON.TANEV, YANNI.GOURDE, WILLIAM.BORGEN, RYKER.EVANS 8481789, 8479293, 8476826, 8478840, 8482858 L, L, C, D, D JOEY DACCORD JOEY.DACCORD 8478916 TYE KARTYE, BRANDON TANEV, YANNI GOURDE TYE.KARTYE, BRANDON.TANEV, YANNI.GOURDE 8481789, 8479293, 8476826 3 WILLIAM BORGEN, RYKER EVANS WILLIAM.BORGEN, RYKER.EVANS 8478840, 8482858 2 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK 8476873, 8482146, 8478438 3 0.6 ALEX CARRIER, BRADY SKJEI ALEX.CARRIER, BRADY.SKJEI 8478851, 8476869 2 JUUSE SAROS JUUSE.SAROS 8.47742e+06 TYE KARTYE, BRANDON TANEV, YANNI GOURDE TYE.KARTYE, BRANDON.TANEV, YANNI.GOURDE 8481789, 8479293, 8476826 3 0.6 WILLIAM BORGEN, RYKER EVANS WILLIAM.BORGEN, RYKER.EVANS 8478840, 8482858 2 JOEY DACCORD JOEY.DACCORD 8478916 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.0637036 0.0590224 1 0.949278 0 1 0.925419 0 0 0 0 1 0.921581 0 1 0.910189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Stats and aggregations

It's very simple to aggregate play-by-play data to the desired level and accounting for teammates or opposition on-ice.

First, start fresh with a new scraper:

scraper = Scraper(game_ids)
play_by_play = scraper.play_by_play # (1)!
  1. We won't strictly use the play-by-play data here, but it will get the scraping started

If you just want game-level individual stats, without accounting for teammates or opposition, just call the stats attribute:

stats = scraper.stats

To see the five "most dangerous" individual games at 5v5 for the Nashville Predators in the 2024-25 season:

conditions = np.logical_and(stats.strength_state == "5v5",
                            stats.team == "NSH")
stats.loc[conditions].sort_values(by="ixg", ascending=False).head(5)
season session game_id game_date player eh_id api_id position team opp_team strength_state toi g g_adj ihdg a1 a2 ixg ixg_adj isf isf_adj ihdsf imsf imsf_adj ihdm iff iff_adj ihdf isb isb_adj icf icf_adj ibs ibs_adj igive itake ihf iht ifow ifol iozfw iozfl inzfw inzfl idzfw idzfl a1_xg a2_xg ipent0 ipent2 ipent4 ipent5 ipent10 ipend0 ipend2 ipend4 ipend5 ipend10 gf ga gf_adj ga_adj hdgf hdga xgf xga xgf_adj xga_adj sf sa sf_adj sa_adj hdsf hdsa ff fa ff_adj fa_adj hdff hdfa cf ca cf_adj ca_adj bsf bsa bsf_adj bsa_adj msf msa msf_adj msa_adj hdmsf hdmsa teammate_block teammate_block_adj hf ht give take ozf nzf dzf fow fol ozfw ozfl nzfw nzfl dzfw dzfl pent0 pent2 pent4 pent5 pent10 pend0 pend2 pend4 pend5 pend10 ozs nzs dzs otf g_p60 g_adj_p60 ihdg_p60 a1_p60 a2_p60 ixg_p60 ixg_adj_p60 isf_p60 isf_adj_p60 ihdsf_p60 imsf_p60 imsf_adj_p60 ihdm_p60 iff_p60 iff_adj_p60 ihdf_p60 isb_p60 isb_adj_p60 icf_p60 icf_adj_p60 ibs_p60 ibs_adj_p60 igive_p60 itake_p60 ihf_p60 iht_p60 a1_xg_p60 a2_xg_p60 ipent0_p60 ipent2_p60 ipent4_p60 ipent5_p60 ipent10_p60 ipend0_p60 ipend2_p60 ipend4_p60 ipend5_p60 ipend10_p60 gf_p60 ga_p60 gf_adj_p60 ga_adj_p60 hdgf_p60 hdga_p60 xgf_p60 xga_p60 xgf_adj_p60 xga_adj_p60 sf_p60 sa_p60 sf_adj_p60 sa_adj_p60 hdsf_p60 hdsa_p60 ff_p60 fa_p60 ff_adj_p60 fa_adj_p60 hdff_p60 hdfa_p60 cf_p60 ca_p60 cf_adj_p60 ca_adj_p60 bsf_p60 bsa_p60 bsf_adj_p60 bsa_adj_p60 msf_p60 msa_p60 msf_adj_p60 msa_adj_p60 hdmsf_p60 hdmsa_p60 teammate_block_p60 teammate_block_adj_p60 hf_p60 ht_p60 give_p60 take_p60 pent0_p60 pent2_p60 pent4_p60 pent5_p60 pent10_p60 pend0_p60 pend2_p60 pend4_p60 pend5_p60 pend10_p60 gf_percent gf_adj_percent hdgf_percent xgf_percent xgf_adj_percent sf_percent sf_adj_percent hdsf_percent ff_percent ff_adj_percent hdff_percent cf_percent cf_adj_percent bsf_percent bsf_adj_percent msf_percent msf_adj_percent hdmsf_percent hf_percent take_percent
20242025 R 2024020502 2024-12-17 LUKE SCHENN LUKE.SCHENN 8474568 D NSH NYR 5v5 15.6 0 0 0 0 0 1.27693 1.2661 7 7.21966 5 1 1.03001 0 8 8.24009 5 0 0 8 8.24009 4 0 0 1 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.55565 0.377318 1.54246 0.385011 13 5 13.4079 4.90646 5 0 16 9 16.4802 8.79975 6 2 16 18 16.4802 8.79975 0 9 0 0 3 4 3.09003 3.88384 1 2 0 0 13 8 0 0 1 6 6 5 8 0 1 2 4 3 3 0 1 0 0 0 0 1 0 1 0 1 2 1 16 0 0 0 0 0 4.91126 4.86963 26.9231 27.7679 19.2308 3.84615 3.96158 0 30.7692 31.6927 19.2308 0 0 30.7692 31.6927 15.3846 0 0 3.84615 11.5385 3.84615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.98325 1.45122 5.93254 1.48081 50 19.2308 51.569 18.871 19.2308 0 61.5385 34.6154 63.3853 33.8452 23.0769 7.69231 61.5385 69.2308 63.3853 33.8452 0 34.6154 0 0 11.5385 15.3846 11.8847 14.9378 3.84615 7.69231 0 0 50 30.7692 0 0 0 3.84615 0 0 0 0 3.84615 0 3.84615 0 0 0 0 0.804798 0.800251 0.722222 0.732098 1 0.64 0.651908 0.75 0.470588 0.651908 0 0 0.428571 0.443087 0.333333 0.619048 0
20242025 R 2024020596 2024-12-31 GUSTAV NYQUIST GUSTAV.NYQUIST 8474679 R NSH MIN 5v5 12.1833 0 0 0 1 0 0.939192 0.950521 5 5.02364 2 0 0 0 5 5.03723 2 1 0 6 5.03723 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0.129814 0 0 0 0 0 0 0 0 0 0 0 1 0 1.0193 0 0 0 1.36526 0.691373 1.39093 0.670766 11 6 11.0718 6.04811 4 2 14 8 13.9885 7.9806 4 2 17 8 13.9885 7.9806 3 0 0 0 3 2 2.88487 1.95159 0 0 0 0 6 3 0 0 3 0 4 4 3 1 2 0 0 3 1 0 1 0 0 0 0 1 0 0 0 2 0 1 12 0 0 0 4.92476 0 4.6253 4.68109 24.6238 24.7402 9.84952 0 0 0 24.6238 24.8072 9.84952 4.92476 0 29.5486 24.8072 0 0 4.92476 0 0 4.92476 0.639305 0 0 0 0 0 0 0 0 0 0 0 4.92476 0 5.0198 0 0 0 6.72359 3.40485 6.84999 3.30336 54.1724 29.5486 54.5262 29.7855 19.699 9.84952 68.9466 39.3981 68.89 39.3025 19.699 9.84952 83.7209 39.3981 68.89 39.3025 14.7743 0 0 0 14.7743 9.84952 14.2073 9.61112 0 0 0 0 29.5486 14.7743 0 0 0 4.92476 0 0 0 0 4.92476 0 0 0 1 1 0 0.663833 0.674653 0.647059 0.646722 0.666667 0.636364 0.636735 0.666667 0.68 0.636735 1 0 0.6 0.596484 0 0.666667 0
20242025 R 2024020714 2025-01-16 RYAN O'REILLY RYAN.O'REILLY 8475158 C NSH CHI 5v5 15.1667 0 0 0 0 0 0.87554 0.816738 3 2.88222 1 2 1.84316 1 5 4.71633 2 0 0 5 4.71633 2 0 0 2 0 1 9 3 5 0 1 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1.0193 0 0 1.26288 1.04497 1.17624 1.08713 7 7 6.68623 7.19895 1 2 11 9 10.3476 9.16662 4 3 16 13 10.3476 9.16662 5 4 0 0 4 2 3.68632 1.94338 3 1 0 0 6 8 0 0 6 4 3 9 4 5 1 1 3 3 0 0 0 0 0 0 0 4 0 0 0 2 0 1 14 0 0 0 0 0 3.46367 3.23105 11.8681 11.4022 3.95604 7.91209 7.29163 3.95604 19.7802 18.658 7.91209 0 0 19.7802 18.658 7.91209 0 0 7.91209 0 3.95604 0 0 0 0 0 0 0 0 0 0 0 0 0 3.95604 0 4.03239 0 0 4.99603 4.13393 4.65327 4.30072 27.6923 27.6923 26.451 28.4794 3.95604 7.91209 43.5165 35.6044 40.9354 36.2635 15.8242 11.8681 63.2967 51.4286 40.9354 36.2635 19.7802 15.8242 0 0 15.8242 7.91209 14.5833 7.68808 11.8681 3.95604 0 0 23.7363 31.6484 0 0 0 0 0 0 0 0 15.8242 0 0 0 0 0 0 0.547212 0.519686 0.5 0.481537 0.333333 0.55 0.530258 0.571429 0.551724 0.530258 0.555556 0 0.666667 0.654799 0.75 0.428571 0
20242025 R 2024020131 2024-10-26 FILIP FORSBERG FILIP.FORSBERG 8476887 L NSH CBJ 5v5 15.0333 0 0 0 0 0 0.835181 0.796475 6 5.8595 1 4 3.81426 0 10 9.64894 1 2 0 12 9.64894 1 0 2 3 4 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1.04392 0 0 1.58445 0.468559 1.50099 0.491889 14 8 13.3936 8.19653 3 1 22 12 20.9376 12.3499 3 1 25 14 20.9376 12.3499 3 2 0 0 8 4 7.60231 4.11664 0 0 0 0 6 5 0 0 5 3 7 7 8 1 4 2 1 4 3 0 1 0 0 0 0 1 0 0 0 3 3 4 10 0 0 0 0 0 3.33332 3.17883 23.9468 23.386 3.99113 15.9645 15.2232 0 39.9113 38.5102 3.99113 7.98226 0 47.8936 38.5102 3.99113 0 7.98226 11.9734 15.9645 0 0 0 0 3.99113 0 0 0 0 3.99113 0 0 0 0 3.99113 0 4.16641 0 0 6.32376 1.87008 5.99063 1.96319 55.8758 31.929 53.4557 32.7134 11.9734 3.99113 87.8049 47.8936 83.5646 49.2901 11.9734 3.99113 99.7783 55.8758 83.5646 49.2901 11.9734 7.98226 0 0 31.929 15.9645 30.3418 16.43 0 0 0 0 23.9468 19.9557 0 0 0 3.99113 0 0 0 0 3.99113 0 0 0 0 0 0 0.77177 0.753176 0.636364 0.620358 0.75 0.647059 0.628992 0.75 0.641026 0.628992 0.6 0 0.666667 0.64872 0 0.545455 0
20242025 R 2024020243 2024-11-11 JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT 8476539 R NSH COL 5v5 14.45 0 0 0 0 0 0.791483 0.822217 4 4.11626 2 2 2.06469 1 6 6.19408 3 2 0 8 6.19408 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.22077 0.720815 1.26349 0.684955 7 6 7.14486 5.80834 2 0 11 13 11.1738 12.4892 5 1 17 19 11.1738 12.4892 6 6 0 0 4 7 4.00807 6.7054 3 1 0 0 5 2 0 0 6 4 2 8 4 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 3 3 1 11 0 0 0 0 0 3.28643 3.41405 16.609 17.0917 8.3045 8.3045 8.57312 4.15225 24.9135 25.7194 12.4567 8.3045 0 33.218 25.7194 0 0 4.15225 4.15225 4.15225 4.15225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.06893 2.993 5.24634 2.8441 29.0657 24.9135 29.6672 24.1177 8.3045 0 45.6747 53.9792 46.3966 51.8583 20.7612 4.15225 70.5882 78.8927 46.3966 51.8583 24.9135 24.9135 0 0 16.609 29.0657 16.6425 27.8425 12.4567 4.15225 0 0 20.7612 8.3045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.628749 0.648462 0.538462 0.55159 1 0.458333 0.472206 0.833333 0.472222 0.472206 0.5 0 0.363636 0.374115 0.75 0.714286 0

If you want anything besides the default options, or if you change your desired aggregation / level of detail, you can reset the data with the prep_stats() method:

scraper.prep_stats(level="game", teammates=True, opposition=True) # (1)!
stats = scraper.stats # (2)!

conditions = np.logical_and(stats.strength_state == "5v5",
                            stats.team == "NSH")
stats.loc[conditions].sort_values(by="ixg", ascending=False).head(5)
  1. Now the individual and on-ice stats are aggregated and account for the teammates and opponents on the ice
  2. You can access the data with the stats attribute
season session game_id game_date player eh_id api_id position team opp_team strength_state forwards forwards_eh_id forwards_api_id defense defense_eh_id defense_api_id own_goalie own_goalie_eh_id own_goalie_api_id opp_forwards opp_forwards_eh_id opp_forwards_api_id opp_defense opp_defense_eh_id opp_defense_api_id opp_goalie opp_goalie_eh_id opp_goalie_api_id toi g g_adj ihdg a1 a2 ixg ixg_adj isf isf_adj ihdsf imsf imsf_adj ihdm iff iff_adj ihdf isb isb_adj icf icf_adj ibs ibs_adj igive itake ihf iht ifow ifol iozfw iozfl inzfw inzfl idzfw idzfl a1_xg a2_xg ipent0 ipent2 ipent4 ipent5 ipent10 ipend0 ipend2 ipend4 ipend5 ipend10 gf ga gf_adj ga_adj hdgf hdga xgf xga xgf_adj xga_adj sf sa sf_adj sa_adj hdsf hdsa ff fa ff_adj fa_adj hdff hdfa cf ca cf_adj ca_adj bsf bsa bsf_adj bsa_adj msf msa msf_adj msa_adj hdmsf hdmsa teammate_block teammate_block_adj hf ht give take ozf nzf dzf fow fol ozfw ozfl nzfw nzfl dzfw dzfl pent0 pent2 pent4 pent5 pent10 pend0 pend2 pend4 pend5 pend10 ozs nzs dzs otf g_p60 g_adj_p60 ihdg_p60 a1_p60 a2_p60 ixg_p60 ixg_adj_p60 isf_p60 isf_adj_p60 ihdsf_p60 imsf_p60 imsf_adj_p60 ihdm_p60 iff_p60 iff_adj_p60 ihdf_p60 isb_p60 isb_adj_p60 icf_p60 icf_adj_p60 ibs_p60 ibs_adj_p60 igive_p60 itake_p60 ihf_p60 iht_p60 a1_xg_p60 a2_xg_p60 ipent0_p60 ipent2_p60 ipent4_p60 ipent5_p60 ipent10_p60 ipend0_p60 ipend2_p60 ipend4_p60 ipend5_p60 ipend10_p60 gf_p60 ga_p60 gf_adj_p60 ga_adj_p60 hdgf_p60 hdga_p60 xgf_p60 xga_p60 xgf_adj_p60 xga_adj_p60 sf_p60 sa_p60 sf_adj_p60 sa_adj_p60 hdsf_p60 hdsa_p60 ff_p60 fa_p60 ff_adj_p60 fa_adj_p60 hdff_p60 hdfa_p60 cf_p60 ca_p60 cf_adj_p60 ca_adj_p60 bsf_p60 bsa_p60 bsf_adj_p60 bsa_adj_p60 msf_p60 msa_p60 msf_adj_p60 msa_adj_p60 hdmsf_p60 hdmsa_p60 teammate_block_p60 teammate_block_adj_p60 hf_p60 ht_p60 give_p60 take_p60 pent0_p60 pent2_p60 pent4_p60 pent5_p60 pent10_p60 pend0_p60 pend2_p60 pend4_p60 pend5_p60 pend10_p60 gf_percent gf_adj_percent hdgf_percent xgf_percent xgf_adj_percent sf_percent sf_adj_percent hdsf_percent ff_percent ff_adj_percent hdff_percent cf_percent cf_adj_percent bsf_percent bsf_adj_percent msf_percent msf_adj_percent hdmsf_percent hf_percent take_percent
20242025 R 2024020502 2024-12-17 LUKE SCHENN LUKE.SCHENN 8474568 D NSH NYR 5v5 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK 8476873, 8482146, 8478438 LUKE SCHENN, MARC DEL GAIZO LUKE.SCHENN, MARC.DEL GAIZO 8474568, 8481743 JUUSE SAROS JUUSE.SAROS 8477424 ALEXIS LAFRENIERE, WILL CUYLLE, FILIP CHYTIL ALEXIS.LAFRENIERE, WILL.CUYLLE, FILIP.CHYTIL 8482109, 8482157, 8480078 BRADEN SCHNEIDER, ZAC JONES BRADEN.SCHNEIDER, ZAC.JONES 8482073, 8481708 IGOR SHESTERKIN IGOR.SHESTERKIN 8478048 0.55 0 0 0 0 0 1.25235 1.24174 6 6.18828 5 0 0 0 6 6.18007 5 0 0 6 6.18007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.25235 0 1.24174 0 6 0 6.18828 0 5 0 6 0 6.18007 0 5 0 6 0 6.18007 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 136.62 135.462 654.545 675.085 545.455 0 0 0 654.545 674.189 545.455 0 0 654.545 674.189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136.62 0 135.462 0 654.545 0 675.085 0 545.455 0 654.545 0 674.189 0 545.455 0 654.545 0 674.189 0 0 0 0 0 0 0 0 0 0 0 0 0 109.091 109.091 0 0 0 109.091 0 0 0 0 109.091 0 109.091 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0.5 0
20242025 R 2024020733 2025-01-18 JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT 8476539 R NSH MIN 5v5 FILIP FORSBERG, JONATHAN MARCHESSAULT, STEVEN STAMKOS FILIP.FORSBERG, JONATHAN.MARCHESSAULT, STEVEN.STAMKOS 8476887, 8476539, 8474564 NICK BLANKENBURG, BRADY SKJEI NICK.BLANKENBURG, BRADY.SKJEI 8483565, 8476869 JUUSE SAROS JUUSE.SAROS 8477424 MATT BOLDY, MARCO ROSSI, MATS ZUCCARELLO MATT.BOLDY, MARCO.ROSSI, MATS.ZUCCARELLO 8481557, 8482079, 8475692 JACOB MIDDLETON, BROCK FABER JACOB.MIDDLETON, BROCK.FABER 8478136, 8482122 MARC-ANDRE FLEURY MARC-ANDRE.FLEURY 8470594 1.28333 0 0 0 0 0 0.686261 0.680445 2 2.17839 2 0 0 0 2 2.16434 2 0 0 2 2.16434 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.15351 0 1.12218 0 4 0 4.19301 0 3 0 4 0 4.16809 0 3 0 5 0 4.16809 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 32.0849 31.813 93.5065 101.847 93.5065 0 0 0 93.5065 101.19 93.5065 0 0 93.5065 101.19 0 0 0 0 0 46.7532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53.9302 0 52.4655 0 187.013 0 196.037 0 140.26 0 187.013 0 194.872 0 140.26 0 233.766 0 194.872 0 46.7532 0 0 0 0 0 0 0 0 0 0 0 0 46.7532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
20242025 R 2024020596 2024-12-31 GUSTAV NYQUIST GUSTAV.NYQUIST 8474679 R NSH MIN 5v5 VINNIE HINOSTROZA, GUSTAV NYQUIST, RYAN O'REILLY VINNIE.HINOSTROZA, GUSTAV.NYQUIST, RYAN.O'REILLY 8476994, 8474679, 8475158 JUSTIN BARRON, ROMAN JOSI JUSTIN.BARRON, ROMAN.JOSI 8482111, 8474600 JUSTUS ANNUNEN JUSTUS.ANNUNEN 8481020 JOEL ERIKSSON EK, RYAN HARTMAN, MARCUS JOHANSSON JOEL.ERIKSSON EK, RYAN.HARTMAN, MARCUS.JOHANSSON 8478493, 8477451, 8475149 JARED SPURGEON, DECLAN CHISHOLM JARED.SPURGEON, DECLAN.CHISHOLM 8474716, 8480990 FILIP GUSTAVSSON FILIP.GUSTAVSSON 8479406 0.533333 0 0 0 0 0 0.666942 0.672692 1 0.970473 1 0 0 0 1 0.971688 1 0 0 1 0.971688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.782939 0 0.78969 0 3 0 2.91142 0 2 0 4 0 3.88675 0 2 0 4 0 3.88675 0 0 0 0 0 1 0 0.971688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75.031 75.6779 112.5 109.178 112.5 0 0 0 112.5 109.315 112.5 0 0 112.5 109.315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88.0806 0 88.8401 0 337.5 0 327.534 0 225 0 450 0 437.26 0 225 0 450 0 437.26 0 0 0 0 0 112.5 0 109.315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0
20242025 R 2024020927 2025-02-25 MICHAEL MCCARRON MICHAEL.MCCARRON 8477446 C NSH FLA 5v5 COLTON SISSONS, COLE SMITH, MICHAEL MCCARRON COLTON.SISSONS, COLE.SMITH, MICHAEL.MCCARRON 8476925, 8482062, 8477446 ANDREAS ENGLUND, NICK BLANKENBURG ANDREAS.ENGLUND, NICK.BLANKENBURG 8477971, 8483565 JUUSE SAROS JUUSE.SAROS 8477424 SAM REINHART, ALEKSANDER BARKOV, CARTER VERHAEGHE SAM.REINHART, ALEKSANDER.BARKOV, CARTER.VERHAEGHE 8477933, 8477493, 8477409 AARON EKBLAD, GUSTAV FORSLING AARON.EKBLAD, GUSTAV.FORSLING 8477932, 8478055 SPENCER KNIGHT SPENCER.KNIGHT 8481519 0.316667 1 0.949278 1 0 0 0.625077 0.579144 2 1.80539 2 0 0 0 2 1.79383 2 0 0 2 1.79383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0.949278 0 1 0 0.642365 0 0.595161 0 3 0 2.70809 0 2 0 3 0 2.69074 0 2 0 3 0 2.69074 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189.474 179.863 189.474 0 0 118.436 109.733 378.947 342.075 378.947 0 0 0 378.947 339.883 378.947 0 0 378.947 339.883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189.474 0 179.863 0 189.474 0 121.711 0 112.767 0 568.421 0 513.112 0 378.947 0 568.421 0 509.825 0 378.947 0 568.421 0 509.825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
20242025 R 2024020714 2025-01-16 RYAN O'REILLY RYAN.O'REILLY 8475158 C NSH CHI 5v5 VINNIE HINOSTROZA, GUSTAV NYQUIST, RYAN O'REILLY VINNIE.HINOSTROZA, GUSTAV.NYQUIST, RYAN.O'REILLY 8476994, 8474679, 8475158 LUKE SCHENN, BRADY SKJEI LUKE.SCHENN, BRADY.SKJEI 8474568, 8476869 JUUSE SAROS JUUSE.SAROS 8477424 TYLER BERTUZZI, FRANK NAZAR, CONNOR BEDARD TYLER.BERTUZZI, FRANK.NAZAR, CONNOR.BEDARD 8477479, 8483493, 8484144 LOUIS CREVIER, ALEX VLASIC LOUIS.CREVIER, ALEX.VLASIC 8481806, 8481568 ARVID SODERBLOM ARVID.SODERBLOM 8482821 0.733333 0 0 0 0 0 0.594502 0.550816 0 0 0 2 1.84316 1 2 1.84316 1 0 0 2 1.84316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.594502 0 0.550816 0 0 0 0 0 0 0 2 0 1.84316 0 1 0 2 0 1.84316 0 0 0 0 0 2 0 1.84316 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 48.6411 45.0668 0 0 0 163.636 150.804 81.8182 163.636 150.804 81.8182 0 0 163.636 150.804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.6411 0 45.0668 0 0 0 0 0 0 0 163.636 0 150.804 0 81.8182 0 163.636 0 150.804 0 0 0 0 0 163.636 0 150.804 0 81.8182 0 0 0 0 81.8182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0

Functionality is very similar for forward lines:

scraper.prep_lines(position="f") # (1)!
forward_lines = scraper.lines

conditions = np.logical_and.reduce([forward_lines.toi >= 2,
                                    forward_lines.strength_state == "5v5",
                                    forward_lines.team == "NSH"])
forward_lines.loc[conditions].sort_values(by="xgf_percent", ascending=False).head(5)
  1. Not strictly necessary, the forwards are the default for line aggregations
season session game_id game_date team opp_team strength_state forwards forwards_eh_id forwards_api_id toi gf ga gf_adj ga_adj hdgf hdga xgf xga xgf_adj xga_adj sf sa sf_adj sa_adj hdsf hdsa ff fa ff_adj fa_adj hdff hdfa cf ca cf_adj ca_adj bsf bsa bsf_adj bsa_adj msf msa msf_adj msa_adj hdmsf hdmsa teammate_block teammate_block_adj hf ht give take ozf nzf dzf fow fol ozfw ozfl nzfw nzfl dzfw dzfl pent0 pent2 pent4 pent5 pent10 pend0 pend2 pend4 pend5 pend10 gf_p60 ga_p60 gf_adj_p60 ga_adj_p60 hdgf_p60 hdga_p60 xgf_p60 xga_p60 xgf_adj_p60 xga_adj_p60 sf_p60 sa_p60 sf_adj_p60 sa_adj_p60 hdsf_p60 hdsa_p60 ff_p60 fa_p60 ff_adj_p60 fa_adj_p60 hdff_p60 hdfa_p60 cf_p60 ca_p60 cf_adj_p60 ca_adj_p60 bsf_p60 bsa_p60 bsf_adj_p60 bsa_adj_p60 msf_p60 msa_p60 msf_adj_p60 msa_adj_p60 hdmsf_p60 hdmsa_p60 teammate_block_p60 teammate_block_adj_p60 hf_p60 ht_p60 give_p60 take_p60 pent0_p60 pent2_p60 pent4_p60 pent5_p60 pent10_p60 pend0_p60 pend2_p60 pend4_p60 pend5_p60 pend10_p60 gf_percent gf_adj_percent hdgf_percent xgf_percent xgf_adj_percent sf_percent sf_adj_percent hdsf_percent ff_percent ff_adj_percent hdff_percent cf_percent cf_adj_percent bsf_percent bsf_adj_percent msf_percent msf_adj_percent hdmsf_percent hf_percent take_percent
20242025 R 2024020384 2024-11-30 NSH MIN 5v5 MARK JANKOWSKI, JONATHAN MARCHESSAULT, STEVEN STAMKOS MARK.JANKOWSKI, JONATHAN.MARCHESSAULT, STEVEN.STAMKOS 8476873, 8476539, 8474564 2.06667 0 0 0 0 0 0 0.0941004 0 0.0987857 0 0 0 0 0 0 0 1 0 1.02916 0 0 0 2 2 1.02916 0 1 2 0 0 1 0 1.02916 0 0 0 0 0 1 0 1 2 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.73195 0 2.86797 0 0 0 0 0 0 0 29.0323 0 29.8788 0 0 0 58.0645 58.0645 29.8788 0 29.0323 58.0645 0 0 29.0323 0 29.8788 0 0 0 0 0 29.0323 0 29.0323 58.0645 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0.5 1 0.333333 0 1 1 0 1 0.666667
20242025 R 2024020911 2025-02-23 NSH NJD 5v5 MARK JANKOWSKI, LUKE EVANGELISTA, THOMAS NOVAK MARK.JANKOWSKI, LUKE.EVANGELISTA, THOMAS.NOVAK 8476873, 8482146, 8478438 4.6 0 0 0 0 0 0 0.0641515 0 0.0594374 0 0 0 0 0 0 0 1 0 0.896915 0 0 0 2 1 0.896915 0 1 1 0 0 1 0 0.896915 0 0 0 0 0 4 5 1 0 1 1 2 2 2 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.836758 0 0.77527 0 0 0 0 0 0 0 13.0435 0 11.6989 0 0 0 26.087 13.0435 11.6989 0 13.0435 13.0435 0 0 13.0435 0 11.6989 0 0 0 0 0 52.1739 65.2174 13.0435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0.666667 1 0.5 0 1 1 0 0.444444 0
20242025 R 2024020017 2024-10-10 NSH DAL 5v5 COLTON SISSONS, PHILIP TOMASINO, LUKE EVANGELISTA COLTON.SISSONS, PHILIP.TOMASINO, LUKE.EVANGELISTA 8476925, 8481577, 8482146 2.83333 0 0 0 0 0 0 0.250486 0 0.232783 0 2 0 1.82812 0 0 0 6 0 5.53102 0 1 0 6 1 5.53102 0 0 1 0 0 4 0 3.71252 0 1 0 0 0 0 1 2 2 1 1 0 2 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 5.30442 0 4.92952 0 42.3529 0 38.7131 0 0 0 127.059 0 117.127 0 21.1765 0 127.059 21.1765 117.127 0 0 21.1765 0 0 84.7059 0 78.6181 0 21.1765 0 0 0 0 21.1765 42.3529 42.3529 0 21.1765 0 0 0 0 21.1765 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0.857143 1 0 0 1 1 1 0 0.5
20242025 R 2024020141 2024-10-28 NSH TBL 5v5 COLTON SISSONS, MARK JANKOWSKI, LUKE EVANGELISTA COLTON.SISSONS, MARK.JANKOWSKI, LUKE.EVANGELISTA 8476925, 8476873, 8482146 3.28333 0 0 0 0 0 0 0.259619 0 0.272545 0 3 0 3.0737 0 1 0 3 0 3.08748 0 1 0 3 0 3.08748 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 3 0 2 3 2 1 2 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.7443 0 4.98052 0 54.8223 0 56.1691 0 18.2741 0 54.8223 0 56.4209 0 18.2741 0 54.8223 0 56.4209 0 0 0 0 0 0 0 0 0 0 0 0 0 18.2741 0 0 0 0 18.2741 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0
20242025 R 2024020619 2025-01-03 NSH VAN 5v5 GUSTAV NYQUIST, LUKE EVANGELISTA, RYAN O'REILLY GUSTAV.NYQUIST, LUKE.EVANGELISTA, RYAN.O'REILLY 8474679, 8482146, 8475158 3.66667 0 0 0 0 0 0 0.186509 0 0.202576 0 1 0 1.08766 0 1 0 2 0 2.18601 0 1 0 4 2 2.18601 0 2 2 0 0 1 0 1.09301 0 0 0 0 0 1 3 1 0 1 2 3 2 4 0 1 0 2 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.05197 0 3.31488 0 16.3636 0 17.798 0 16.3636 0 32.7273 0 35.7711 0 16.3636 0 65.4545 32.7273 35.7711 0 32.7273 32.7273 0 0 16.3636 0 17.8856 0 0 0 0 0 16.3636 49.0909 16.3636 0 0 16.3636 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0.666667 1 0.5 0 1 1 0 0.25 0

And defensive pairings:

scraper.prep_lines(position="d") # (1)!
defensive_pairings = scraper.lines # (2)!

conditions = np.logical_and.reduce([defensive_pairings.toi >= 2,
                                    defensive_pairings.strength_state == "5v5",
                                    defensive_pairings.team == "NSH"])
defensive_pairings.loc[conditions].sort_values(by="xgf_percent", ascending=False).head(5)
  1. Resets the saved line stats to be defensive lines, rather than forward lines
  2. You can access the new line stats with the lines attribute
season session game_id game_date team opp_team strength_state defense defense_eh_id defense_api_id toi gf ga gf_adj ga_adj hdgf hdga xgf xga xgf_adj xga_adj sf sa sf_adj sa_adj hdsf hdsa ff fa ff_adj fa_adj hdff hdfa cf ca cf_adj ca_adj bsf bsa bsf_adj bsa_adj msf msa msf_adj msa_adj hdmsf hdmsa teammate_block teammate_block_adj hf ht give take ozf nzf dzf fow fol ozfw ozfl nzfw nzfl dzfw dzfl pent0 pent2 pent4 pent5 pent10 pend0 pend2 pend4 pend5 pend10 gf_p60 ga_p60 gf_adj_p60 ga_adj_p60 hdgf_p60 hdga_p60 xgf_p60 xga_p60 xgf_adj_p60 xga_adj_p60 sf_p60 sa_p60 sf_adj_p60 sa_adj_p60 hdsf_p60 hdsa_p60 ff_p60 fa_p60 ff_adj_p60 fa_adj_p60 hdff_p60 hdfa_p60 cf_p60 ca_p60 cf_adj_p60 ca_adj_p60 bsf_p60 bsa_p60 bsf_adj_p60 bsa_adj_p60 msf_p60 msa_p60 msf_adj_p60 msa_adj_p60 hdmsf_p60 hdmsa_p60 teammate_block_p60 teammate_block_adj_p60 hf_p60 ht_p60 give_p60 take_p60 pent0_p60 pent2_p60 pent4_p60 pent5_p60 pent10_p60 pend0_p60 pend2_p60 pend4_p60 pend5_p60 pend10_p60 gf_percent gf_adj_percent hdgf_percent xgf_percent xgf_adj_percent sf_percent sf_adj_percent hdsf_percent ff_percent ff_adj_percent hdff_percent cf_percent cf_adj_percent bsf_percent bsf_adj_percent msf_percent msf_adj_percent hdmsf_percent hf_percent take_percent
20242025 R 2024020647 2025-01-07 NSH WPG 5v5 LUKE SCHENN, ROMAN JOSI LUKE.SCHENN, ROMAN.JOSI 8474568, 8474600 2.75 0 0 0 0 0 0 0.145956 0 0.147214 0 1 0 0.924307 0 1 0 1 0 0.929429 0 1 0 1 1 0.929429 0 0 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.18449 0 3.21194 0 21.8182 0 20.1667 0 21.8182 0 21.8182 0 20.2784 0 21.8182 0 21.8182 21.8182 20.2784 0 0 21.8182 0 0 0 0 0 0 0 0 0 0 43.6364 21.8182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0.5 1 0 0 0 0 0 0.666667 0
20242025 R 2024020965 2025-03-02 NSH NYR 5v5 MARC DEL GAIZO, SPENCER STASTNEY MARC.DEL GAIZO, SPENCER.STASTNEY 8481743, 8481056 2.73333 0 0 0 0 0 0 0.783608 0 0.790365 0 6 0 5.54584 0 1 0 8 0 7.43543 0 1 0 9 2 7.43543 0 1 2 0 0 2 0 1.85886 0 0 0 0 0 1 1 0 1 3 0 2 3 2 3 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.2012 0 17.3495 0 131.707 0 121.738 0 21.9512 0 175.61 0 163.217 0 21.9512 0 197.561 43.9024 163.217 0 21.9512 43.9024 0 0 43.9024 0 40.8042 0 0 0 0 0 21.9512 21.9512 0 21.9512 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0.818182 1 0.333333 0 1 1 0 0.5 1
20242025 R 2024020166 2024-10-31 NSH EDM 5v5 ALEX CARRIER, BRADY SKJEI ALEX.CARRIER, BRADY.SKJEI 8478851, 8476869 2.15 0 0 0 0 0 0 0.101649 0 0.0941799 0 1 0 0.877605 0 1 0 2 0 1.7538 0 1 0 2 0 1.7538 0 0 0 0 0 1 0 0.876902 0 0 0 0 0 0 2 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.83673 0 2.62828 0 27.907 0 24.4913 0 27.907 0 55.814 0 48.9434 0 27.907 0 55.814 0 48.9434 0 0 0 0 0 27.907 0 24.4717 0 0 0 0 0 0 55.814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0
20242025 R 2024020141 2024-10-28 NSH TBL 5v5 ROMAN JOSI, BRADY SKJEI ROMAN.JOSI, BRADY.SKJEI 8474600, 8476869 4.1 0 0 0 0 0 0 0.0113616 0 0.0119273 0 1 0 1.02457 0 0 0 1 0 1.02916 0 0 0 1 1 1.02916 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 3 0 3 3 3 3 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.166267 0 0.174546 0 14.6341 0 14.9937 0 0 0 14.6341 0 15.0609 0 0 0 14.6341 14.6341 15.0609 0 0 14.6341 0 0 0 0 0 0 0 0 0 0 0 0 29.2683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0.5 1 0 0 0 0 0 0 0
20242025 R 2024020166 2024-10-31 NSH EDM 5v5 MARC DEL GAIZO, ROMAN JOSI MARC.DEL GAIZO, ROMAN.JOSI 8481743, 8474600 2.36667 0 0 0 0 0 0 0.0088804 0 0.00822784 0 1 0 0.877605 0 0 0 1 0 0.876902 0 0 0 1 1 0.876902 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.225137 0 0.208593 0 25.3521 0 22.2491 0 0 0 25.3521 0 22.2313 0 0 0 25.3521 25.3521 22.2313 0 0 25.3521 0 0 0 0 0 0 0 0 0 0 25.3521 0 0 25.3521 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0.5 1 0 0 0 0 0 1 1

As well as team statistics:

team_stats = scraper.team_stats # (1)!

team_stats.sort_values(by="toi", ascending=False).head(5)
  1. None of the above is necessary with the team_stats, if you're fine with the default parameters, which are aggregated to the game level and account for strength state
season session game_id game_date team opp_team strength_state toi gf ga gf_adj ga_adj hdgf hdga xgf xga xgf_adj xga_adj sf sa sf_adj sa_adj hdsf hdsa ff fa ff_adj fa_adj hdff hdfa cf ca cf_adj ca_adj bsf bsa bsf_adj bsa_adj msf msa msf_adj msa_adj hdmsf hdmsa teammate_block hf ht give take ozf nzf dzf fow fol ozfw ozfl nzfw nzfl dzfw dzfl pent0 pent2 pent4 pent5 pent10 pend0 pend2 pend4 pend5 pend10 ozs nzs dzs otf gf_p60 ga_p60 gf_adj_p60 ga_adj_p60 hdgf_p60 hdga_p60 xgf_p60 xga_p60 xgf_adj_p60 xga_adj_p60 sf_p60 sa_p60 sf_adj_p60 sa_adj_p60 hdsf_p60 hdsa_p60 ff_p60 fa_p60 ff_adj_p60 fa_adj_p60 hdff_p60 hdfa_p60 cf_p60 ca_p60 cf_adj_p60 ca_adj_p60 bsf_p60 bsa_p60 bsf_adj_p60 bsa_adj_p60 msf_p60 msa_p60 msf_adj_p60 msa_adj_p60 hdmsf_p60 hdmsa_p60 teammate_block_p60 teammate_block_adj_p60 hf_p60 ht_p60 give_p60 take_p60 pent0_p60 pent2_p60 pent4_p60 pent5_p60 pent10_p60 pend0_p60 pend2_p60 pend4_p60 pend5_p60 pend10_p60 gf_percent gf_adj_percent hdgf_percent xgf_percent xgf_adj_percent sf_percent sf_adj_percent hdsf_percent ff_percent ff_adj_percent hdff_percent cf_percent cf_adj_percent bsf_percent bsf_adj_percent msf_percent msf_adj_percent hdmsf_percent hf_percent take_percent
20242025 R 2024020898 2025-02-22 COL NSH 5v5 55.4667 1 2 1.04392 1.90891 0 1 2.38155 1.86148 2.46109 1.78853 30 16 30.4124 15.4718 5 3 40 28 40.6491 27.3062 9 5 61 37 40.6491 27.3062 20 9 0 0 10 12 10.1192 11.8996 4 2 1 23 15 18 7 10 16 18 22 23 5 7 8 5 9 11 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1.08173 2.16346 1.12924 2.06492 0 1.08173 2.5762 2.01362 2.66224 1.93471 32.4519 17.3077 32.8981 16.7364 5.40865 3.24519 43.2692 30.2885 43.9714 29.5379 9.73558 5.40865 65.9856 40.024 43.9714 29.5379 21.6346 9.73558 0 0 10.8173 12.9808 10.9462 12.8722 4.32692 2.16346 1.08173 0 24.8798 16.226 19.4712 7.57212 0 0 0 0 0 0 1.08173 0 0 0 0.333333 0.353531 0 0.561285 0.579131 0.652174 0.662807 0.625 0.588235 0.598175 0.642857 0.622449 0.598175 0.689655 0 0.454545 0.45957 0.666667 0.605263 0.28
20242025 R 2024020898 2025-02-22 NSH COL 5v5 55.4667 2 1 1.90891 1.04392 1 0 1.86148 2.38155 1.78853 2.46109 16 30 15.4718 30.4124 3 5 28 40 27.3062 40.6491 5 9 38 60 27.3062 40.6491 9 20 0 0 12 10 11.8996 10.1192 2 4 1 15 23 11 9 14 10 22 23 22 7 5 5 8 11 9 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2.16346 1.08173 2.06492 1.12924 1.08173 0 2.01362 2.5762 1.93471 2.66224 17.3077 32.4519 16.7364 32.8981 3.24519 5.40865 30.2885 43.2692 29.5379 43.9714 5.40865 9.73558 41.1058 64.9038 29.5379 43.9714 9.73558 21.6346 0 0 12.9808 10.8173 12.8722 10.9462 2.16346 4.32692 1.08173 0 16.226 24.8798 11.899 9.73558 0 1.08173 0 0 0 0 0 0 0 0 0.666667 0.646469 1 0.438715 0.420869 0.347826 0.337193 0.375 0.411765 0.401825 0.357143 0.387755 0.401825 0.310345 0 0.545455 0.54043 0.333333 0.394737 0.45
20242025 R 2024020973 2025-03-04 BOS NSH 5v5 54.8667 3 5 2.85819 5.20749 2 2 1.38183 3.19279 1.292 3.39842 19 28 17.8027 29.708 5 3 31 42 29.0186 45.0912 7 8 47 59 29.0186 45.0912 13 17 0 0 12 14 11.2953 15.2545 2 5 3 36 15 19 2 14 18 16 24 23 7 8 9 10 8 5 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3.28068 5.4678 3.1256 5.69471 2.18712 2.18712 1.51111 3.49151 1.41288 3.71637 20.7776 30.6197 19.4683 32.4875 5.4678 3.28068 33.9004 45.9295 31.7336 49.31 7.65492 8.74848 51.3973 64.52 31.7336 49.31 14.2163 18.5905 0 0 13.1227 15.3098 12.3521 16.6818 2.18712 5.4678 3.28068 0 39.3682 16.4034 20.7776 2.18712 0 0 0 0 0 0 2.18712 0 0 0 0.375 0.354364 0.5 0.302064 0.275455 0.404255 0.374709 0.625 0.424658 0.391562 0.466667 0.443396 0.391562 0.433333 0 0.461538 0.425438 0.285714 0.705882 0.0952381
20242025 R 2024020973 2025-03-04 NSH BOS 5v5 54.8667 5 3 5.20749 2.85819 2 2 3.19279 1.38183 3.39842 1.292 28 19 29.708 17.8027 3 5 42 31 45.0912 29.0186 8 7 60 44 45.0912 29.0186 17 13 0 0 14 12 15.2545 11.2953 5 2 1 15 36 14 6 16 20 10 23 24 8 7 10 9 5 8 0 2 0 0 0 0 0 0 0 0 0 0 0 0 5.4678 3.28068 5.69471 3.1256 2.18712 2.18712 3.49151 1.51111 3.71637 1.41288 30.6197 20.7776 32.4875 19.4683 3.28068 5.4678 45.9295 33.9004 49.31 31.7336 8.74848 7.65492 65.6136 48.1166 49.31 31.7336 18.5905 14.2163 0 0 15.3098 13.1227 16.6818 12.3521 5.4678 2.18712 1.09356 0 16.4034 39.3682 15.3098 6.56136 0 2.18712 0 0 0 0 0 0 0 0 0.625 0.645636 0.5 0.697936 0.724545 0.595745 0.625291 0.375 0.575342 0.608438 0.533333 0.576923 0.608438 0.566667 0 0.538462 0.574562 0.714286 0.294118 0.3
20242025 R 2024020701 2025-01-14 NSH VGK 5v5 54.35 4 2 3.90389 2.03859 1 1 1.65334 1.76442 1.61089 1.78688 20 17 20.8316 15.9695 3 2 27 28 27.8996 26.5734 6 3 45 39 27.8996 26.5734 18 11 0 0 7 11 7.14613 10.562 3 1 0 17 18 32 4 14 20 16 25 20 7 7 10 7 8 6 0 2 0 0 0 0 1 0 0 0 0 0 0 0 4.41582 2.20791 4.30972 2.25052 1.10396 1.10396 1.82521 1.94785 1.77835 1.97264 22.0791 18.7672 22.9972 17.6296 3.31187 2.20791 29.8068 30.9108 30.7999 29.3359 6.62374 3.31187 49.678 43.0543 30.7999 29.3359 19.8712 12.1435 0 0 7.72769 12.1435 7.88901 11.6599 3.31187 1.10396 0 0 18.7672 19.8712 35.3266 4.41582 0 2.20791 0 0 0 0 1.10396 0 0 0 0.666667 0.656946 0.5 0.483749 0.474102 0.540541 0.56606 0.6 0.490909 0.512173 0.666667 0.535714 0.512173 0.62069 0 0.388889 0.403552 0.75 0.485714 0.111111

Standings

You can also use a Season object to return that season's standings:

from chickenstats.chicken_nhl import Season

season = Season(2024)
standings = season.standings # (1)!

standings.head(5)
  1. Standings data are returned for that moment in time - i.e., data will be updated automatically as games are played
season date team team_name conference division games_played points points_pct wins regulation_wins shootout_wins losses ot_losses shootout_losses ties win_pct regulation_win_pct streak_code streak_count goals_for goals_against goals_for_pct goal_differential goal_differential_pct home_games_played home_points home_goals_for home_goals_against home_goal_differential home_wins home_losses home_ot_losses home_ties home_regulation_wins road_games_played road_points road_goals_for road_goals_against road_goal_differential road_wins road_losses road_ot_losses road_ties road_regulation_wins l10_points l10_goals_for l10_goals_against l10_goal_differential l10_wins l10_losses l10_ot_losses l10_ties l10_regulation_wins team_logo wildcard_sequence waivers_sequence
20242025 2025-03-01 WPG Winnipeg Jets Western Central 60 87 0.725 42 34 1 15 3 nan 0 0.7 0.566667 L 1 213 141 3.55 72 1.2 31 49 113 63 50 23 5 3 0 20 29 38 100 78 22 19 10 0 0 14 18 38 19 19 9 1 0 0 6 https://assets.nhle.com/logos/nhl/svg/WPG_light.svg 0 32
20242025 2025-03-01 WSH Washington Capitals Eastern Metropolitan 59 84 0.711864 38 33 0 13 8 nan 0 0.644068 0.559322 L 2 214 154 3.62712 60 1.01695 30 42 109 83 26 18 6 6 0 16 29 42 105 71 34 20 7 2 0 17 13 43 36 7 5 2 3 0 5 https://assets.nhle.com/logos/nhl/svg/WSH_secondary_light.svg 0 31
20242025 2025-03-01 DAL Dallas Stars Western Central 59 78 0.661017 38 32 2 19 2 nan 0 0.644068 0.542373 W 1 200 152 3.38983 48 0.813559 29 43 100 66 34 21 7 1 0 18 30 35 100 86 14 17 12 1 0 14 15 45 32 13 7 2 1 0 6 https://assets.nhle.com/logos/nhl/svg/DAL_light.svg 0 30
20242025 2025-03-01 VGK Vegas Golden Knights Western Pacific 59 76 0.644068 35 32 1 18 6 nan 0 0.59322 0.542373 W 1 197 166 3.33898 31 0.525424 30 45 107 75 32 21 6 3 0 20 29 31 90 91 -1 14 12 3 0 12 12 30 28 2 5 3 2 0 5 https://assets.nhle.com/logos/nhl/svg/VGK_light.svg 0 29
20242025 2025-03-01 TOR Toronto Maple Leafs Eastern Atlantic 59 76 0.644068 37 31 0 20 2 nan 0 0.627119 0.525424 W 4 188 167 3.18644 21 0.355932 31 40 95 84 11 20 11 0 0 17 28 36 93 83 10 17 9 2 0 14 14 35 25 10 7 3 0 0 6 https://assets.nhle.com/logos/nhl/svg/TOR_light.svg 0 28

Data persistence

The Scraper object will scrape any data that has not already been retrieved from the source - any data that has been scraped since initialization is stored in the object. This saves time and is friendlier to the sources.

The below snippet is a simple illustration. The changes dataframe is built using data from the shifts endpoint, (1) as well as the HTML and API rosters endpoints. After calling the changes property, the underlying data are available, more or less instantaneously.

  1. Really the shifts endpoints - the home and visiting teams are scraped from separate URLs
changes = scraper.changes # (1)!

rosters = scraper.rosters # (2)!
shifts = scraper.shifts 
  1. This property scrapes shifts and rosters data, then stores the data for later retrieval
  2. Later calls to the rosters or shifts properties returns the previously-scraped data stored by the Scraper object, instead of being re-scraped from the sources

The reverse is also true - previously-scraped data stored by the Scraper object is later used if required by other properties. Continuing the above example, the HTML_events property will leverage the rosters data previously scraped by the changes property:

changes = scraper.changes

html_events = scraper.html_events # (1)!
  1. Calling the html_events property after scraping rosters data will improve the processing speed because the user has already scraped and processed a portion of the data

Users aren't expected to know which properties scrape which data sources. Optimized scraping and storage is the default behavior.

The design provides significant user benefits, in addition to reducing unnecessary hits to data sources and improving processing and scraping speed. The cons of the increased memory usage are more than outweighed.

Advanced usage

It's possible to access the various underlying data from the different endpoints using the Scraper object, including:

  • Play-by-play events from API and HTML endpoints
  • Rosters from API and HTML endpoints
  • Shifts from the HTML endpoint
  • Change events, built from the (HTML) shifts and (combined) rosters data
Note

Each of the below code snippets assume you'll have initialized a Scraper object with a game ID, or list of game IDs:

from chickenstats.chicken_nhl import Season, Scraper

season = Season(2024)
nsh_schedule = season.schedule("NSH")

condition = nsh_schedule.game_state == "OFF"
game_ids = nsh_schedule.loc[condition].game_id.tolist()

scraper = Scraper(game_ids)

Play-by-play events from the API endpoint:

api_events = scraper.api_events

conditions = np.logical_and(api_events.event == "GOAL",
                            api_events.event_team == "NSH")

api_events.loc[conditions].head(5)
season session game_id event_idx period period_type period_seconds game_seconds event_team event event_code description coords_x coords_y zone player_1 player_1_eh_id player_1_position player_1_type player_1_api_id player_1_team_jersey player_2 player_2_eh_id player_2_position player_2_type player_2_api_id player_2_team_jersey player_3 player_3_eh_id player_3_position player_3_type player_3_api_id player_3_team_jersey strength shot_type miss_reason opp_goalie opp_goalie_eh_id opp_goalie_api_id opp_goalie_team_jersey event_team_id stoppage_reason stoppage_reason_secondary penalty_type penalty_reason penalty_duration home_team_defending_side version
20242025 R 2024020017 355 2 REG 210 1410 NSH GOAL 505 nan -60 6 O FILIP FORSBERG FILIP.FORSBERG L GOAL SCORER 8.47689e+06 NSH9 JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT R PRIMARY ASSIST 8.47654e+06 NSH81 ROMAN JOSI ROMAN.JOSI D SECONDARY ASSIST 8.4746e+06 NSH59 1451 SNAP nan JAKE OETTINGER JAKE.OETTINGER 8479979 DAL29 18 nan nan nan nan nan right 1
20242025 R 2024020017 635 3 REG 277 2677 NSH GOAL 505 nan 82 -2 O THOMAS NOVAK THOMAS.NOVAK C GOAL SCORER 8.47844e+06 NSH82 LUKE EVANGELISTA LUKE.EVANGELISTA R PRIMARY ASSIST 8.48215e+06 NSH77 FILIP FORSBERG FILIP.FORSBERG L SECONDARY ASSIST 8.47689e+06 NSH9 1551 BACKHAND nan JAKE OETTINGER JAKE.OETTINGER 8479979 DAL29 18 nan nan nan nan nan left 1
20242025 R 2024020017 815 3 REG 1105 3505 NSH GOAL 505 nan 74 -15 O RYAN O'REILLY RYAN.O'REILLY C GOAL SCORER 8.47516e+06 NSH90 JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT R PRIMARY ASSIST 8.47654e+06 NSH81 nan nan nan nan nan nan 1560 WRIST nan JAKE OETTINGER JAKE.OETTINGER 8479979 DAL29 18 nan nan nan nan nan left 1
20242025 R 2024020053 229 1 REG 887 887 NSH GOAL 505 nan 80 6 O MICHAEL MCCARRON MICHAEL.MCCARRON R GOAL SCORER 8.47745e+06 NSH47 JUUSO PARSSINEN JUUSO.PARSSINEN C PRIMARY ASSIST 8.4817e+06 NSH13 ALEX CARRIER ALEX.CARRIER D SECONDARY ASSIST 8.47885e+06 NSH45 1551 BACKHAND nan JOEY DACCORD JOEY.DACCORD 8478916 SEA35 18 nan nan nan nan nan left 1
20242025 R 2024020053 257 1 REG 1020 1020 NSH GOAL 505 nan 85 -9 O THOMAS NOVAK THOMAS.NOVAK C GOAL SCORER 8.47844e+06 NSH82 MARK JANKOWSKI MARK.JANKOWSKI C PRIMARY ASSIST 8.47687e+06 NSH17 LUKE EVANGELISTA LUKE.EVANGELISTA R SECONDARY ASSIST 8.48215e+06 NSH77 1551 WRIST nan JOEY DACCORD JOEY.DACCORD 8478916 SEA35 18 nan nan nan nan nan left 1

Play-by-play events from the HTML endpoint:

html_events = scraper.html_events

conditions = np.logical_and(html_events.event == "GOAL",
                            html_events.event_team == "NSH")

html_events.loc[conditions].head(5)
season session game_id event_idx period period_time period_seconds game_seconds event_team event description player_1 player_1_eh_id player_1_position player_2 player_2_eh_id player_2_position player_3 player_3_eh_id player_3_position zone shot_type pbp_distance penalty_length penalty strength away_skaters home_skaters version
20242025 R 2024020017 129 2 3:30 210 1410 NSH GOAL NSH #9 FORSBERG(1), SNAP , OFF. ZONE, 29 FT.ASSISTS: #81 MARCHESSAULT(1); #59 JOSI(1) FILIP FORSBERG FILIP.FORSBERG L JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT R ROMAN JOSI ROMAN.JOSI D OFF SNAP 29 nan nan PP 10C, 15C, 23D, 46D, 29G 90C, 91C, 81R, 9L, 59D, 41G 1
20242025 R 2024020017 239 3 4:37 277 2677 NSH GOAL NSH #82 NOVAK(1), BACKHAND , OFF. ZONE, 7 FT.ASSISTS: #77 EVANGELISTA(1); #9 FORSBERG(1) THOMAS NOVAK THOMAS.NOVAK C LUKE EVANGELISTA LUKE.EVANGELISTA R FILIP FORSBERG FILIP.FORSBERG L OFF BACKHAND 7 nan nan EV 18C, 63R, 14L, 46D, 55D, 29G 26C, 82C, 77R, 3D, 45D, 41G 1
20242025 R 2024020017 308 3 18:25 1105 3505 NSH GOAL NSH #90 O'REILLY(1), WRIST , OFF. ZONE, 21 FT.ASSIST: #81 MARCHESSAULT(2) RYAN O'REILLY RYAN.O'REILLY C JONATHAN MARCHESSAULT JONATHAN.MARCHESSAULT R nan nan nan OFF WRIST 21 nan nan EV 95C, 63R, 14L, 23D, 46D, 29G 14C, 90C, 91C, 81R, 9L, 59D 1
20242025 R 2024020053 99 1 14:47 887 887 NSH GOAL NSH #47 MCCARRON(1), BACKHAND , OFF. ZONE, 10 FT.ASSISTS: #13 PARSSINEN(1); #45 CARRIER(1) MICHAEL MCCARRON MICHAEL.MCCARRON R JUUSO PARSSINEN JUUSO.PARSSINEN C ALEX CARRIER ALEX.CARRIER D OFF BACKHAND 10 nan nan EV 9C, 17C, 22R, 6D, 29D, 35G 10C, 13C, 47R, 45D, 59D, 74G 1
20242025 R 2024020053 114 1 17:00 1020 1020 NSH GOAL NSH #82 NOVAK(2), WRIST , OFF. ZONE, 9 FT.ASSISTS: #17 JANKOWSKI(1); #77 EVANGELISTA(2) THOMAS NOVAK THOMAS.NOVAK C MARK JANKOWSKI MARK.JANKOWSKI C LUKE EVANGELISTA LUKE.EVANGELISTA R OFF WRIST 9 nan nan EV 37C, 12L, 13L, 3D, 41D, 35G 17C, 82C, 77R, 45D, 76D, 74G 1

Roster data from the API endpoint:

api_rosters = scraper.api_rosters

condition = api_rosters.team == "NSH"
api_rosters.loc[condition].head(5)
season session game_id team team_venue player_name eh_id api_id team_jersey jersey position first_name last_name headshot_url
20242025 R 2024020017 NSH HOME ALEX CARRIER ALEX.CARRIER 8478851 NSH45 45 D ALEXANDRE CARRIER https://assets.nhle.com/mugs/nhl/20242025/NSH/8478851.png
20242025 R 2024020017 NSH HOME BRADY SKJEI BRADY.SKJEI 8476869 NSH76 76 D BRADY SKJEI https://assets.nhle.com/mugs/nhl/20242025/NSH/8476869.png
20242025 R 2024020017 NSH HOME COLE SMITH COLE.SMITH 8482062 NSH36 36 L COLE SMITH https://assets.nhle.com/mugs/nhl/20242025/NSH/8482062.png
20242025 R 2024020017 NSH HOME COLTON SISSONS COLTON.SISSONS 8476925 NSH10 10 C COLTON SISSONS https://assets.nhle.com/mugs/nhl/20242025/NSH/8476925.png
20242025 R 2024020017 NSH HOME DANTE FABBRO DANTE.FABBRO 8479371 NSH57 57 D DANTE FABBRO https://assets.nhle.com/mugs/nhl/20242025/NSH/8479371.png

Roster data from the HTML endpoint:

html_rosters = scraper.html_rosters

condition = html_rosters.team == "NSH"
html_rosters.loc[condition].head(5)
season session game_id team team_name team_venue player_name eh_id team_jersey jersey position starter status
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME ALEX CARRIER ALEX.CARRIER NSH45 45 D 0 ACTIVE
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME BRADY SKJEI BRADY.SKJEI NSH76 76 D 1 ACTIVE
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME COLE SMITH COLE.SMITH NSH36 36 L 1 ACTIVE
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME COLTON SISSONS COLTON.SISSONS NSH10 10 C 0 ACTIVE
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME DANTE FABBRO DANTE.FABBRO NSH57 57 D 0 ACTIVE

Combined roster data:

rosters = scraper.rosters 

condition = rosters.team == "NSH"
rosters.loc[condition].head(5)
season session game_id team team_name team_venue player_name api_id eh_id team_jersey jersey position starter status headshot_url
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME ALEX CARRIER 8.47885e+06 ALEX.CARRIER NSH45 45 D 0 ACTIVE https://assets.nhle.com/mugs/nhl/20242025/NSH/8478851.png
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME BRADY SKJEI 8.47687e+06 BRADY.SKJEI NSH76 76 D 1 ACTIVE https://assets.nhle.com/mugs/nhl/20242025/NSH/8476869.png
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME COLE SMITH 8.48206e+06 COLE.SMITH NSH36 36 L 1 ACTIVE https://assets.nhle.com/mugs/nhl/20242025/NSH/8482062.png
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME COLTON SISSONS 8.47692e+06 COLTON.SISSONS NSH10 10 C 0 ACTIVE https://assets.nhle.com/mugs/nhl/20242025/NSH/8476925.png
20242025 R 2024020017 NSH NASHVILLE PREDATORS HOME DANTE FABBRO 8.47937e+06 DANTE.FABBRO NSH57 57 D 0 ACTIVE https://assets.nhle.com/mugs/nhl/20242025/NSH/8479371.png

Shifts data from the HTML endpoint:

shifts = scraper.shifts

condition = shifts.team == "NSH"
shifts.loc[condition].head(5)
season session game_id team team_name player_name eh_id api_id team_jersey position jersey shift_count period start_time end_time duration start_time_seconds end_time_seconds duration_seconds shift_start shift_end goalie is_home is_away team_venue
20242025 R 2024020017 NSH NASHVILLE PREDATORS LUKE SCHENN LUKE.SCHENN 8474568 NSH2 D 2 1 1 4:01 4:39 00:38 241 279 38 4:01 / 15:59 4:39 / 15:21 0 1 0 HOME
20242025 R 2024020017 NSH NASHVILLE PREDATORS LUKE SCHENN LUKE.SCHENN 8474568 NSH2 D 2 2 1 6:19 6:57 00:38 379 417 38 6:19 / 13:41 6:57 / 13:03 0 1 0 HOME
20242025 R 2024020017 NSH NASHVILLE PREDATORS LUKE SCHENN LUKE.SCHENN 8474568 NSH2 D 2 3 1 8:01 8:34 00:33 481 514 33 8:01 / 11:59 8:34 / 11:26 0 1 0 HOME
20242025 R 2024020017 NSH NASHVILLE PREDATORS LUKE SCHENN LUKE.SCHENN 8474568 NSH2 D 2 4 1 9:09 9:52 00:43 549 592 43 9:09 / 10:51 9:52 / 10:08 0 1 0 HOME
20242025 R 2024020017 NSH NASHVILLE PREDATORS LUKE SCHENN LUKE.SCHENN 8474568 NSH2 D 2 5 1 11:20 11:58 00:38 680 718 38 11:20 / 8:40 11:58 / 8:02 0 1 0 HOME

Changes data built from the HTML shifts:

changes = scraper.changes

condition = changes.event_team == "NSH"
changes.loc[condition].head(5)
season session game_id event_team event event_type description period period_seconds game_seconds change_on_count change_off_count change_on change_on_jersey change_on_eh_id change_on_api_id change_on_positions change_off change_off_jersey change_off_eh_id change_off_api_id change_off_positions change_on_forwards_count change_off_forwards_count change_on_forwards change_on_forwards_jersey change_on_forwards_eh_id change_on_forwards_api_id change_off_forwards change_off_forwards_jersey change_off_forwards_eh_id change_off_forwards_api_id change_on_defense_count change_off_defense_count change_on_defense change_on_defense_jersey change_on_defense_eh_id change_on_defense_api_id change_off_defense change_off_defense_jersey change_off_defense_eh_id change_off_defense_api_id change_on_goalie_count change_off_goalie_count change_on_goalie change_on_goalie_jersey change_on_goalie_eh_id change_on_goalie_api_id change_off_goalie change_off_goalie_jersey change_off_goalie_eh_id change_off_goalie_api_id is_home is_away team_venue game_date home_team away_team version sort_value opp_team home_forwards_eh_id home_forwards_api_id home_forwards home_forwards_positions home_defense_eh_id home_defense_api_id home_defense home_defense_positions home_goalie_eh_id home_goalie_api_id home_goalie away_forwards_eh_id away_forwards_api_id away_forwards away_forwards_positions away_defense_eh_id away_defense_api_id away_defense away_defense_positions away_goalie_eh_id away_goalie_api_id away_goalie home_score home_score_diff away_score away_score_diff score_state score_diff event_idx event_length home_on_eh_id home_on_api_id home_on home_on_positions away_on_eh_id away_on_api_id away_on away_on_positions home_skaters away_skaters home_forwards_count home_defense_count home_forwards_percent away_forwards_count away_defense_count away_forwards_percent strength_state event_team_skaters teammates_eh_id teammates_api_id teammates teammates_positions forwards_eh_id forwards_api_id forwards forwards_count forwards_percent defense_eh_id defense_api_id defense defense_count own_goalie_eh_id own_goalie_api_id own_goalie opp_strength_state opp_score_state opp_score_diff opp_team_skaters opp_team_on_eh_id opp_team_on_api_id opp_team_on opp_team_on_positions opp_forwards_eh_id opp_forwards_api_id opp_forwards opp_forwards_count opp_forwards_percent opp_defense_eh_id opp_defense_api_id opp_defense opp_defense_count opp_goalie_eh_id opp_goalie_api_id opp_goalie event_on_1 event_on_2 event_on_3 event_on_4 event_on_5 event_on_6 event_on_1_eh_id event_on_2_eh_id event_on_3_eh_id event_on_4_eh_id event_on_5_eh_id event_on_6_eh_id event_on_1_api_id event_on_2_api_id event_on_3_api_id event_on_4_api_id event_on_5_api_id event_on_6_api_id event_on_1_pos event_on_2_pos event_on_3_pos event_on_4_pos event_on_5_pos event_on_6_pos change_on_1 change_on_2 change_on_3 change_on_4 change_on_5 change_on_6 change_on_1_eh_id change_on_2_eh_id change_on_3_eh_id change_on_4_eh_id change_on_5_eh_id change_on_6_eh_id change_on_1_api_id change_on_2_api_id change_on_3_api_id change_on_4_api_id change_on_5_api_id change_on_6_api_id change_on_1_pos change_on_2_pos change_on_3_pos change_on_4_pos change_on_5_pos change_on_6_pos coords_x coords_y zone_start block change chl fac give goal hit miss penl shot stop take fenwick corsi hd_goal hd_shot hd_miss hd_fenwick ozf nzf dzf ozc dzc nzc otf pen0 pen2 pen4 pen5 pen10 teammate_block id opp_on_1 opp_on_2 opp_on_3 opp_on_4 opp_on_5 opp_on_6 opp_on_1_eh_id opp_on_2_eh_id opp_on_3_eh_id opp_on_4_eh_id opp_on_5_eh_id opp_on_6_eh_id opp_on_1_api_id opp_on_2_api_id opp_on_3_api_id opp_on_4_api_id opp_on_5_api_id opp_on_6_api_id opp_on_1_pos opp_on_2_pos opp_on_3_pos opp_on_4_pos opp_on_5_pos opp_on_6_pos change_off_1 change_off_1_eh_id change_off_1_api_id change_off_1_pos change_off_2 change_off_2_eh_id change_off_2_api_id change_off_2_pos change_off_3 change_off_4 change_off_3_eh_id change_off_4_eh_id change_off_3_api_id change_off_4_api_id change_off_3_pos change_off_4_pos change_off_5 change_off_5_eh_id change_off_5_api_id change_off_5_pos change_off_6 change_off_6_eh_id change_off_6_api_id change_off_6_pos event_on_7 event_on_7_eh_id event_on_7_api_id event_on_7_pos opp_on_7 opp_on_7_eh_id opp_on_7_api_id opp_on_7_pos
20242025 R 2024020017 NSH CHANGE HOME CHANGE PLAYERS ON: MARK JANKOWSKI, COLE SMITH, SCOTT WEDGEWOOD, MICHAEL MCCARRON, ROMAN JOSI, BRADY SKJEI 1 0 0 6 0 MARK JANKOWSKI, COLE SMITH, SCOTT WEDGEWOOD, MICHAEL MCCARRON, ROMAN JOSI, BRADY SKJEI NSH17, NSH36, NSH41, NSH47, NSH59, NSH76 MARK.JANKOWSKI, COLE.SMITH, SCOTT.WEDGEWOOD, MICHAEL.MCCARRON, ROMAN.JOSI, BRADY.SKJEI 8476873, 8482062, 8475809, 8477446, 8474600, 8476869 C, L, G, R, D, D nan nan nan nan nan 3 0 MARK JANKOWSKI, COLE SMITH, MICHAEL MCCARRON NSH17, NSH36, NSH47 MARK.JANKOWSKI, COLE.SMITH, MICHAEL.MCCARRON 8476873, 8482062, 8477446 nan nan nan nan 2 0 ROMAN JOSI, BRADY SKJEI NSH59, NSH76 ROMAN.JOSI, BRADY.SKJEI 8474600, 8476869 nan nan nan nan 1 0 SCOTT WEDGEWOOD NSH41 SCOTT.WEDGEWOOD 8.47581e+06 nan nan nan nan 1 0 HOME 2024-10-10 NSH DAL 1 8 DAL ['MARK.JANKOWSKI', 'COLE.SMITH', 'MICHAEL.MCCARRON'] ['8476873', '8482062', '8477446'] ['MARK JANKOWSKI', 'COLE SMITH', 'MICHAEL MCCARRON'] ['C', 'L', 'R'] ['ROMAN.JOSI', 'BRADY.SKJEI'] ['8474600', '8476869'] ['ROMAN JOSI', 'BRADY SKJEI'] ['D', 'D'] ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] [] [] [] [] [] [] [] [] [] [] [] 0 0 0 0 0v0 0 5 0 ['MARK.JANKOWSKI', 'COLE.SMITH', 'MICHAEL.MCCARRON', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8476873', '8482062', '8477446', '8474600', '8476869'] ['MARK JANKOWSKI', 'COLE SMITH', 'MICHAEL MCCARRON', 'ROMAN JOSI', 'BRADY SKJEI'] ['C', 'L', 'R', 'D', 'D'] [] [] [] [] 5 0 3 2 0.6 0 0 0 5vE 5 ['MARK.JANKOWSKI', 'COLE.SMITH', 'MICHAEL.MCCARRON', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8476873', '8482062', '8477446', '8474600', '8476869'] ['MARK JANKOWSKI', 'COLE SMITH', 'MICHAEL MCCARRON', 'ROMAN JOSI', 'BRADY SKJEI'] ['C', 'L', 'R', 'D', 'D'] ['MARK.JANKOWSKI', 'COLE.SMITH', 'MICHAEL.MCCARRON'] ['8476873', '8482062', '8477446'] ['MARK JANKOWSKI', 'COLE SMITH', 'MICHAEL MCCARRON'] 3 0.6 ['ROMAN.JOSI', 'BRADY.SKJEI'] ['8474600', '8476869'] ['ROMAN JOSI', 'BRADY SKJEI'] 2 ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] Ev5 0v0 0 0 [] [] [] [] [] [] [] 0 0 [] [] [] 0 [] [] [] MARK JANKOWSKI COLE SMITH MICHAEL MCCARRON ROMAN JOSI BRADY SKJEI SCOTT WEDGEWOOD MARK.JANKOWSKI COLE.SMITH MICHAEL.MCCARRON ROMAN.JOSI BRADY.SKJEI SCOTT.WEDGEWOOD 8476873 8482062 8477446 8474600 8476869 8475809 C L R D D G MARK JANKOWSKI COLE SMITH SCOTT WEDGEWOOD MICHAEL MCCARRON ROMAN JOSI BRADY SKJEI MARK.JANKOWSKI COLE.SMITH SCOTT.WEDGEWOOD MICHAEL.MCCARRON ROMAN.JOSI BRADY.SKJEI 8476873 8.48206e+06 8.47581e+06 8.47745e+06 8.4746e+06 8.47687e+06 C L G R D D 0 0 NEU 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 20240200170005 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
20242025 R 2024020017 NSH CHANGE HOME CHANGE PLAYERS ON: ALEX CARRIER / PLAYERS OFF: COLE SMITH 1 45 45 1 1 ALEX CARRIER NSH45 ALEX.CARRIER 8478851 D COLE SMITH NSH36 COLE.SMITH 8482062 L 0 1 nan nan nan nan COLE SMITH NSH36 COLE.SMITH 8.48206e+06 1 0 ALEX CARRIER NSH45 ALEX.CARRIER 8478851 nan nan nan nan 0 0 nan nan nan nan nan nan nan nan 1 0 HOME 2024-10-10 NSH DAL 1 8 DAL ['MARK.JANKOWSKI', 'MICHAEL.MCCARRON'] ['8476873', '8477446'] ['MARK JANKOWSKI', 'MICHAEL MCCARRON'] ['C', 'R'] ['ALEX.CARRIER', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8478851', '8474600', '8476869'] ['ALEX CARRIER', 'ROMAN JOSI', 'BRADY SKJEI'] ['D', 'D', 'D'] ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] ['JASON.ROBERTSON', 'WYATT.JOHNSTON', 'EVGENY.DADONOV'] ['8480027', '8482740', '8474149'] ['JASON ROBERTSON', 'WYATT JOHNSTON', 'EVGENY DADONOV'] ['L', 'C', 'R'] ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] ['D', 'D'] ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] 0 0 0 0 0v0 0 14 0 ['MARK.JANKOWSKI', 'MICHAEL.MCCARRON', 'ALEX.CARRIER', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8476873', '8477446', '8478851', '8474600', '8476869'] ['MARK JANKOWSKI', 'MICHAEL MCCARRON', 'ALEX CARRIER', 'ROMAN JOSI', 'BRADY SKJEI'] ['C', 'R', 'D', 'D', 'D'] ['JASON.ROBERTSON', 'WYATT.JOHNSTON', 'EVGENY.DADONOV', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480027', '8482740', '8474149', '8480036', '8481581'] ['JASON ROBERTSON', 'WYATT JOHNSTON', 'EVGENY DADONOV', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['L', 'C', 'R', 'D', 'D'] 5 5 2 3 0.4 3 2 0.6 5v5 5 ['MARK.JANKOWSKI', 'MICHAEL.MCCARRON', 'ALEX.CARRIER', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8476873', '8477446', '8478851', '8474600', '8476869'] ['MARK JANKOWSKI', 'MICHAEL MCCARRON', 'ALEX CARRIER', 'ROMAN JOSI', 'BRADY SKJEI'] ['C', 'R', 'D', 'D', 'D'] ['MARK.JANKOWSKI', 'MICHAEL.MCCARRON'] ['8476873', '8477446'] ['MARK JANKOWSKI', 'MICHAEL MCCARRON'] 2 0.4 ['ALEX.CARRIER', 'ROMAN.JOSI', 'BRADY.SKJEI'] ['8478851', '8474600', '8476869'] ['ALEX CARRIER', 'ROMAN JOSI', 'BRADY SKJEI'] 3 ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] 5v5 0v0 0 5 ['JASON.ROBERTSON', 'WYATT.JOHNSTON', 'EVGENY.DADONOV', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480027', '8482740', '8474149', '8480036', '8481581'] ['JASON ROBERTSON', 'WYATT JOHNSTON', 'EVGENY DADONOV', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['L', 'C', 'R', 'D', 'D'] ['JASON.ROBERTSON', 'WYATT.JOHNSTON', 'EVGENY.DADONOV'] ['8480027', '8482740', '8474149'] ['JASON ROBERTSON', 'WYATT JOHNSTON', 'EVGENY DADONOV'] 3 0.6 ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] 2 ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] MARK JANKOWSKI MICHAEL MCCARRON ALEX CARRIER ROMAN JOSI BRADY SKJEI SCOTT WEDGEWOOD MARK.JANKOWSKI MICHAEL.MCCARRON ALEX.CARRIER ROMAN.JOSI BRADY.SKJEI SCOTT.WEDGEWOOD 8476873 8477446 8478851 8474600 8476869 8475809 C R D D D G ALEX CARRIER nan nan nan nan nan ALEX.CARRIER nan nan nan nan nan 8478851 nan nan nan nan nan D nan nan nan nan nan nan nan OTF 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 20240200170014 JASON ROBERTSON WYATT JOHNSTON EVGENY DADONOV MIRO HEISKANEN THOMAS HARLEY JAKE OETTINGER JASON.ROBERTSON WYATT.JOHNSTON EVGENY.DADONOV MIRO.HEISKANEN THOMAS.HARLEY JAKE.OETTINGER 8.48003e+06 8.48274e+06 8.47415e+06 8.48004e+06 8.48158e+06 8.47998e+06 L C R D D G COLE SMITH COLE.SMITH 8.48206e+06 L nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
20242025 R 2024020017 NSH CHANGE HOME CHANGE PLAYERS ON: JEREMY LAUZON, FILIP FORSBERG / PLAYERS OFF: MARK JANKOWSKI, ROMAN JOSI 1 46 46 2 2 JEREMY LAUZON, FILIP FORSBERG NSH3, NSH9 JEREMY.LAUZON, FILIP.FORSBERG 8478468, 8476887 D, L MARK JANKOWSKI, ROMAN JOSI NSH17, NSH59 MARK.JANKOWSKI, ROMAN.JOSI 8476873, 8474600 C, D 1 1 FILIP FORSBERG NSH9 FILIP.FORSBERG 8476887 MARK JANKOWSKI NSH17 MARK.JANKOWSKI 8.47687e+06 1 1 JEREMY LAUZON NSH3 JEREMY.LAUZON 8478468 ROMAN JOSI NSH59 ROMAN.JOSI 8.4746e+06 0 0 nan nan nan nan nan nan nan nan 1 0 HOME 2024-10-10 NSH DAL 1 8 DAL ['FILIP.FORSBERG', 'MICHAEL.MCCARRON'] ['8476887', '8477446'] ['FILIP FORSBERG', 'MICHAEL MCCARRON'] ['L', 'R'] ['JEREMY.LAUZON', 'ALEX.CARRIER', 'BRADY.SKJEI'] ['8478468', '8478851', '8476869'] ['JEREMY LAUZON', 'ALEX CARRIER', 'BRADY SKJEI'] ['D', 'D', 'D'] ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'WYATT.JOHNSTON'] ['8482702', '8480027', '8482740'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'WYATT JOHNSTON'] ['C', 'L', 'C'] ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] ['D', 'D'] ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] 0 0 0 0 0v0 0 16 1 ['FILIP.FORSBERG', 'MICHAEL.MCCARRON', 'JEREMY.LAUZON', 'ALEX.CARRIER', 'BRADY.SKJEI'] ['8476887', '8477446', '8478468', '8478851', '8476869'] ['FILIP FORSBERG', 'MICHAEL MCCARRON', 'JEREMY LAUZON', 'ALEX CARRIER', 'BRADY SKJEI'] ['L', 'R', 'D', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'WYATT.JOHNSTON', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8482740', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'WYATT JOHNSTON', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] 5 5 2 3 0.4 3 2 0.6 5v5 5 ['FILIP.FORSBERG', 'MICHAEL.MCCARRON', 'JEREMY.LAUZON', 'ALEX.CARRIER', 'BRADY.SKJEI'] ['8476887', '8477446', '8478468', '8478851', '8476869'] ['FILIP FORSBERG', 'MICHAEL MCCARRON', 'JEREMY LAUZON', 'ALEX CARRIER', 'BRADY SKJEI'] ['L', 'R', 'D', 'D', 'D'] ['FILIP.FORSBERG', 'MICHAEL.MCCARRON'] ['8476887', '8477446'] ['FILIP FORSBERG', 'MICHAEL MCCARRON'] 2 0.4 ['JEREMY.LAUZON', 'ALEX.CARRIER', 'BRADY.SKJEI'] ['8478468', '8478851', '8476869'] ['JEREMY LAUZON', 'ALEX CARRIER', 'BRADY SKJEI'] 3 ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] 5v5 0v0 0 5 ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'WYATT.JOHNSTON', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8482740', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'WYATT JOHNSTON', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'WYATT.JOHNSTON'] ['8482702', '8480027', '8482740'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'WYATT JOHNSTON'] 3 0.6 ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] 2 ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] FILIP FORSBERG MICHAEL MCCARRON JEREMY LAUZON ALEX CARRIER BRADY SKJEI SCOTT WEDGEWOOD FILIP.FORSBERG MICHAEL.MCCARRON JEREMY.LAUZON ALEX.CARRIER BRADY.SKJEI SCOTT.WEDGEWOOD 8476887 8477446 8478468 8478851 8476869 8475809 L R D D D G JEREMY LAUZON FILIP FORSBERG nan nan nan nan JEREMY.LAUZON FILIP.FORSBERG nan nan nan nan 8478468 8.47689e+06 nan nan nan nan D L nan nan nan nan nan nan OTF 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 20240200170016 LOGAN STANKOVEN JASON ROBERTSON WYATT JOHNSTON MIRO HEISKANEN THOMAS HARLEY JAKE OETTINGER LOGAN.STANKOVEN JASON.ROBERTSON WYATT.JOHNSTON MIRO.HEISKANEN THOMAS.HARLEY JAKE.OETTINGER 8.4827e+06 8.48003e+06 8.48274e+06 8.48004e+06 8.48158e+06 8.47998e+06 C L C D D G MARK JANKOWSKI MARK.JANKOWSKI 8.47687e+06 C ROMAN JOSI ROMAN.JOSI 8.4746e+06 D nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
20242025 R 2024020017 NSH CHANGE HOME CHANGE PLAYERS ON: GUSTAV NYQUIST / PLAYERS OFF: BRADY SKJEI 1 48 48 1 1 GUSTAV NYQUIST NSH14 GUSTAV.NYQUIST 8474679 C BRADY SKJEI NSH76 BRADY.SKJEI 8476869 D 1 0 GUSTAV NYQUIST NSH14 GUSTAV.NYQUIST 8474679 nan nan nan nan 0 1 nan nan nan nan BRADY SKJEI NSH76 BRADY.SKJEI 8.47687e+06 0 0 nan nan nan nan nan nan nan nan 1 0 HOME 2024-10-10 NSH DAL 1 8 DAL ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', 'MICHAEL.MCCARRON'] ['8476887', '8474679', '8477446'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', 'MICHAEL MCCARRON'] ['L', 'C', 'R'] ['JEREMY.LAUZON', 'ALEX.CARRIER'] ['8478468', '8478851'] ['JEREMY LAUZON', 'ALEX CARRIER'] ['D', 'D'] ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ'] ['8482702', '8480027', '8478449'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ'] ['C', 'L', 'C'] ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] ['D', 'D'] ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] 0 0 0 0 0v0 0 18 4 ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', 'MICHAEL.MCCARRON', 'JEREMY.LAUZON', 'ALEX.CARRIER'] ['8476887', '8474679', '8477446', '8478468', '8478851'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', 'MICHAEL MCCARRON', 'JEREMY LAUZON', 'ALEX CARRIER'] ['L', 'C', 'R', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8478449', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] 5 5 3 2 0.6 3 2 0.6 5v5 5 ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', 'MICHAEL.MCCARRON', 'JEREMY.LAUZON', 'ALEX.CARRIER'] ['8476887', '8474679', '8477446', '8478468', '8478851'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', 'MICHAEL MCCARRON', 'JEREMY LAUZON', 'ALEX CARRIER'] ['L', 'C', 'R', 'D', 'D'] ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', 'MICHAEL.MCCARRON'] ['8476887', '8474679', '8477446'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', 'MICHAEL MCCARRON'] 3 0.6 ['JEREMY.LAUZON', 'ALEX.CARRIER'] ['8478468', '8478851'] ['JEREMY LAUZON', 'ALEX CARRIER'] 2 ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] 5v5 0v0 0 5 ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8478449', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ'] ['8482702', '8480027', '8478449'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ'] 3 0.6 ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] 2 ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] FILIP FORSBERG GUSTAV NYQUIST MICHAEL MCCARRON JEREMY LAUZON ALEX CARRIER SCOTT WEDGEWOOD FILIP.FORSBERG GUSTAV.NYQUIST MICHAEL.MCCARRON JEREMY.LAUZON ALEX.CARRIER SCOTT.WEDGEWOOD 8476887 8474679 8477446 8478468 8478851 8475809 L C R D D G GUSTAV NYQUIST nan nan nan nan nan GUSTAV.NYQUIST nan nan nan nan nan 8474679 nan nan nan nan nan C nan nan nan nan nan nan nan OTF 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 20240200170018 LOGAN STANKOVEN JASON ROBERTSON ROOPE HINTZ MIRO HEISKANEN THOMAS HARLEY JAKE OETTINGER LOGAN.STANKOVEN JASON.ROBERTSON ROOPE.HINTZ MIRO.HEISKANEN THOMAS.HARLEY JAKE.OETTINGER 8.4827e+06 8.48003e+06 8.47845e+06 8.48004e+06 8.48158e+06 8.47998e+06 C L C D D G BRADY SKJEI BRADY.SKJEI 8.47687e+06 D nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
20242025 R 2024020017 NSH CHANGE HOME CHANGE PLAYERS ON: RYAN O'REILLY / PLAYERS OFF: MICHAEL MCCARRON 1 55 55 1 1 RYAN O'REILLY NSH90 RYAN.O'REILLY 8475158 C MICHAEL MCCARRON NSH47 MICHAEL.MCCARRON 8477446 R 1 1 RYAN O'REILLY NSH90 RYAN.O'REILLY 8475158 MICHAEL MCCARRON NSH47 MICHAEL.MCCARRON 8.47745e+06 0 0 nan nan nan nan nan nan nan nan 0 0 nan nan nan nan nan nan nan nan 1 0 HOME 2024-10-10 NSH DAL 1 8 DAL ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', "RYAN.O'REILLY"] ['8476887', '8474679', '8475158'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', "RYAN O'REILLY"] ['L', 'C', 'C'] ['JEREMY.LAUZON', 'ALEX.CARRIER'] ['8478468', '8478851'] ['JEREMY LAUZON', 'ALEX CARRIER'] ['D', 'D'] ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ'] ['8482702', '8480027', '8478449'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ'] ['C', 'L', 'C'] ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] ['D', 'D'] ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] 0 0 0 0 0v0 0 21 0 ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', "RYAN.O'REILLY", 'JEREMY.LAUZON', 'ALEX.CARRIER'] ['8476887', '8474679', '8475158', '8478468', '8478851'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', "RYAN O'REILLY", 'JEREMY LAUZON', 'ALEX CARRIER'] ['L', 'C', 'C', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8478449', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] 5 5 3 2 0.6 3 2 0.6 5v5 5 ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', "RYAN.O'REILLY", 'JEREMY.LAUZON', 'ALEX.CARRIER'] ['8476887', '8474679', '8475158', '8478468', '8478851'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', "RYAN O'REILLY", 'JEREMY LAUZON', 'ALEX CARRIER'] ['L', 'C', 'C', 'D', 'D'] ['FILIP.FORSBERG', 'GUSTAV.NYQUIST', "RYAN.O'REILLY"] ['8476887', '8474679', '8475158'] ['FILIP FORSBERG', 'GUSTAV NYQUIST', "RYAN O'REILLY"] 3 0.6 ['JEREMY.LAUZON', 'ALEX.CARRIER'] ['8478468', '8478851'] ['JEREMY LAUZON', 'ALEX CARRIER'] 2 ['SCOTT.WEDGEWOOD'] ['8475809'] ['SCOTT WEDGEWOOD'] 5v5 0v0 0 5 ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ', 'MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8482702', '8480027', '8478449', '8480036', '8481581'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ', 'MIRO HEISKANEN', 'THOMAS HARLEY'] ['C', 'L', 'C', 'D', 'D'] ['LOGAN.STANKOVEN', 'JASON.ROBERTSON', 'ROOPE.HINTZ'] ['8482702', '8480027', '8478449'] ['LOGAN STANKOVEN', 'JASON ROBERTSON', 'ROOPE HINTZ'] 3 0.6 ['MIRO.HEISKANEN', 'THOMAS.HARLEY'] ['8480036', '8481581'] ['MIRO HEISKANEN', 'THOMAS HARLEY'] 2 ['JAKE.OETTINGER'] ['8479979'] ['JAKE OETTINGER'] FILIP FORSBERG GUSTAV NYQUIST RYAN O'REILLY JEREMY LAUZON ALEX CARRIER SCOTT WEDGEWOOD FILIP.FORSBERG GUSTAV.NYQUIST RYAN.O'REILLY JEREMY.LAUZON ALEX.CARRIER SCOTT.WEDGEWOOD 8476887 8474679 8475158 8478468 8478851 8475809 L C C D D G RYAN O'REILLY nan nan nan nan nan RYAN.O'REILLY nan nan nan nan nan 8475158 nan nan nan nan nan C nan nan nan nan nan 69 -22 OFF 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 20240200170021 LOGAN STANKOVEN JASON ROBERTSON ROOPE HINTZ MIRO HEISKANEN THOMAS HARLEY JAKE OETTINGER LOGAN.STANKOVEN JASON.ROBERTSON ROOPE.HINTZ MIRO.HEISKANEN THOMAS.HARLEY JAKE.OETTINGER 8.4827e+06 8.48003e+06 8.47845e+06 8.48004e+06 8.48158e+06 8.47998e+06 C L C D D G MICHAEL MCCARRON MICHAEL.MCCARRON 8.47745e+06 R nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan

Debugging and raw data

It's possible to access raw, pre-processed data from each data source, which can be helpful for debugging or contributing to chickenstats design and development.

Game object

The Game object only works with a single game ID:

game = Game(2023020001)

Lists, not DataFrames

The Game object's familiar functions return lists, instead of Pandas DataFrames:

game.play_by_play # (1)! 

game.play_by_play_df # (2)! 
  1. Returns a list of play-by-play events
  2. Returns a Pandas DataFrame of play-by-play events

Pre-processing

Data can be inspected at various processing stages through the Game object's non-public properties:

game._scrape_html_events # (1)! 

game._munge_html_events # (2)!
  1. Get the raw HTML events and store the without processing
  2. Process the raw HTML events and store them

A list of the non-public properties can be found in Contribute