Statsbomb¶
Load local files¶
In [4]:
Copied!
from kloppy import statsbomb
dataset = statsbomb.load(
event_data="../../kloppy/tests/files/statsbomb_3788741_event.json",
lineup_data="../../kloppy/tests/files/statsbomb_3788741_lineup.json",
# 360 file is optional
three_sixty_data="../../kloppy/tests/files/statsbomb_3788741_360.json",
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
from kloppy import statsbomb
dataset = statsbomb.load(
event_data="../../kloppy/tests/files/statsbomb_3788741_event.json",
lineup_data="../../kloppy/tests/files/statsbomb_3788741_lineup.json",
# 360 file is optional
three_sixty_data="../../kloppy/tests/files/statsbomb_3788741_360.json",
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
Out[4]:
event_id | event_type | result | success | period_id | timestamp | end_timestamp | ball_state | ball_owning_team | team_id | player_id | coordinates_x | coordinates_y | end_coordinates_x | end_coordinates_y | receiver_player_id | set_piece_type | body_part_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 34208ade-2af4-45c3-970e-655937cad938 | PASS | COMPLETE | True | 1 | 0.098 | 2.007 | alive | 206 | 206 | 6581 | 60.5 | 40.5 | 35.5 | 25.5 | 6855 | KICK_OFF | LEFT_FOOT |
1 | d1cccb73-c7ef-4b02-8267-ebd7f149904b | PASS | INCOMPLETE | False | 1 | 3.497 | NaN | alive | 206 | 206 | 6855 | 35.5 | 28.5 | NaN | NaN | NaN | NaN | RIGHT_FOOT |
2 | f1cc47d6-4b19-45a6-beb9-33d67fc83f4b | PASS | COMPLETE | True | 1 | 6.785 | 8.431 | alive | 217 | 217 | 5203 | 34.5 | 7.5 | 34.5 | 20.5 | 5470 | NaN | HEAD |
3 | f774571f-4b65-43a0-9bfc-6384948d1b82 | PASS | COMPLETE | True | 1 | 8.431 | 9.576 | alive | 217 | 217 | 5470 | 35.5 | 20.5 | 35.5 | 1.5 | 5477 | NaN | HEAD |
4 | 46f0e871-3e72-4817-9a53-af27583ba6c1 | PASS | COMPLETE | True | 1 | 10.433 | 11.150 | alive | 217 | 217 | 5477 | 33.5 | 2.5 | 25.5 | 1.5 | 5211 | NaN | RIGHT_FOOT |
Load remote files¶
You can also directly read files from urls (http or https) by passing a url instead of a local path.
In [5]:
Copied!
from kloppy import statsbomb
dataset = statsbomb.load(
event_data="https://raw.githubusercontent.com/statsbomb/open-data/master/data/events/15946.json",
lineup_data="https://raw.githubusercontent.com/statsbomb/open-data/master/data/lineups/15946.json",
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
from kloppy import statsbomb
dataset = statsbomb.load(
event_data="https://raw.githubusercontent.com/statsbomb/open-data/master/data/events/15946.json",
lineup_data="https://raw.githubusercontent.com/statsbomb/open-data/master/data/lineups/15946.json",
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
Out[5]:
event_id | event_type | result | success | period_id | timestamp | end_timestamp | ball_state | ball_owning_team | team_id | player_id | coordinates_x | coordinates_y | end_coordinates_x | end_coordinates_y | receiver_player_id | set_piece_type | body_part_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 34208ade-2af4-45c3-970e-655937cad938 | PASS | COMPLETE | True | 1 | 0.098 | 2.007 | alive | 206 | 206 | 6581 | 60.5 | 40.5 | 35.5 | 25.5 | 6855 | KICK_OFF | LEFT_FOOT |
1 | d1cccb73-c7ef-4b02-8267-ebd7f149904b | PASS | INCOMPLETE | False | 1 | 3.497 | NaN | alive | 206 | 206 | 6855 | 35.5 | 28.5 | NaN | NaN | NaN | NaN | RIGHT_FOOT |
2 | f1cc47d6-4b19-45a6-beb9-33d67fc83f4b | PASS | COMPLETE | True | 1 | 6.785 | 8.431 | alive | 217 | 217 | 5203 | 34.5 | 7.5 | 34.5 | 20.5 | 5470 | NaN | HEAD |
3 | f774571f-4b65-43a0-9bfc-6384948d1b82 | PASS | COMPLETE | True | 1 | 8.431 | 9.576 | alive | 217 | 217 | 5470 | 35.5 | 20.5 | 35.5 | 1.5 | 5477 | NaN | HEAD |
4 | 46f0e871-3e72-4817-9a53-af27583ba6c1 | PASS | COMPLETE | True | 1 | 10.433 | 11.150 | alive | 217 | 217 | 5477 | 33.5 | 2.5 | 25.5 | 1.5 | 5211 | NaN | RIGHT_FOOT |
Load open data¶
For loading Statsbomb open data you can also use statsbomb.load_open_data
. The api is very simular but you don't have to pass the urls.
In [14]:
Copied!
from kloppy import statsbomb
dataset = statsbomb.load_open_data(
match_id=15946,
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
from kloppy import statsbomb
dataset = statsbomb.load_open_data(
match_id=15946,
# Optional arguments
coordinates="statsbomb",
event_types=["pass", "shot"]
)
dataset.to_pandas().head()
/Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages/kloppy-3.0.0-py3.8.egg/kloppy/_providers/statsbomb.py:45: UserWarning: You are about to use StatsBomb public data. By using this data, you are agreeing to the user agreement. The user agreement can be found here: https://github.com/statsbomb/open-data/blob/master/LICENSE.pdf warnings.warn(
Out[14]:
event_id | event_type | result | success | period_id | timestamp | end_timestamp | ball_state | ball_owning_team | team_id | player_id | coordinates_x | coordinates_y | end_coordinates_x | end_coordinates_y | receiver_player_id | set_piece_type | body_part_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 34208ade-2af4-45c3-970e-655937cad938 | PASS | COMPLETE | True | 1 | 0.098 | 2.007 | alive | 206 | 206 | 6581 | 60.5 | 40.5 | 35.5 | 25.5 | 6855 | KICK_OFF | LEFT_FOOT |
1 | d1cccb73-c7ef-4b02-8267-ebd7f149904b | PASS | INCOMPLETE | False | 1 | 3.497 | NaN | alive | 206 | 206 | 6855 | 35.5 | 28.5 | NaN | NaN | NaN | NaN | RIGHT_FOOT |
2 | f1cc47d6-4b19-45a6-beb9-33d67fc83f4b | PASS | COMPLETE | True | 1 | 6.785 | 8.431 | alive | 217 | 217 | 5203 | 34.5 | 7.5 | 34.5 | 20.5 | 5470 | NaN | HEAD |
3 | f774571f-4b65-43a0-9bfc-6384948d1b82 | PASS | COMPLETE | True | 1 | 8.431 | 9.576 | alive | 217 | 217 | 5470 | 35.5 | 20.5 | 35.5 | 1.5 | 5477 | NaN | HEAD |
4 | 46f0e871-3e72-4817-9a53-af27583ba6c1 | PASS | COMPLETE | True | 1 | 10.433 | 11.150 | alive | 217 | 217 | 5477 | 33.5 | 2.5 | 25.5 | 1.5 | 5211 | NaN | RIGHT_FOOT |