Giter Site home page Giter Site logo

tennis_slam_pointbypoint's Introduction

Grand Slam Point-by-Point Data, 2011-present

This repo contains point-by-point data for most[1] main-draw singles Grand Slam matches since 2011. It was scraped from the four Grand Slam websites shortly after each event.

There are two files for each tournament. "-matches.csv" contain metadata for all the singles matches included from the tournament, and '-points.csv' contains all the available data for each point. Where doubles data is available, men's and women's doubles are in files with suffixes "-matches-doubles.csv" and "-points-doubles.csv." Where mixed doubles data is available, it is in files with suffixes "-matches-mixed.csv" and "-points-mixed.csv."

Unfortunately, much of the most useful data isn't available for every tournament, such as serve speed, first/second serve indicators, and rally length. In some cases, very similar data (such as rally length) does not appear in the same column for every event. On the bright side, there's more data now than a few years ago, with additions such as distance run, serve depth, and return depth.

For even more detailed data, including non-slam matches but not including all slam matches, see my Match Charting Project[2].

I'll try to keep this updated after each tournament, but I can't make any promises as to punctuality.

'Missing' events

Most of the data in this repo was published by the grand slams as part of IBM's "Slamtracker" feature. Starting in 2018, the Australian Open and French Open no longer worked with IBM. They partnered with Infosys, which now offers a similar "MatchBeats" feature on the AO and FO websites. Much of the data is similar -- serve speeds, 1st/2nd serve indicators, rally lengths, and ace/double fault/winner/unforced error indicators -- though some of IBM's newer features, such as distance run, are not included.

I've transformed the published data from the 2018-present AO and FO into a format similar to the "Slamtracker" data from other events. Using data from both Slamtracker and MatchBeats events will require attention to which attributes are available for which slams. (As noted above, this is also true for Slamtracker alone, which was not consistent from year to year.) However, I've tried to make this as seamless as possible.

From the 2018-19 AO and FO, there are many matches (especially doubles) in which serve speed and rally length were not recorded. In the original source data, serve speed is always noted as 0, and rally length is 3 or 0. Use of data from those matches would require careful attention to those limitations.

Doubles

I've added 2018-19 French Open and 2018-21 Australian Open men's, women's, and mixed doubles, with the same limitations as the singles data from those events, as mentioned above. To accommodate doubles, I've added several columns to the 'matches' files for doubles events, such that 'partner1' is the partner of 'player1', and so on. I don't have equivalent doubles data for most of the other slams with singles data included here, but I do have a bit, and I hope to clean that up and include it in the future.

License

Creative Commons License
Tennis databases, files, and algorithms by Jeff Sackmann / Tennis Abstract is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at https://github.com/JeffSackmann.

In other words: Attribution is required. Non-commercial use only.


[1] In general, this data is available for matches on courts with the Hawkeye system installed. The vast majority of missing matches are first-rounders. Many of the more recent events included all matches.

[2] Homepage: http://www.tennisabstract.com/charting/meta.html Repo: https://github.com/JeffSackmann/tennis_MatchChartingProject

tennis_slam_pointbypoint's People

Contributors

jeffsackmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tennis_slam_pointbypoint's Issues

Wrong column headers for AO-2017

Hi Jeff,

Appears that there are 67 items in each column, but only 65 column headers.

headers = "match_id,ElapsedTime,SetNo,P1GamesWon,...,ServeWidth,ServeDepth,ReturnDepth"
first_row = "2017-ausopen-1101,0:00:00,1,0,...,,,"
print(len(headers.split(",")))
>>> 65
print(len(first_row.split(",")))
>>> 67

Is it possible to get realtime / daily data?

Might you care to add a section in the README.md describing how the data was obtained?

Is there a way to get up-to-date data during a tournament (e.g. Wimbledon)?

And if so, what's the latency? end-of-day?

Data dictionary

The Grand Slams point-by-point data includes the following variables and entries:
ServeWidth = {"B", "BC", "BW", "C", "W"}
ServeDepth = {"CTL", "NCTL"}
ReturnDepth = {"D", "ND"}
ServeIndicator = {1, 2}
Serve_Direction = {0, 1, 2, 3}

Could I know what these mean? Thanks.

Men's or Women's indicator column (event_name) is scarce

I'm getting a lot of conflation between men's and women's when I do entire point-level aggregations. I would like to separate them obviously but before I do so I want to run this by @JeffSackmann and any other maintainers to make sure nobody has a local fix for this already.

> df %>% group_by(event_name) %>% count
# A tibble: 5 ร— 2
# Groups:   event_name [5]
  event_name            n
  <chr>             <int>
1 event_MS          52105
2 event_WS          30912
3 Men's Singles     36666
4 Women's Singles   26380
5 NA              1526475

Wrt how to fix it I was thinking of a simply

  1. Checking which matches went 4 or 5 sets (SetNo >= 4 for all points in a match_id) -> these are obviously men, fill event_name.
  2. Checking which matches only went 2 sets (SetNo <= 2 for all points in a match_id) -> these are obviously women, fill event_name.
  3. For the remaining ones (women's sets who went the distance or men's sets who only went three), check by the names which I have hopefully largely filled in from steps 1 and 2 just above.

Momentum data

Hi, I just have a quick question. How are the P1 Momentum and P2 Momentum figures calculated?
Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.