FBRef#
[1]:
import sys
sys.path.append("../../")
import penaltyblog as pb
List available competitions#
[2]:
pb.scrapers.FBRef.list_competitions()
[2]:
['BEL First Division A',
'BEL First Division B',
'DEU Bundesliga 1',
'DEU Bundesliga 2',
'ENG Premier League',
'ENG Championship',
'ENG League 1',
'ENG League 2',
'ENG Conference',
'ESP La Liga',
'ESP La Liga Segunda',
'FRA Ligue 1',
'FRA Ligue 2',
'GRC Super League',
'ITA Serie A',
'ITA Serie B',
'NLD Eredivisie',
'PRT Liga 1',
'RUS Premier League',
'SCO Premier League',
'SCO Division 1',
'TUR Super Lig']
Get fixtures#
[3]:
fbref = pb.scrapers.FBRef("ENG Premier League", "2022-2023")
df = fbref.get_fixtures()
df.head()
/Users/martin/repos/penaltyblog/examples/scrapers/../../penaltyblog/scrapers/fbref.py:160: FutureWarning: Passing literal html to 'read_html' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.
pd.read_html(content)[0]
[3]:
competition | season | datetime | week | day | date | time | team_home | xg_home | xg_away | team_away | attendance | venue | referee | goals_home | goals_away | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ||||||||||||||||
1659657600---crystal_palace---arsenal | ENG Premier League | 2022-2023 | 2022-08-05 20:00:00 | 1.0 | Fri | 2022-08-05 | 20:00 | Crystal Palace | 1.2 | 1.0 | Arsenal | 25286.0 | Selhurst Park | Anthony Taylor | 0.0 | 2.0 |
1659744000---bournemouth---aston_villa | ENG Premier League | 2022-2023 | 2022-08-06 15:00:00 | 1.0 | Sat | 2022-08-06 | 15:00 | Bournemouth | 0.6 | 0.7 | Aston Villa | 11013.0 | Vitality Stadium | Peter Bankes | 2.0 | 0.0 |
1659744000---everton---chelsea | ENG Premier League | 2022-2023 | 2022-08-06 17:30:00 | 1.0 | Sat | 2022-08-06 | 17:30 | Everton | 0.7 | 1.5 | Chelsea | 39254.0 | Goodison Park | Craig Pawson | 0.0 | 1.0 |
1659744000---fulham---liverpool | ENG Premier League | 2022-2023 | 2022-08-06 12:30:00 | 1.0 | Sat | 2022-08-06 | 12:30 | Fulham | 1.2 | 1.2 | Liverpool | 22207.0 | Craven Cottage | Andy Madley | 2.0 | 2.0 |
1659744000---leeds_united---wolves | ENG Premier League | 2022-2023 | 2022-08-06 15:00:00 | 1.0 | Sat | 2022-08-06 | 15:00 | Leeds United | 0.8 | 1.3 | Wolves | 36347.0 | Elland Road | Robert Jones | 2.0 | 1.0 |
List stats available for this competition#
[4]:
fbref.list_stat_types()
[4]:
['standard',
'goalkeeping',
'advanced_goalkeeping',
'shooting',
'passing',
'passing_types',
'goal_shot_creation',
'defensive_actions',
'possession',
'playing_time',
'misc']
Get stats#
[5]:
stats = fbref.get_stats("standard")
/Users/martin/repos/penaltyblog/examples/scrapers/../../penaltyblog/scrapers/fbref.py:233: FutureWarning: Passing literal html to 'read_html' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.
dfs = pd.read_html(content)
[6]:
stats["players"].head()
[6]:
nation | pos | squad | born | playing_time_mp | playing_time_starts | playing_time_min | playing_time_90s | performance_gls | performance_ast | ... | per_90_minutes_g-pk | per_90_minutes_g+a-pk | per_90_minutes_xg | per_90_minutes_xag | per_90_minutes_xg+xag | per_90_minutes_npxg | per_90_minutes_npxg+xag | season | competition | age_years | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
player | |||||||||||||||||||||
Aaron Cresswell | eng ENG | DF | West Ham | 1989 | 28.0 | 24.0 | 2235.0 | 24.8 | 0 | 1 | ... | 0.00 | 0.04 | 0.01 | 0.15 | 0.16 | 0.01 | 0.16 | 2022-2023 | ENG Premier League | 32.0 |
Aaron Hickey | sct SCO | DF | Brentford | 2002 | 26.0 | 23.0 | 1916.0 | 21.3 | 0 | 1 | ... | 0.00 | 0.05 | 0.02 | 0.02 | 0.04 | 0.02 | 0.04 | 2022-2023 | ENG Premier League | 20.0 |
Aaron Ramsdale | eng ENG | GK | Arsenal | 1998 | 38.0 | 38.0 | 3420.0 | 38.0 | 0 | 0 | ... | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2022-2023 | ENG Premier League | 24.0 |
Aaron Wan-Bissaka | eng ENG | DF | Manchester Utd | 1997 | 19.0 | 16.0 | 1435.0 | 15.9 | 0 | 0 | ... | 0.00 | 0.00 | 0.07 | 0.06 | 0.14 | 0.07 | 0.14 | 2022-2023 | ENG Premier League | 24.0 |
Abdoulaye Doucouré | ml MLI | MF | Everton | 1993 | 25.0 | 17.0 | 1533.0 | 17.0 | 5 | 2 | ... | 0.29 | 0.41 | 0.14 | 0.13 | 0.27 | 0.14 | 0.27 | 2022-2023 | ENG Premier League | 29.0 |
5 rows × 36 columns
[7]:
stats["squad_for"].head()
[7]:
#_pl | age | poss | playing_time_mp | playing_time_starts | playing_time_min | playing_time_90s | performance_gls | performance_ast | performance_g+a | ... | per_90_minutes_g+a | per_90_minutes_g-pk | per_90_minutes_g+a-pk | per_90_minutes_xg | per_90_minutes_xag | per_90_minutes_xg+xag | per_90_minutes_npxg | per_90_minutes_npxg+xag | season | competition | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
squad | |||||||||||||||||||||
Arsenal | 26 | 24.7 | 59.3 | 38.0 | 418.0 | 3420.0 | 38.0 | 84 | 64 | 148 | ... | 3.89 | 2.13 | 3.82 | 1.88 | 1.41 | 3.29 | 1.81 | 3.22 | 2022-2023 | ENG Premier League |
Aston Villa | 26 | 27.0 | 49.3 | 38.0 | 418.0 | 3420.0 | 38.0 | 49 | 35 | 84 | ... | 2.21 | 1.21 | 2.13 | 1.32 | 1.02 | 2.34 | 1.24 | 2.26 | 2022-2023 | ENG Premier League |
Bournemouth | 31 | 26.3 | 40.4 | 38.0 | 418.0 | 3420.0 | 38.0 | 37 | 24 | 61 | ... | 1.61 | 0.97 | 1.61 | 1.01 | 0.75 | 1.76 | 1.01 | 1.76 | 2022-2023 | ENG Premier League |
Brentford | 25 | 26.2 | 43.8 | 38.0 | 418.0 | 3420.0 | 38.0 | 56 | 36 | 92 | ... | 2.42 | 1.29 | 2.24 | 1.48 | 1.01 | 2.49 | 1.32 | 2.33 | 2022-2023 | ENG Premier League |
Brighton | 29 | 26.3 | 60.2 | 38.0 | 418.0 | 3420.0 | 38.0 | 68 | 46 | 114 | ... | 3.00 | 1.63 | 2.84 | 1.93 | 1.37 | 3.30 | 1.81 | 3.19 | 2022-2023 | ENG Premier League |
5 rows × 33 columns
[8]:
stats["squad_against"].head()
[8]:
#_pl | age | poss | playing_time_mp | playing_time_starts | playing_time_min | playing_time_90s | performance_gls | performance_ast | performance_g+a | ... | per_90_minutes_g+a | per_90_minutes_g-pk | per_90_minutes_g+a-pk | per_90_minutes_xg | per_90_minutes_xag | per_90_minutes_xg+xag | per_90_minutes_npxg | per_90_minutes_npxg+xag | season | competition | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
squad | |||||||||||||||||||||
vs Arsenal | 26 | 26.7 | 40.1 | 38.0 | 418.0 | 3420.0 | 38.0 | 42 | 27 | 69 | ... | 1.82 | 1.03 | 1.74 | 1.10 | 0.83 | 1.93 | 1.00 | 1.83 | 2022-2023 | ENG Premier League |
vs Aston Villa | 26 | 26.5 | 50.6 | 38.0 | 418.0 | 3420.0 | 38.0 | 42 | 25 | 67 | ... | 1.76 | 0.97 | 1.63 | 1.38 | 0.95 | 2.33 | 1.26 | 2.21 | 2022-2023 | ENG Premier League |
vs Bournemouth | 31 | 26.6 | 59.9 | 38.0 | 418.0 | 3420.0 | 38.0 | 68 | 49 | 117 | ... | 3.08 | 1.63 | 2.92 | 1.68 | 1.19 | 2.87 | 1.54 | 2.73 | 2022-2023 | ENG Premier League |
vs Brentford | 25 | 26.6 | 56.6 | 38.0 | 418.0 | 3420.0 | 38.0 | 43 | 30 | 73 | ... | 1.92 | 1.08 | 1.87 | 1.28 | 0.94 | 2.22 | 1.25 | 2.19 | 2022-2023 | ENG Premier League |
vs Brighton | 29 | 26.5 | 39.5 | 38.0 | 418.0 | 3420.0 | 38.0 | 47 | 34 | 81 | ... | 2.13 | 1.08 | 1.97 | 1.32 | 0.89 | 2.21 | 1.15 | 2.04 | 2022-2023 | ENG Premier League |
5 rows × 33 columns