FiveThirtyEight soccer data

This example illustrates the usage of FiveThirtyEight soccer dataloader.

# Author: Georgios Douzas <gdouzas@icloud.com>
# Licence: MIT

from sportsbet.datasets import FTESoccerDataLoader

Getting the available parameters

We can get the available parameters in order to select the training data to be extracted, using the get_all_params() class method.

Out:

[{'division': [1], 'league': ['Argentina'], 'year': [2018]}, {'division': [1], 'league': ['Argentina'], 'year': [2019]}, {'division': [1], 'league': ['Argentina'], 'year': [2020]}, {'division': [1], 'league': ['Argentina'], 'year': [2022]}, {'division': [1], 'league': ['Australia'], 'year': [2019]}, {'division': [1], 'league': ['Australia'], 'year': [2020]}, {'division': [1], 'league': ['Australia'], 'year': [2021]}, {'division': [1], 'league': ['Australia'], 'year': [2022]}, {'division': [1], 'league': ['Austria'], 'year': [2018]}, {'division': [1], 'league': ['Austria'], 'year': [2019]}, {'division': [1], 'league': ['Austria'], 'year': [2020]}, {'division': [1], 'league': ['Austria'], 'year': [2021]}, {'division': [1], 'league': ['Austria'], 'year': [2022]}, {'division': [1], 'league': ['Belgium'], 'year': [2019]}, {'division': [1], 'league': ['Belgium'], 'year': [2020]}, {'division': [1], 'league': ['Belgium'], 'year': [2021]}, {'division': [1], 'league': ['Belgium'], 'year': [2022]}, {'division': [1], 'league': ['Brazil'], 'year': [2018]}, {'division': [1], 'league': ['Brazil'], 'year': [2019]}, {'division': [1], 'league': ['Brazil'], 'year': [2020]}, {'division': [1], 'league': ['Brazil'], 'year': [2021]}, {'division': [1], 'league': ['Brazil'], 'year': [2022]}, {'division': [1], 'league': ['Champions-League'], 'year': [2017]}, {'division': [1], 'league': ['Champions-League'], 'year': [2018]}, {'division': [1], 'league': ['Champions-League'], 'year': [2019]}, {'division': [1], 'league': ['Champions-League'], 'year': [2020]}, {'division': [1], 'league': ['Champions-League'], 'year': [2021]}, {'division': [1], 'league': ['Champions-League'], 'year': [2022]}, {'division': [1], 'league': ['China'], 'year': [2019]}, {'division': [1], 'league': ['China'], 'year': [2020]}, {'division': [1], 'league': ['Denmark'], 'year': [2019]}, {'division': [1], 'league': ['Denmark'], 'year': [2020]}, {'division': [1], 'league': ['Denmark'], 'year': [2021]}, {'division': [1], 'league': ['Denmark'], 'year': [2022]}, {'division': [1], 'league': ['England'], 'year': [2017]}, {'division': [1], 'league': ['England'], 'year': [2018]}, {'division': [1], 'league': ['England'], 'year': [2019]}, {'division': [1], 'league': ['England'], 'year': [2020]}, {'division': [1], 'league': ['England'], 'year': [2021]}, {'division': [1], 'league': ['England'], 'year': [2022]}, {'division': [1], 'league': ['Europa'], 'year': [2022]}, {'division': [1], 'league': ['Europa-League'], 'year': [2018]}, {'division': [1], 'league': ['Europa-League'], 'year': [2019]}, {'division': [1], 'league': ['Europa-League'], 'year': [2020]}, {'division': [1], 'league': ['Europa-League'], 'year': [2021]}, {'division': [1], 'league': ['Europa-League'], 'year': [2022]}, {'division': [1], 'league': ['FAWSL'], 'year': [2017]}, {'division': [1], 'league': ['FAWSL'], 'year': [2018]}, {'division': [1], 'league': ['FAWSL'], 'year': [2019]}, {'division': [1], 'league': ['FAWSL'], 'year': [2020]}, {'division': [1], 'league': ['FAWSL'], 'year': [2021]}, {'division': [1], 'league': ['FAWSL'], 'year': [2022]}, {'division': [1], 'league': ['France'], 'year': [2017]}, {'division': [1], 'league': ['France'], 'year': [2018]}, {'division': [1], 'league': ['France'], 'year': [2019]}, {'division': [1], 'league': ['France'], 'year': [2020]}, {'division': [1], 'league': ['France'], 'year': [2021]}, {'division': [1], 'league': ['France'], 'year': [2022]}, {'division': [1], 'league': ['Germany'], 'year': [2017]}, {'division': [1], 'league': ['Germany'], 'year': [2018]}, {'division': [1], 'league': ['Germany'], 'year': [2019]}, {'division': [1], 'league': ['Germany'], 'year': [2020]}, {'division': [1], 'league': ['Germany'], 'year': [2021]}, {'division': [1], 'league': ['Germany'], 'year': [2022]}, {'division': [1], 'league': ['Greece'], 'year': [2019]}, {'division': [1], 'league': ['Greece'], 'year': [2020]}, {'division': [1], 'league': ['Greece'], 'year': [2022]}, {'division': [1], 'league': ['Italy'], 'year': [2017]}, {'division': [1], 'league': ['Italy'], 'year': [2018]}, {'division': [1], 'league': ['Italy'], 'year': [2019]}, {'division': [1], 'league': ['Italy'], 'year': [2020]}, {'division': [1], 'league': ['Italy'], 'year': [2021]}, {'division': [1], 'league': ['Italy'], 'year': [2022]}, {'division': [1], 'league': ['Japan'], 'year': [2019]}, {'division': [1], 'league': ['Japan'], 'year': [2020]}, {'division': [1], 'league': ['Japan'], 'year': [2021]}, {'division': [1], 'league': ['Japan'], 'year': [2022]}, {'division': [1], 'league': ['Mexico'], 'year': [2017]}, {'division': [1], 'league': ['Mexico'], 'year': [2018]}, {'division': [1], 'league': ['Mexico'], 'year': [2019]}, {'division': [1], 'league': ['Mexico'], 'year': [2020]}, {'division': [1], 'league': ['Mexico'], 'year': [2021]}, {'division': [1], 'league': ['Mexico'], 'year': [2022]}, {'division': [1], 'league': ['NWSL'], 'year': [2018]}, {'division': [1], 'league': ['NWSL'], 'year': [2019]}, {'division': [1], 'league': ['NWSL'], 'year': [2020]}, {'division': [1], 'league': ['NWSL'], 'year': [2021]}, {'division': [1], 'league': ['NWSL'], 'year': [2022]}, {'division': [1], 'league': ['Netherlands'], 'year': [2018]}, {'division': [1], 'league': ['Netherlands'], 'year': [2019]}, {'division': [1], 'league': ['Netherlands'], 'year': [2020]}, {'division': [1], 'league': ['Netherlands'], 'year': [2021]}, {'division': [1], 'league': ['Netherlands'], 'year': [2022]}, {'division': [1], 'league': ['Norway'], 'year': [2018]}, {'division': [1], 'league': ['Norway'], 'year': [2019]}, {'division': [1], 'league': ['Norway'], 'year': [2020]}, {'division': [1], 'league': ['Norway'], 'year': [2021]}, {'division': [1], 'league': ['Norway'], 'year': [2022]}, {'division': [1], 'league': ['Portugal'], 'year': [2018]}, {'division': [1], 'league': ['Portugal'], 'year': [2019]}, {'division': [1], 'league': ['Portugal'], 'year': [2020]}, {'division': [1], 'league': ['Portugal'], 'year': [2021]}, {'division': [1], 'league': ['Portugal'], 'year': [2022]}, {'division': [1], 'league': ['Russia'], 'year': [2018]}, {'division': [1], 'league': ['Russia'], 'year': [2019]}, {'division': [1], 'league': ['Russia'], 'year': [2020]}, {'division': [1], 'league': ['Russia'], 'year': [2021]}, {'division': [1], 'league': ['Russia'], 'year': [2022]}, {'division': [1], 'league': ['Scotland'], 'year': [2018]}, {'division': [1], 'league': ['Scotland'], 'year': [2019]}, {'division': [1], 'league': ['Scotland'], 'year': [2020]}, {'division': [1], 'league': ['Scotland'], 'year': [2021]}, {'division': [1], 'league': ['Scotland'], 'year': [2022]}, {'division': [1], 'league': ['South-Africa'], 'year': [2019]}, {'division': [1], 'league': ['South-Africa'], 'year': [2020]}, {'division': [1], 'league': ['South-Africa'], 'year': [2022]}, {'division': [1], 'league': ['Spain'], 'year': [2017]}, {'division': [1], 'league': ['Spain'], 'year': [2018]}, {'division': [1], 'league': ['Spain'], 'year': [2019]}, {'division': [1], 'league': ['Spain'], 'year': [2020]}, {'division': [1], 'league': ['Spain'], 'year': [2021]}, {'division': [1], 'league': ['Spain'], 'year': [2022]}, {'division': [1], 'league': ['Sweden'], 'year': [2018]}, {'division': [1], 'league': ['Sweden'], 'year': [2019]}, {'division': [1], 'league': ['Sweden'], 'year': [2020]}, {'division': [1], 'league': ['Sweden'], 'year': [2021]}, {'division': [1], 'league': ['Sweden'], 'year': [2022]}, {'division': [1], 'league': ['Switzerland'], 'year': [2018]}, {'division': [1], 'league': ['Switzerland'], 'year': [2019]}, {'division': [1], 'league': ['Switzerland'], 'year': [2020]}, {'division': [1], 'league': ['Switzerland'], 'year': [2021]}, {'division': [1], 'league': ['Switzerland'], 'year': [2022]}, {'division': [1], 'league': ['Turkey'], 'year': [2018]}, {'division': [1], 'league': ['Turkey'], 'year': [2019]}, {'division': [1], 'league': ['Turkey'], 'year': [2020]}, {'division': [1], 'league': ['Turkey'], 'year': [2021]}, {'division': [1], 'league': ['Turkey'], 'year': [2022]}, {'division': [1], 'league': ['USA'], 'year': [2018]}, {'division': [1], 'league': ['USA'], 'year': [2019]}, {'division': [1], 'league': ['USA'], 'year': [2020]}, {'division': [1], 'league': ['USA'], 'year': [2021]}, {'division': [1], 'league': ['USA'], 'year': [2022]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2019]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2020]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2021]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2022]}, {'division': [2], 'league': ['England'], 'year': [2018]}, {'division': [2], 'league': ['England'], 'year': [2019]}, {'division': [2], 'league': ['England'], 'year': [2020]}, {'division': [2], 'league': ['England'], 'year': [2021]}, {'division': [2], 'league': ['England'], 'year': [2022]}, {'division': [2], 'league': ['France'], 'year': [2018]}, {'division': [2], 'league': ['France'], 'year': [2019]}, {'division': [2], 'league': ['France'], 'year': [2020]}, {'division': [2], 'league': ['France'], 'year': [2021]}, {'division': [2], 'league': ['France'], 'year': [2022]}, {'division': [2], 'league': ['Germany'], 'year': [2018]}, {'division': [2], 'league': ['Germany'], 'year': [2019]}, {'division': [2], 'league': ['Germany'], 'year': [2020]}, {'division': [2], 'league': ['Germany'], 'year': [2021]}, {'division': [2], 'league': ['Germany'], 'year': [2022]}, {'division': [2], 'league': ['Italy'], 'year': [2018]}, {'division': [2], 'league': ['Italy'], 'year': [2019]}, {'division': [2], 'league': ['Italy'], 'year': [2020]}, {'division': [2], 'league': ['Italy'], 'year': [2021]}, {'division': [2], 'league': ['Italy'], 'year': [2022]}, {'division': [2], 'league': ['Spain'], 'year': [2018]}, {'division': [2], 'league': ['Spain'], 'year': [2019]}, {'division': [2], 'league': ['Spain'], 'year': [2020]}, {'division': [2], 'league': ['Spain'], 'year': [2021]}, {'division': [2], 'league': ['Spain'], 'year': [2022]}, {'division': [3], 'league': ['England'], 'year': [2019]}, {'division': [3], 'league': ['England'], 'year': [2020]}, {'division': [3], 'league': ['England'], 'year': [2021]}, {'division': [3], 'league': ['England'], 'year': [2022]}, {'division': [4], 'league': ['England'], 'year': [2019]}, {'division': [4], 'league': ['England'], 'year': [2020]}, {'division': [4], 'league': ['England'], 'year': [2021]}, {'division': [4], 'league': ['England'], 'year': [2022]}]

We select to extract training data only for the year 2021 of all the divisions of English league.

param_grid = {'league': ['England'], 'year': [2021]}

Getting the available odds types

We can get the available odds types in order to match the output of the training data, using the get_odds_types() class method.

Out:

[]

Therefore no odds data are available.

Extracting the training data

We extract the training data using the default values for the parameters odds_type` and drop_na_thres`.

The input data:

print(X_train)

Out:

             league         home_team       away_team  ...  division  year  match_quality
date                                                   ...
2020-09-11  England           Watford   Middlesbrough  ...         2  2021      54.127384
2020-09-12  England         Liverpool    Leeds United  ...         1  2021      75.234291
2020-09-12  England  Northampton Town   AFC Wimbledon  ...         3  2021      13.830636
2020-09-12  England    Fleetwood Town   Burton Albion  ...         3  2021      21.850547
2020-09-12  England      Lincoln City   Oxford United  ...         3  2021      22.981671
...             ...               ...             ...  ...       ...   ...            ...
2021-05-23  England         Liverpool  Crystal Palace  ...         1  2021      72.962664
2021-05-23  England            Fulham       Newcastle  ...         1  2021      67.736397
2021-05-29  England         Brentford    Swansea City  ...         2  2021      55.394018
2021-05-30  England         Blackpool    Lincoln City  ...         3  2021      31.193826
2021-05-31  England         Morecambe  Newport County  ...         4  2021      14.866651

[2051 rows x 15 columns]

The targets:

print(Y_train)

Out:

      away_win__full_time_goals  draw__full_time_goals  ...  under_3.5__full_time_goals  under_4.5__full_time_goals
0                         False                  False  ...                        True                        True
1                         False                  False  ...                       False                       False
2                         False                   True  ...                       False                        True
3                         False                  False  ...                        True                        True
4                         False                  False  ...                        True                        True
...                         ...                    ...  ...                         ...                         ...
2046                      False                  False  ...                        True                        True
2047                       True                  False  ...                        True                        True
2048                      False                  False  ...                        True                        True
2049                      False                  False  ...                        True                        True
2050                      False                  False  ...                        True                        True

[2051 rows x 11 columns]

Extracting the fixtures data

We extract the fixtures data with columns that match the columns of the training data. On the other hand, the fixtures data are not affected by the param_grid selection.

The input data:

print(X_fix)

Out:

              league          home_team      away_team  ...  division  year  match_quality
date                                                    ...
2022-02-02    Greece     Apollon Smyrni  PAOK Salonika  ...         1  2022      25.295641
2022-02-02  Portugal         Belenenses    Sporting CP  ...         1  2022      50.337426
2022-02-02  Scotland             Celtic        Rangers  ...         1  2022      64.779975
2022-02-02   England  Huddersfield Town   Derby County  ...         2  2022      39.020776
2022-02-02   England           Barnsley   Cardiff City  ...         2  2022      37.316492
...              ...                ...            ...  ...       ...   ...            ...
2022-05-29     Spain    Sporting Gijón     Las Palmas  ...         2  2022      30.450919
2022-05-29     Spain           Mirandes    Fuenlabrada  ...         2  2022      26.416505
2022-05-29     Spain             Burgos      Girona FC  ...         2  2022      32.287435
2022-05-29     Spain    Real Valladolid      SD Huesca  ...         2  2022      38.501709
2022-05-29     Spain           Tenerife   FC Cartagena  ...         2  2022      34.364092

[3289 rows x 15 columns]

Total running time of the script: ( 0 minutes 14.870 seconds)

Gallery generated by Sphinx-Gallery