Football-Data soccer data

This example illustrates the usage of Football-Data soccer dataloader.

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

import pandas as pd
from sportsbet.datasets import FDSoccerDataLoader

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.

The available parameters can be presented as a DataFrame.

params_df = pd.DataFrame(params).sort_values(
    ['league', 'year', 'division'], ignore_index=True
)
params_df
division league year
0 1 Argentina 2013
1 1 Argentina 2014
2 1 Argentina 2015
3 1 Argentina 2016
4 1 Argentina 2017
... ... ... ...
753 1 USA 2018
754 1 USA 2019
755 1 USA 2020
756 1 USA 2021
757 1 USA 2022

758 rows × 3 columns



We select to extract training data only for the year 2021 of the first division Spanish and Italian leagues.

param_grid = {'league': ['Spain', 'Italy'], 'division': [1], '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:

['bet365', 'bet365_closing', 'betbrain', 'betbrain_average', 'betbrain_maximum', 'betwin', 'betwin_closing', 'bluesquare', 'gamebookers', 'interwetten', 'interwetten_closing', 'ladbrokes', 'market_average', 'market_average_closing', 'market_maximum', 'market_maximum_closing', 'pinnacle', 'pinnacle_closing', 'sporting', 'sportingbet', 'stanjames', 'stanleybet', 'vcbet', 'vcbet_closing', 'williamhill', 'williamhill_closing']

We select the odds types to be the market average.

odds_type = 'market_average'

Extracting the training data

We extract the training data, keeping columns and rows with non missing values by setting the drop_na_thres parameter equal to 1.0.

Out:

Football-Data.co.uk: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00

The input data:

X_train
home_team away_team market_maximum__home_win__odds market_maximum__draw__odds market_maximum__away_win__odds market_average__home_win__odds market_average__draw__odds market_average__away_win__odds bet365_closing__home_win__odds bet365_closing__draw__odds bet365_closing__away_win__odds betwin_closing__home_win__odds betwin_closing__draw__odds betwin_closing__away_win__odds interwetten_closing__home_win__odds interwetten_closing__draw__odds interwetten_closing__away_win__odds pinnacle_closing__home_win__odds pinnacle_closing__draw__odds pinnacle_closing__away_win__odds williamhill_closing__home_win__odds williamhill_closing__draw__odds williamhill_closing__away_win__odds vcbet_closing__home_win__odds vcbet_closing__draw__odds vcbet_closing__away_win__odds market_maximum_closing__home_win__odds market_maximum_closing__draw__odds market_maximum_closing__away_win__odds market_average_closing__home_win__odds market_average_closing__draw__odds market_average_closing__away_win__odds market_maximum_closing__over_2.5__odds market_maximum_closing__under_2.5__odds market_average_closing__over_2.5__odds market_average_closing__under_2.5__odds market_average_closing__size_of_asian_handicap_home_team__odds bet365_closing__asian_handicap_home_team__odds bet365_closing__asian_handicap_away_team__odds pinnacle_closing__asian_handicap_home_team__odds pinnacle_closing__asian_handicap_away_team__odds market_maximum_closing__asian_handicap_home_team__odds market_maximum_closing__asian_handicap_away_team__odds market_average_closing__asian_handicap_home_team__odds market_average_closing__asian_handicap_away_team__odds league division year
date
2020-01-10 Ath Bilbao Cadiz 1.64 3.95 7.30 1.57 3.73 6.82 1.61 3.50 6.50 1.62 3.50 6.75 1.73 3.15 6.00 1.74 3.41 6.38 1.67 3.40 6.50 1.73 3.30 5.75 1.76 3.59 7.17 1.70 3.37 6.17 3.00 1.50 2.77 1.44 -0.75 2.00 1.93 2.02 1.91 2.05 2.02 1.97 1.90 Spain 1 2021
2020-01-10 Celta Barcelona 6.25 4.70 1.60 5.76 4.40 1.55 6.00 4.75 1.45 5.50 4.60 1.53 5.50 4.80 1.53 6.58 5.13 1.47 7.00 4.60 1.44 6.50 4.75 1.45 7.40 5.15 1.53 6.36 4.85 1.46 1.92 2.69 1.54 2.48 1.25 1.89 2.04 1.88 2.05 2.00 2.10 1.86 2.01 Spain 1 2021
2020-01-10 Sevilla Levante 1.49 4.90 8.17 1.44 4.59 7.25 1.50 4.50 6.00 1.50 4.40 6.25 1.50 4.60 6.00 1.48 4.62 7.39 1.47 4.33 7.00 1.50 4.50 6.00 1.51 4.75 7.39 1.48 4.51 6.53 1.64 2.55 1.58 2.37 -1.00 1.82 2.11 1.81 2.14 1.87 2.19 1.78 2.09 Spain 1 2021
2020-01-11 Valencia Getafe 3.40 3.12 2.59 3.26 2.95 2.48 3.00 3.00 2.55 3.10 2.95 2.55 2.95 3.00 2.65 3.16 2.96 2.71 3.10 2.90 2.62 3.00 3.00 2.60 3.19 3.07 2.76 3.06 2.92 2.64 2.90 1.50 2.75 1.44 0.00 2.11 1.82 2.13 1.82 2.13 1.84 2.09 1.80 Spain 1 2021
2020-01-11 Granada Levante 2.33 3.44 3.56 2.25 3.25 3.37 2.37 3.30 3.00 2.40 3.20 3.10 2.40 3.00 3.15 2.45 3.25 3.27 2.38 3.25 3.10 2.38 3.25 3.10 2.60 3.42 3.31 2.39 3.21 3.15 2.20 1.83 2.10 1.73 -0.25 2.09 1.84 2.08 1.85 2.12 1.87 2.04 1.83 Spain 1 2021
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2021-12-05 Bologna Genoa 2.50 3.50 3.14 2.39 3.35 3.04 2.20 3.40 3.25 2.15 3.40 3.40 2.20 3.30 3.45 2.13 3.53 3.70 2.20 3.30 3.40 2.10 3.50 3.50 2.27 3.53 3.70 2.18 3.38 3.43 1.78 2.28 1.73 2.13 -0.25 1.86 2.07 1.84 2.10 1.91 2.11 1.87 2.01 Italy 1 2021
2021-12-05 Torino Milan 4.10 4.20 1.93 3.88 3.96 1.87 4.75 4.00 1.70 4.75 4.00 1.70 4.70 3.95 1.70 4.88 4.11 1.74 4.75 4.00 1.70 4.60 3.90 1.75 5.19 4.30 1.77 4.66 4.03 1.72 1.77 2.28 1.72 2.14 0.75 1.97 1.96 1.97 1.95 2.01 1.98 1.95 1.92 Italy 1 2021
2021-12-05 Sassuolo Juventus 5.25 4.50 1.74 4.82 4.23 1.66 4.50 4.50 1.65 4.75 4.50 1.62 4.90 4.40 1.63 4.72 4.46 1.70 5.00 4.20 1.63 4.60 4.20 1.67 5.29 4.62 1.73 4.74 4.38 1.66 1.50 2.99 1.46 2.71 0.75 2.06 1.87 2.05 1.88 2.16 1.91 2.05 1.83 Italy 1 2021
2021-12-05 Inter Roma 1.73 4.50 5.10 1.68 4.08 4.82 1.61 4.50 4.60 1.62 4.50 4.75 1.67 4.20 4.60 1.61 4.73 5.22 1.67 4.20 4.75 1.65 4.33 4.80 1.68 4.80 5.25 1.63 4.45 4.87 1.46 3.40 1.38 3.04 -1.00 1.98 1.95 1.97 1.95 2.13 1.97 2.02 1.85 Italy 1 2021
2021-12-05 Lazio Parma 1.24 7.50 14.00 1.21 6.92 12.91 1.28 6.00 9.50 1.28 6.00 10.00 1.25 6.25 11.00 1.29 6.00 10.68 1.24 6.50 11.00 1.29 6.00 9.50 1.34 6.50 12.00 1.28 6.05 10.08 1.47 3.00 1.43 2.83 -1.50 1.91 1.99 1.90 2.00 1.96 2.15 1.85 2.03 Italy 1 2021

760 rows × 48 columns



The targets:

Y_train
away_win__full_time_goals draw__full_time_goals home_win__full_time_goals over_2.5__full_time_goals under_2.5__full_time_goals
0 True False False False True
1 True False False True False
2 False False True False True
3 False True False True False
4 False True False False True
... ... ... ... ... ...
755 True False False False True
756 True False False True False
757 True False False True False
758 False False True True False
759 False False True False True

760 rows × 5 columns



The market average odds:

Odds_train
market_average__away_win__odds market_average__draw__odds market_average__home_win__odds market_average__over_2.5__odds market_average__under_2.5__odds
0 6.82 3.73 1.57 2.51 1.52
1 1.55 4.40 5.76 1.61 2.31
2 7.25 4.59 1.44 1.68 2.17
3 2.48 2.95 3.26 2.81 1.43
4 3.37 3.25 2.25 2.18 1.68
... ... ... ... ... ...
755 3.04 3.35 2.39 1.76 2.08
756 1.87 3.96 3.88 1.66 2.24
757 1.66 4.23 4.82 1.51 2.55
758 4.82 4.08 1.68 1.54 2.47
759 12.91 6.92 1.21 1.37 3.09

760 rows × 5 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.

X_fix, _, Odds_fix = dataloader.extract_fixtures_data()

The input data:

X_fix
home_team away_team market_maximum__home_win__odds market_maximum__draw__odds market_maximum__away_win__odds market_average__home_win__odds market_average__draw__odds market_average__away_win__odds bet365_closing__home_win__odds bet365_closing__draw__odds bet365_closing__away_win__odds betwin_closing__home_win__odds betwin_closing__draw__odds betwin_closing__away_win__odds interwetten_closing__home_win__odds interwetten_closing__draw__odds interwetten_closing__away_win__odds pinnacle_closing__home_win__odds pinnacle_closing__draw__odds pinnacle_closing__away_win__odds williamhill_closing__home_win__odds williamhill_closing__draw__odds williamhill_closing__away_win__odds vcbet_closing__home_win__odds vcbet_closing__draw__odds vcbet_closing__away_win__odds market_maximum_closing__home_win__odds market_maximum_closing__draw__odds market_maximum_closing__away_win__odds market_average_closing__home_win__odds market_average_closing__draw__odds market_average_closing__away_win__odds market_maximum_closing__over_2.5__odds market_maximum_closing__under_2.5__odds market_average_closing__over_2.5__odds market_average_closing__under_2.5__odds market_average_closing__size_of_asian_handicap_home_team__odds bet365_closing__asian_handicap_home_team__odds bet365_closing__asian_handicap_away_team__odds pinnacle_closing__asian_handicap_home_team__odds pinnacle_closing__asian_handicap_away_team__odds market_maximum_closing__asian_handicap_home_team__odds market_maximum_closing__asian_handicap_away_team__odds market_average_closing__asian_handicap_home_team__odds market_average_closing__asian_handicap_away_team__odds league division year
date
2022-01-19 Lugo Almeria 3.65 3.36 2.30 3.39 3.16 2.18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Spain 2 2022
2022-01-19 Rizespor Antalyaspor 2.70 3.56 2.76 2.58 3.37 2.65 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-19 Valencia Sevilla 3.42 3.28 2.49 3.23 3.17 2.38 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Spain 1 2022
2022-01-19 Fenerbahce Altay 1.42 5.20 8.65 1.38 4.85 7.55 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-19 Trabzonspor Giresunspor 1.67 4.20 5.75 1.62 3.93 5.30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-19 Celta Osasuna 1.97 3.52 4.90 1.89 3.41 4.45 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Spain 1 2022
2022-01-19 Goztep Sivasspor 2.55 3.45 3.11 2.43 3.23 2.93 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-19 Kayserispor Buyuksehyr 3.69 3.53 2.28 3.37 3.25 2.19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-19 Genk Mechelen 1.69 4.38 5.00 1.65 4.16 4.63 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Belgium 1 2022
2022-01-19 Volos NFC Apollon 1.78 3.80 4.75 1.74 3.64 4.52 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Greece 1 2022
2022-01-19 Toulouse Nancy 1.54 4.33 7.00 1.50 4.19 6.39 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN France 2 2022
2022-01-19 Amiens Ajaccio 3.32 3.22 2.52 3.14 3.00 2.42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN France 2 2022
2022-01-19 Montpellier Troyes 1.81 4.30 4.70 1.75 3.96 4.43 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN France 1 2022
2022-01-19 Lille Lorient 1.57 4.60 6.90 1.51 4.33 6.33 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN France 1 2022
2022-01-19 Clermont Strasbourg 3.24 3.69 2.36 3.12 3.46 2.27 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN France 1 2022
2022-01-19 Reading Luton 3.90 3.72 2.08 3.68 3.53 2.00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN England 4 2022
2022-01-19 Hull Blackburn 3.30 3.50 2.40 3.03 3.30 2.36 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN England 4 2022
2022-01-19 Brentford Man United 4.80 3.89 1.88 4.51 3.64 1.83 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN England 4 2022
2022-01-19 Leicester Tottenham 3.22 3.60 2.47 3.04 3.42 2.36 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN England 4 2022
2022-01-20 Getafe Granada 2.20 3.25 4.18 2.13 3.10 3.90 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Spain 1 2022
2022-01-20 Alanyaspor Hatayspor 2.46 3.75 3.08 2.36 3.47 2.85 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022
2022-01-20 Galatasaray Kasimpasa 1.77 4.00 5.00 1.71 3.80 4.66 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Turkey 1 2022


The market average odds:

Odds_fix
market_average__away_win__odds market_average__draw__odds market_average__home_win__odds market_average__over_2.5__odds market_average__under_2.5__odds
0 2.18 3.16 3.39 2.15 1.68
1 2.65 3.37 2.58 1.95 1.85
2 2.38 3.17 3.23 2.31 1.62
3 7.55 4.85 1.38 1.60 2.32
4 5.30 3.93 1.62 1.91 1.89
5 4.45 3.41 1.89 2.22 1.67
6 2.93 3.23 2.43 2.10 1.73
7 2.19 3.25 3.37 1.98 1.82
8 4.63 4.16 1.65 1.48 2.59
9 4.52 3.64 1.74 1.97 1.81
10 6.39 4.19 1.50 1.75 2.02
11 2.42 3.00 3.14 2.25 1.62
12 4.43 3.96 1.75 1.81 2.02
13 6.33 4.33 1.51 1.83 1.98
14 2.27 3.46 3.12 1.93 1.87
15 2.00 3.53 3.68 1.99 1.81
16 2.36 3.30 3.03 2.11 1.72
17 1.83 3.64 4.51 1.89 1.94
18 2.36 3.42 3.04 1.78 2.06
19 3.90 3.10 2.13 2.59 1.49
20 2.85 3.47 2.36 1.74 2.08
21 4.66 3.80 1.71 1.83 1.96


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

Gallery generated by Sphinx-Gallery