Processing, aggregating and visualizing DEL hockey stats.
leaffan / del_stats Goto Github PK
View Code? Open in Web Editor NEWProcessing, aggregating and visualizing DEL hockey stats
License: MIT License
Processing, aggregating and visualizing DEL hockey stats
License: MIT License
Shootout information need to be registered in individual player stats as well as team stats files.
Individual player game score (courtesy of Dom Luszczyszyn may be calculated with the following formula:
Player Game Score = 0,75 * G + 0,7 * A1 + 0,55 * A2 + 0,075 * SOG + 0,05 * BLK + 0,15 * PD - 0,15 * PT + 0,01 * FOW - 0,01 * FOL + 0,05 * CF - 0,05 * CA + 0,15 * GF - 0,15 * GA
This should be incorporated into player game statistics retrieval and display.
Unfortunately there is no information about drawn penalties available with the DEL data, all the other stuff should be there though.
In analogy to the scoring streaks retrieved for every player.
Currently all downloaded and processed data is stored in flat files. This should change.
Player information displays several entries (those of players who participated in the MagentaSport Cup) multiple times. This needs to be fixed. Best solution would be a replacement for the aggregated stats file in JSON format that is no longer directly used by the frontend.
League-wide save percentages are calculated beforehand to later retrieve GSAA (Goals Saved Above Average). As a reference these league-wide values should be displayed on the corresponding pages.
This includes:
Similar to name correction for coaches, it should be possible to correct for spelling errors in player names, i.e. Patrick Jospeh Alber to Patrick Joseph Alber.
Make jersey numbers available on player profile with the most currently used as primary number, other ones need to be at least mentioned. Player game logs should also include the used number.
It would be nice to have player shots logs, in order to show collected locations of shots on goals, misses, and blocked shots.
The list of available players on a player profile page needs to show all players that played for the team in question during the season the data is displayed for. Currently only those players are available that are currently with this team.
Backend: make list of players that took ice for a team during a season
Frontend: display all those players in dropdown list, make sure the first one is selected when there's a null player
Power play statistics should be separated by actual skater situation on ice, i.e. 5-vs-4, 5-vs-3, and 4-vs-3. To do so we have to collect the number of goals scored in each situation, the overall number of opportunities of and times spent in these situations. Reconstruction of skater situation for each second of a game should be used as a basis for this retrieval.
Following the principles laid out at https://hockey-graphs.com/2014/11/13/adjusted-possession-measures/ we should be able to derive score- and venue-adjusted shot shares for DEL data. It should be then possible to optionally display these stats.
Single player career stats pages are currently completely static. Filtering and sorting should be possible here, too.
Player profile pages usually show the current age of a player. However for other seasons than the current one this should be adjusted to the age midway through the corresponding season, i.e. usually at the turn of the year back then.
Not sure how to make the user aware of this adjustment.
Shots are currently assigned an on-ice skater-situation (5v5, 5v4 etc.) without considering the presence of an extra attacker. This hast to be fixed.
On-ice shot stats should be normalized by taking time-on-ice into consideration, i.e. users want CF/60, CA/60 and so on.
I.e. for excluding goaltenders from corresponding stats display with less than an (adjustable) amount of playing time, excluding skaters from corresponding stats display with less than an an (adjustable) amount of faceoffs, shots, playing time etc.
Detailed information is available for each faceoff event. It should be feasible to derive individual statistics on the following criteria:
Due to missing shift data line combinations for forwards and defenseman are only available via the official starting line ups. It is nevertheless desirable to visualize the offensive line and defensive pair combinations according to their frequency, e.g. in an alluvial graph.
In an attempt to objectify goaltender statistics we should include (5v5) goals save above average for each goalie game. Later this should be displayed both individually per game and aggregated over a defined period of time.
A league-wide 5v5 save percentage needs to be calculated first.
This would be nice. Testing is necessary for downloading team and game data scripts, downloading player career stats scripts, and processing scripts.
Available since the beginning of the 2020 season, need to be registered and aggregated for both players and teams.
This should be possible using the event logs.
Retrieval of scoring streaks is currently restricted to default season from configuration.
Calculation and visualization of time on ice per shift.
As noted by @Waitomat33: loosely defined scoring streaks may appear multiple times for players that changed teams during a season:
All combinations of sides should be calculated and displayed.
strong vs. strong
strong vs. weak
weak vs. strong
weak vs. weak
For each game played, a detailed game report with the usual stuff (goals, penalties, shots, team stats, player stats...) should be available to be used as reference and link target for each game mentioned in the other stats displays.
Berechnung und Visualisierung der zeitlichen Spielanteile, welches ein Team in Führung liegend, unentschieden bzw. in Rückstand verbracht hat.
It has been found that the registry of all players (del_players.json) under certain circumstances does not hold up-to-date information, i.e. if a player was utilized as a forward the previous season and is now playing as a defender he could still be registered as a forward. In a first step to to correct this issue It has to be made sure that the most recent position registered for the player in the official data is also stored in the central registry file.
In a second step we should allow for position (and nationality?) changes over the course of multiple seasons.
Official data from DEL provides roster sheets that contain lines and defense pairs as registered by the coaching staff prior to the game. This data should be stored and adequately visualized. Additionally a number of further analyses could be possible, e.g. in order to measure the efficiency of a line.
Retrieve and display player scoring streaks, i.e. longest streak during the season and currently on-going streak.
Register rookie and wjc eligibility status (analogous to U23) for every player and season. Adjust frontend to allow for corresponding display for each status type.
Goaltender statistics have to be retrieved and aggregated separately from normal skater statistics.
Goal is to create an ICS file that should be made available to users via link.
Prerequisite would be resolving issue #24.
It would be neat if we could incorporate a shooter's handedness into the parameters.
Also we would need a second model disregarding blocked shots to allow for later calculation of some advanded goaltending statistics.
With on-ice skater situations reconstructed for every second of every game (and therefore also for every shot event) it should be now possible to separate statistic data items valid for 5-on-5 hockey from other situations.
This issue affects both backend retrieval as well as frontend display of the collected data.
For each player a profile page should exist that could serve as a game log.
Additionally player profiles should be comparable.
Data about when, where and by whom faceoffs were taken is available for almost every game played. It should be possible to download and store these data files, too.
Like the player game logs, we should have team game logs.
Development version is Python 3.6 which maintains insertion order for dictionary keys. Production (server) version is Python 3.5 which does not. To allow for feasible usage of the produced CSV file the output order for the data keys has to be provided.
Hi,
I came across this project. It looks really nice, especially the amount of statistics you get out of just a couple of JSON files from DEL. I would like to play a little bit more with it. Is there any chance to get an example config.yml and some basic instructions (f.i. in which order the backend scripts need to be executed).
Thanks and best regards,
GrindSa
To detach individual goaltender performance from team performance an adjusted way of measuring the former is necessary. A multiple of approaches could be feasible, including an adjusted save percentage that gives shots against over the threshold of the league average a higher weight in the calculation and vice versa. Other ways could be quality starts and some kind of adjustment based on the number of shots taken from different shot zones.
Since introduction of playoff statistics there is a nasty doubling of player names in the corresponding selection list on the player profile pages. This is because player stats are both aggregated for regular season and playoffs therefore creating two entries for the same name in the dataset. This should be fixed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.