Package: databallpy
DataBallPyA package for loading, synchronizing, and analyzing your soccer event- and tracking data.This package is developed to create a standardized way to analyse soccer matches using both event- and tracking data. Other packages, likekloppyandfloodlight, already standardize the import of data sources. The current package goes a step further in combining different data streams from the same match. In this case, theMatchobject combines information from the event and tracking data. The main feature is the smart synchronization of the tracking and event data. We utilize the Needleman-Wunch algorithm, inspired bythis article, to align the tracking and even data, while ensuring the order of the events, something that is not done when only using (different) cost functions.V0.4.3 (15/1/2024)Added simple expected goals (xG) modelAdded anonimisation functionAdded pitch control model by Javier Fernandez (Wide Open Spaces paper)Fixed minor bugsAdded logging possibilitiesRefactor of file structure and folder namingPlanned changesAdding different filters to filter the tracking dataAdding more features (if you have any ideas/requests, please open an issue!)Creating more databallpy eventsAdding expected passing and goals modelsInstallation$pipinstalldataballpyUsageThe package is centered around theMatchobject. AMatchhas tracking data, event data metadata about the match.
For a more elaborate example, see theexample file.$fromdataballpyimportget_match,get_open_match$$match=get_match($tracking_data_loc="../data/tracking_data.dat",$tracking_metadata_loc="../data/tracking_metadata.xml",$tracking_data_provider="tracab"$event_data_loc="../data/event_data_f24.xml",$event_metadata_loc="../data/event_metadata_f7.xml",$event_data_provider="opta",$)$$# or to load an open metrica dataset of tracking and event data$match=get_open_match()$$match.home_team_name# the team name of the home playing team$match.away_players# pandas dataframe with the names, ids, shirt numbers and positions of the away team$match.tracking_data# pandas dataframe with tracking data of the match$match.event_data# pandas dataframe with event data of the matchSeethe documentationof theMatchobject and theexample usagefor more options. Note that this package is developed to combine event and tracking data, for now both datastreams are necessary to create aMatchobject.Synchronization of tracking and event dataTracking and event data is often poorly synchronized. For instance, when taking the event data of Opta and tracking data of Tracab, you can sync the fist frame with the kick-off pass. Now you can sync the other events with the tracking data based on the time difference between the event and the kick off pass. If you do this, how get something like this:Your browser does not support the video tag.https://user-images.githubusercontent.com/49450063/224564808-fa71735f-5510-464d-8499-9044227a02e8.mp4As you can see, the timing (and placing) of the events do not correspond good with the tracking data locations, especially when events follow up quickly or around shots. Using the methodology of [this][soccer-synch-url] article, this package is able to synchronize tracking and event data using the Needleman-Wunsch algorithm.After running the following command, the events are better synchronized to the tracking data:$ match.synchronise_tracking_and_event_data()Your browser does not support the video tag.https://user-images.githubusercontent.com/49450063/224564913-4091faf7-f6ef-4429-b132-7f93ce5e1d91.mp4DocumentationThe official documentation can be foundhere.ProvidersFor now we limited providers. We are planning on adding more providers later on.Event data providers:OptaMetricaInstatTracking data providers:TracabMetricaInmotioContributingInterested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.Maintainers & ownersAlek050DaanGroContributorsrdgheswopper050Licensedataballpywas created by Alexander Oonk & Daan Grob. It is licensed under the terms of the MIT license.Similar projectsAlthough we think this package helps when starting to analyse soccer data, other packages may be better suited for your specific needs. Make sure to check out the following packages as well:kloppyfloodlightcodeballsocceractionAnd for a more specific toturials on how to get started with soccer data"Friends of Tracking