Package: chickenstats
chickenstatsAboutchickenstatsis a Python package for scraping & analyzing sports statistics. With just a few lines of code:Scrape & manipulatedata from various NHL endpoints, leveraging aproprietary xG modelfor shot quality metricsAugment play-by-play data&generate custom aggregationsfrom raw csv files downloaded fromEvolving-Hockey(subscription required)Downloadsalary& othercontract informationforindividual skaters & goaliesprogrammatically
fromCapFriendlyFor more in-depth explanations, tutorials, & detailed reference materials, consult theDocumentation.Compatibilitychickenstatsrequires Python 3.10 or greater & runs on the latest stable versions Linux, MacOS, & Windows
operating systems.InstallationVery simple - install using PyPi. Best practice is to develop in an isolated virtual environment (conda or otherwise),
but who's a chicken to judge?pipinstallchickenstatsUsagechickenstatsis structured as three underlying modules, each used with different data sources:chickenstats.chicken_nhlchickenstats.evolving_hockeychickenstats.capfriendlyThe package is under active development - features will be added or modified in the coming weeks & months.chicken_nhlThechickenstats.chicken_nhlmodule scrapes & manipulates data directly from various NHL endpoints,
with outputs including schedule & game results, rosters, & play-by-play data.The below example scrapes the schedule for the Nashville Predators, extracts the game IDs, then
scrapes play-by-play data for the first ten regular season games.fromchickenstats.chicken_nhlimportSeason,Scraper# Create a Season object for the current seasonseason=Season(2023)# Download the Nashville schedule & filter for regular season gamesnsh_schedule=season.schedule('NSH')nsh_schedule_reg=nsh_schedule.loc[nsh_schedule.session==2].reset_index(drop=True)# Extract game IDs, excluding pre-season gamesgame_ids=nsh_schedule_reg.game_id.tolist()[:10]# Create a scraper object using the game IDsscraper=Scraper(game_ids)# Scrape play-by-play dataplay_by_play=scraper.play_by_playevolving_hockeyThechickenstats.evolving_hockeymodule manipulates raw csv files downloaded fromEvolving-Hockey. Using their original shifts & play-by-play data, adds additional
information & aggregate for individual & on-ice statistics,
including high-danger shooting events, xG & adjusted xG, faceoffs, & changes.importpandasaspdfromchickenstats.evolving_hockeyimportprep_pbp,prep_stats,prep_lines# The prep_pbp function takes the raw event and shifts dataframesraw_shifts=pd.read_csv('./raw_shifts.csv')raw_pbp=pd.read_csv('./raw_pbp.csv')play_by_play=prep_pbp(raw_pbp,raw_shifts)# You can use the play_by_play dataframe in various aggregations# These are individual game statistics, including on-ice & usage,# accounting for teammates & opposition on-iceindividual_game=prep_stats(play_by_play,level='game',teammates=True,opposition=True)# These are game statistics for forward-line combinations, accounting for opponents on-iceforward_lines=prep_lines(play_by_play,position='f',opposition=True)capfriendlyUsechickenstats.capfriendlyto scrape salary & contract information fromCapFriendly.
Information available includes AAV, contract term, player age, signing date, draft year, amongst others.fromchickenstats.capfriendlyimportscrape_capfriendly# Scrape CapFriendly data for the current yearcf=scrape_capfriendly(2023)AcknowledgementsThis project wouldn't be possible without the support & efforts of countless others. I am obviously
extremely grateful, even if there are too many of you to thank individually. However, this chicken will do his best.First & foremost is my wife - the lovely Mrs. Chicken has been patient, understanding, & supportive throughout the countless
hours of development, sometimes to her detriment.Sincere apologies to the friends & family that have put up with me since my entry into Python, programming, & data
analysis in January 2021. Thank you for being excited for me & with me throughout all of this, especially when you've
had to fake it...Speaking of which, thank you to the hockey analytics community on (the artist formerly known as) Twitter. You're producing
& reacting to cutting-edge statistical analyses, while providing a supportive, welcoming environment for newcomers.
This is by no means exhaustive, but a few people worth calling out specifically: