Releases: probberechts/soccerdata
v1.5.2
Changes
🚀 Features
- [FBref] exception if opponent stats not available (#379) @probberechts
🪲 Fixes
- Handle Selenium 4.13 no longer supporting headless (#412) @probberechts
- [FBref] Fix read_team_match_stats to deal with missing time (#406) @probberechts
- [FBref] Update read_team_match_stats to deal with latest season (#384) @mhd0528
- [SoFIFA] Fix read_leagues (#318) @probberechts
👷 Continuous Integration
- Update RTD config (#393) @probberechts
📚 Documentation
- Improve docs (#321) @probberechts
📦 Dependencies
- Drop Python 3.8 support (#411) @probberechts
- Update dependency Sphinx to v7.2.6 (#407) @renovate
- Update dependency mypy to v1.6.0 (#408) @renovate
- Update dependency pre-commit-hooks to v4.5.0 (#409) @renovate
- Update dependency Sphinx to v7.2.6 (#405) @renovate
- Update dependency Sphinx to v7.2.6 (#404) @renovate
- Update dependency Sphinx to v7.2.6 (#401) @renovate
- Update dependency pylint to v3 (#403) @renovate
- Update dependency coverage to v7.3.2 (#402) @renovate
- Update dependency Sphinx to v7.2.6 (#399) @renovate
- Update dependency rich to v13.6.0 (#400) @renovate
- Update dependency Sphinx to v7.2.6 (#397) @renovate
- Update dependency Sphinx to v7.2.6 (#394) @renovate
- Update dependency Unidecode to v1.3.7 (#392) @renovate
- Update dependency pylint to v2.17.6 (#391) @renovate
- Update actions/checkout action to v4.1.0 (#387) @renovate
- Update dependency Sphinx to v7.2.6 (#388) @renovate
- Update actions/setup-python action to v4.7.1 (#390) @renovate
- Update dependency time-machine to v2.13.0 (#383) @renovate
- Update dependency Sphinx to v7.2.6 (#380) @renovate
- Update dependency rich to v13.5.3 (#381) @renovate
- Update dependency Sphinx to v7.2.6 (#376) @renovate
- Update dependency flake8-bugbear to v23.9.16 (#378) @renovate
- Update dependency sphinx to v7.2.6 (#377) @renovate
- Update dependency Sphinx to v7.2.5 (#363) @renovate
- Update actions/checkout action to v4 (#364) @renovate
- Update dependency black to v23.9.1 (#371) @renovate
- Update crazy-max/ghaction-github-labeler action to v5 (#373) @renovate
- Update dependency furo to v2023.9.10 (#374) @renovate
- Update dependency furo to v2023.9.10 (#375) @renovate
- Update actions/cache action to v3.3.2 (#368) @renovate
- Update dependency virtualenv to v20.24.5 (#369) @renovate
- Update actions/upload-artifact action to v3.1.3 (#367) @renovate
- Update dependency coverage to v7.3.1 (#365) @renovate
- Update dependency Sphinx to v7.2.5 (#362) @renovate
- Update dependency Sphinx to v7.2.5 (#355) @renovate
- Update crazy-max/ghaction-github-labeler action to v4.2.0 (#358) @renovate
- Update dependency pytest to v7.4.1 (#360) @renovate
- Update dependency pre-commit to v3.4.0 (#361) @renovate
- Update dependency sphinx to v7.2.5 (#356) @renovate
- Update dependency virtualenv to v20.24.4 (#352) @renovate
- Update dependency Sphinx to v7.2.4 (#350) @renovate
- Update dependency sphinx to v7.2.4 (#353) @renovate
- Update dependency sphinx to v7.2.3 (#351) @renovate
- Update dependency Sphinx to v7.2.2 (#349) @renovate
- Update dependency nbsphinx to v0.9.3 (#344) @renovate
- Update dependency nbsphinx to v0.9.3 - autoclosed (#345) @renovate
- Update dependency Sphinx to v7.2.2 (#348) @renovate
- Update dependency Sphinx to v7.2.2 (#347) @renovate
- Update actions/checkout action to v3.6.0 (#346) @renovate
- Update dependency Sphinx to v7.2.2 (#341) @renovate
- Update dependency sphinx to v7.2.2 (#335) @renovate
- Update dependency poetry to v1.6.1 (#339) @renovate
- Update dependency undetected-chromedriver to v3.5.3 (#343) @renovate
- Update dependency furo to v2023.8.19 (#338) @renovate
- Update dependency furo to v2023.8.17 (#336) @renovate
- Update dependency time-machine to v2.12.0 (#334) @renovate
- Update dependency furo to v2023.8.17 (#337) @renovate
- Update dependency Pygments to v2.16.1 (#326) @renovate
- Update dependency mypy to v1.5.0 (#329) @renovate
- Update dependency virtualenv to v20.24.3 (#331) @renovate
- Update dependency coverage to v7.3.0 (#333) @renovate
- Update pypa/gh-action-pypi-publish action to v1.8.10 (#330) @renovate
- Update dependency sphinx to v7.1.2 (#325) @renovate
- Update dependency Sphinx to v7.1.2 (#324) @renovate
- Update dependency undetected-chromedriver to v3.5.1 (#327) @renovate
- Update dependency rich to v13.5.2 (#323) @renovate
- Update dependency rich to v13.5.1 (#320) @renovate
- Update dependency flake8 to v6.1.0 (#319) @renovate
v1.5.1
Changes
🪲 Fixes
- [FBref] Handle missing Scores & Fixtures page on the Big 5 European Leagues Stats page (#284) @lorenzodb1
- [FBref] Handle canceled / forfeited games (#309) @lorenzodb1
- [FBref] Handle teammates with identical name (#306) @probberechts
👷 Continuous Integration
- Add 'dependencies' label to renovate PRs (#312) @probberechts
📚 Documentation
- [FBref] Update API docs (#307) @probberechts
📦 Dependencies
- Update dependency virtualenv to v20.24.1 (#308) @renovate
- Update dependency sphinx to v7.1.1 (#316) @renovate
- Update dependency furo to v2023.7.26 (#315) @renovate
- Update dependency virtualenv to v20.24.2 (#314) @renovate
- Update dependency pip to v23.2.1 (#313) @renovate
- Update dependency undected-chromedriver to v3.5.0 (#311) @probberechts
v1.5.0
Changes
🚀 Features
- [FBref] Informative errors when merge fails (#303) @probberechts
- Add support for Women's World Cup (#302) @probberechts
- [MatchHistory] Drop empty cols (#264) @probberechts
🪲 Fixes
- [FBref] Remove non-data rows from output dataframe (#289) @probberechts
- [FBref] filter leagues in read_team_match_stats (#290) @probberechts
- [FBref] Handle missing flag icon in Squad or Nation column (#285) @lorenzodb1
- [FBref] Fix invalid cache filenames in read_team_season_stats (#283) @lorenzodb1
- [MatchHistory] Fix date format bug (#263) @probberechts
📦 Dependencies
- Update dependency pandas to v2 (#208) @renovate
- Update dependency pip to v23.2 (#301) @renovate
- Update dependency virtualenv to v20.24.0 (#300) @renovate
- Update actions/setup-python action to v4.7.0 (#298) @renovate
- Update pypa/gh-action-pypi-publish action to v1.8.8 (#297) @renovate
- Update dependency black to v23.7.0 (#296) @renovate
- Update dependency time-machine to v2.11.0 (#295) @renovate
- Update dependency flake8-bugbear to v23.7.10 (#294) @renovate
- Update dependency nox-poetry to v1.0.3 (#293) @renovate
- Update dependency lxml to v4.9.3 (#291) @renovate
- Update dependency pandas to v2.0.3 (#287) @renovate
- Update release-drafter/release-drafter action to v5.24.0 (#280) @renovate
- Update pypa/gh-action-pypi-publish action to v1.8.7 (#279) @renovate
- Update dependency time-machine to v2.10.0 (#275) @renovate
- Update dependency pytest to v7.4.0 (#278) @renovate
- Update dependency mypy to v1.4.0 (#274) @renovate
- Update dependency undetected-chromedriver to v3.5.0 (#267) @renovate
- Update dependency pytest-mock to v3.11.1 (#272) @renovate
- Update dependency virtualenv to v20.23.1 (#273) @renovate
- Update dependency rich to v13.4.2 (#268) @renovate
- Update dependency pre-commit to v3.3.3 (#270) @renovate
- Update dependency pytest to v7.3.2 (#266) @renovate
- Update actions/checkout action to v3.5.3 (#265) @renovate
- Update dependency selenium to v4.10.0 (#262) @renovate
- Update dependency flake8-bugbear to v23.6.5 (#261) @renovate
- Update dependency poetry to v1.5.1 (#257) @renovate
- Update dependency rich to v13.4.1 (#258) @renovate
- Update dependency coverage to v7.2.7 (#256) @renovate
- Update dependency poetry to v1.5.0 (#147) @renovate
- Update dependency nbsphinx to v0.9.2 (#255) @renovate
- Update actions/setup-python action to v4.6.1 (#254) @renovate
- Update dependency furo to v2023.5.20 (#253) @renovate
v1.4.0
🚀 Features
- [FBref] Add read_team_match_stats() (#195)
- [FBref] Add read_events() to retrieve the timing of goals, cards and substitutions in a game
- [FBref] Extend read_lineup() function with "position" and "minutes played" columns
💥 Breaking Changes
- [SoFIFA] Major fixes and API changes
- [FBref] Standardize column names
🪲 Fixes
- [FBref] Handle missing match shots data
👷 Continuous Integration
- Automate future releases using Release Drafter
📦 Dependencies
- Update dependency Sphinx to v7 (#237) @renovate
- Update dependency furo to v2023.5.20 (#250) @renovate
- Update dependency pre-commit to v3.3.2 (#248) @renovate
- Update dependency requests to v2.31.0 (#251) @renovate
- Update codecov/codecov-action action to v3.1.4 (#247) @renovate
- Update dependency mypy to v1.3.0 (#245) @renovate
- Update dependency flake8-bugbear to v23.5.9 (#244) @renovate
- Update dependency undetected-chromedriver to v3.4.7 (#243) @renovate
- Update dependency selenium to v4.9.1 (#241) @renovate
- Update dependency pylint to v2.17.4 (#240) @renovate
- Update dependency pre-commit to v3.3.1 (#238) @renovate
- Update pypa/gh-action-pypi-publish action to v1.8.6 (#239) @renovate
- Update dependency requests to v2.30.0 (#235) @renovate
- Update dependency coverage to v7.2.4 (#236) @renovate
- Update dependency requests to v2.29.0 (#233) @renovate
- Update dependency rich to v13.3.5 (#234) @renovate
- Update dependency pip to v23.1.2 (#232) @renovate
- Update dependency sphinx to v6.2.1 (#230) @renovate
- Update dependency pylint to v2.17.3 (#231) @renovate
- Update dependency nox to v2023 (#228) @renovate
- Update dependency Sphinx to v6.2.0 (#229) @renovate
- Update dependency pip to v23.1.1 (#227) @renovate
Add support for scraping World Cup data
New features
Add support for scraping World Cup data
The World Cup was added to the default available leagues for the WhoScored and FBref readers. Other tournaments can be added by modifying the league_dict.json
config file.
from soccerdata import WhoScored, FBref
ws = WhoScored(leagues="INT-World Cup", seasons="2022")
fb = FBref(leagues="INT-World Cup", seasons="2022")
Changes
- The WhoScored reader now uses the non-headless mode by default. Scraping in headless mode typically results in getting blocked quickly. The old behaviour can be recovered by initializing the reader as
WhoScored(..., headless=True)
.
Fixes
- The WhoScored reader can now deal with an empty match schedule, which can occur before the start of a season or tournament round.
Faster scraping of Big 5 leagues stats from FBref
New features
Faster scraping of Big 5 leagues stats (by @andrewRowlinson)
FBref has pages for the big five European leagues that allow you to more efficiently get team and player data from multiple leagues. This commit adds a special "Big 5 European Leagues Combined" league option to get data from these pages.
import soccerdata as sd
fbref = sd.FBref(leagues="Big 5 European Leagues Combined", seasons="20-21")
team_season_stats = fbref.read_team_season_stats(stat_type="standard")
player_season_stats = fbref.read_player_season_stats(stat_type="standard")
1.1.0: Improvements for FBRef scraper
New features
FBref
Faster scraping of player season stats (#69)
Previously, the fbref.read_team_season_stats
method visited the page of each individual team in a league to obtain stats for players in a league. FBRef now has a single page for each league/season where player stats can be obtained for each player in the league (e.g., https://fbref.com/en/comps/9/stats/Premier-League-Stats). Due to this change the fbref.read_team_season_stats(...)
method now uses 15-20x less requests, leading to a large speed-up.
Support retrieving "Opponent Stats" (#78)
A "opponent_stats" flag was added to the fbref.read_season_stats(...)
function, which enables retrieving the "Opponent Stats" table of a team.
Always group "MP" under "Playing Time" (#79)
FBRef is inconsistent in how it displays the "MP" (Matches Played) column. For some seasons, it is displayed as a separate category, while it is grouped under "Playing Time" for other seasons. This results in a column with NaN values when two seasons are merged. Therefore, the "MP" column is now always put under "Playing Time".
Docs
Add docs for specifying custom proxy (#83)
Not all Tor distribution use the same default port of 9050. The docs now describe how to configure a custom port.
1.0.0
Breaking Changes
- Several columns were renamed, added and droped in the output dataframes to increase uniformity between
datasources.
New features
WhoScored
The WhoScored reader can now return event data in various output formats. The following formats are supported:
- A dataframe with all events.
- A dict with the original unformatted WhoScored JSON.
- A dataframe with the SPADL representation
of the original events. - A dataframe with the Atomic-SPADL representation
of the original events. - A
socceration.data.opta.OptaLoader
instance. - No data. This is useful for caching data.
See https://soccerdata.readthedocs.io/en/latest/datasources/WhoScored.html for examples.
0.1.0: Custom proxies and FBref rate limit policy
Breaking Changes
- The
use_tor
parameter was replaced by ause_proxy='tor'
parameter in all readers
New features
- You can specify a custom proxy using the
use_proxy
parameter for all readers.
ws = soccerdata.WhoScored(use_proxy={'http': 'http://126.352.12.3:5471'})
Fixes
FBref
- FBref has implemented a new rate-limiting polity allowing only one request every two seconds. The FBref reader is now configured to comply with this.
0.0.3: Fixes for WhoScored and MatchHistory readers
Bugfixes
WhoScored
- The summary tab is now used as a backup for retrieving the schedule when the fixtures tab is empty. This often occurs for multi-stage tournaments. (#15)
- Fixed incorrect resolver rules for the Tor proxy. (#23)
MatchHistory
- Football-data.co.uk switched from http to https only.
Docs
- Added example notebooks for reading data from each supported data source.