✨ Highlights
Loading data with kloppy
This release adds support for loading data using [kloppy](https://github.com/PySport/kloppy).
python
from kloppy import statsbomb
from socceraction.spadl.kloppy import convert_to_actions
import socceraction.atomic.spadl as atomicspadl
dataset = statsbomb.load_open_data(match_id=8657)
spadl_actions = convert_to_actions(dataset, game_id=8657)
atomic_spadl_actions = atomicspadl.convert_to_atomic(spadl_actions)
This will also work for other data sources, but the resulting SPADL representation will be incomplete / contain errors. A bit more work is required on the kloppy-side to implement the full data model and resolve bugs (see 643 and 644).
Pandas 2.0 support
This release adds support for Pandas v2. Pandas < v2 should be supported for the foreseeable future.
Changes
:boom: Breaking Changes
* Use categorical dtype for categorical features (603) probberechts
:rocket: Features
* Add Kloppy as reader (229) probberechts MKlaasman
* [Wyscout] Add support for left/right foot (634) probberechts
* [StatsBomb] Timestamps up to millisecond accuracy (602) probberechts
* [StatsBomb] Support high fidelity coordinates (600) probberechts
:beetle: Fixes
* [SPADL] Do not insert synthetic dribbles before headed shots (642) probberechts
* [SPADL] Do not insert synthetic dribbles before offensive fouls (641) probberechts
* [Opta] Set body part of keeper actions to "other" (631) probberechts
* [Wyscout] Insert interceptions before clearances and accelerations (638) probberechts
* Use stable sort for ordering events/actions (637) probberechts
* [Opta] Interceptions must regain possession to be successful (635) probberechts
* [Wyscout] Ignore "missed ball"-touches (640) probberechts
* [Opta] Set the body part of throw-ins to "other" (630) probberechts
* [Wyscout] Add cards to result of fouls (639) probberechts
* [Opta] Fix definition of 'freekick_crossed' (636) probberechts
* [Wyscout] Only estimate goalmouth coordinates for shots (633) probberechts
* [Opta] Fix bug when x or y-coordinate is zero (632) probberechts
* [StatsBomb] The default result of a foul should always be 'fail' (629) probberechts
* [StatsBomb] Fix fidelity of shot y-coordinates (628) probberechts
* [StatsBomb] Set body part of throw-ins to "other" (627) probberechts
* [StatsBomb] Split intercepted passes in two events (619) probberechts
* Removal of "is" for boolean check in "_fix_unintentional_ball_touches" (586) ksbharaj
:rotating_light: Testing
* Update StatsBomb IDs in tests (607) probberechts
:construction_worker: Continuous Integration
* Update RTD config (598) probberechts
:package: Dependencies
* Bump virtualenv from 20.24.5 to 20.25.0 in /.github/workflows (622) dependabot
* Bump poetry from 1.6.1 to 1.7.1 in /.github/workflows (618) dependabot
* Bump sphinx-autodoc-typehints from 1.24.0 to 1.25.2 in /docs (617) dependabot
* Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 (621) dependabot
* Bump actions/setup-python from 4 to 5 (623) dependabot
* Bump pip from 23.3 to 23.3.2 in /.github/workflows (626) dependabot
* Bump pylint from 2.17.6 to 2.17.7 (595) dependabot
* Bump pip from 23.2.1 to 23.3 in /.github/workflows (604) dependabot
* Bump release-drafter/release-drafter from 5.24.0 to 5.25.0 (605) dependabot
* Support Pandas 2.0 (597) probberechts
* Bump furo from 2023.8.19 to 2023.9.10 in /docs (588) dependabot
* Bump scikit-learn from 1.3.0 to 1.3.1 (592) dependabot
* Bump pylint from 2.17.5 to 2.17.6 (593) dependabot
* Bump crazy-max/ghaction-github-labeler from 4.2.0 to 5.0.0 (587) dependabot
* Bump virtualenv from 20.24.4 to 20.24.5 in /.github/workflows (589) dependabot
* Bump sphinx from 7.2.5 to 7.2.6 in /docs (591) dependabot