Library for ranking tennis players
Project description
tennis-rank
Computes tennis player ranks using pagerank algorithm on match graph
Install
Using pip:
pip install tennisrank
Run tests:
make lint
make test
Example
from tennisrank.utils import load_atp
from tennisrank.model import Player, PlayerRank
from tennisrank.algorithm import TennisRank
matches = load_atp(2021)
ranker = TennisRank(matches)
# Get top 3 on all surfaces
top = 3
for surface in ['all', 'hard', 'clay', 'grass']:
print(f'Top {top} on {surface} surface (unit weight):')
ranks = ranker.get_ranks(surface=surface, point_diff=False)
for player_rank in ranks[:top]:
print('-', player_rank)
print(f'{len(ranks)-top} more...')
print()
# Get rank of particular player
ranker.get_rank('Nuvak Djokovich') # fuzzy matching
Creates the following output:
Top 3 on all surface (unit weight):
- PlayerRank(player=Player(id=104925, name='Novak Djokovic'), rank=1, surface='all')
- PlayerRank(player=Player(id=126774, name='Stefanos Tsitsipas'), rank=2, surface='all')
- PlayerRank(player=Player(id=106421, name='Daniil Medvedev'), rank=3, surface='all')
299 more...
Top 3 on hard surface (unit weight):
- PlayerRank(player=Player(id=106421, name='Daniil Medvedev'), rank=1, surface='hard')
- PlayerRank(player=Player(id=104925, name='Novak Djokovic'), rank=2, surface='hard')
- PlayerRank(player=Player(id=100644, name='Alexander Zverev'), rank=3, surface='hard')
251 more...
Top 3 on clay surface (unit weight):
- PlayerRank(player=Player(id=104745, name='Rafael Nadal'), rank=1, surface='clay')
- PlayerRank(player=Player(id=104925, name='Novak Djokovic'), rank=2, surface='clay')
- PlayerRank(player=Player(id=126774, name='Stefanos Tsitsipas'), rank=3, surface='clay')
190 more...
Top 3 on grass surface (unit weight):
- PlayerRank(player=Player(id=104925, name='Novak Djokovic'), rank=1, surface='grass')
- PlayerRank(player=Player(id=200000, name='Felix Auger Aliassime'), rank=2, surface='grass')
- PlayerRank(player=Player(id=126610, name='Matteo Berrettini'), rank=3, surface='grass')
155 more...
Publish new version
For developers
Via Github Actions
- Update version number in pyproject.toml
- Merge to main (via PR, direct push to main or other way)
- Create new release on Github
Direct to PyPI
Build and upload:
python -m build
twine upload dist/*
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tennisrank-0.1.5.tar.gz
(8.6 kB
view hashes)
Built Distribution
Close
Hashes for tennisrank-0.1.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 338d56bf931b14137d8442f700d7875353b6b2b533c177882a410d1a8c683217 |
|
MD5 | 1aaf3bc5b1d18e1c7df265e59ac43417 |
|
BLAKE2b-256 | e00c9eac606340e4cf2847890a5199d893275c54b3974140fbea4e96230e7ea3 |