jeffsackmann / tennis_atp Goto Github PK
View Code? Open in Web Editor NEWATP Tennis Rankings, Results, and Stats
ATP Tennis Rankings, Results, and Stats
1971-421,Montreal / Toronto,Clay
1971-302,Toronto WCT,Carpet
All matches, including final one John Newcombe (1) d. Tom Okker (2) 7-6 3-6 6-2 7-6, are the same.
Difference is only that Toronto WCT does not have seeds and has wrong surface.
I noticed that there may be missing records for the ATP Year_End Championship in 1990, where Agassi defeated Edberg in the final. Just to let you know if you have time to update your data at your convenience. There are no rows with Tourney_Name = 'Tour Finals' in 1990.csv. Thanks for the free database. Please compare:
https://en.wikipedia.org/wiki/1990_ATP_Tour_World_Championships
https://github.com/JeffSackmann/tennis_atp/blob/master/atp_matches_1990.csv
It can be tricky because sometimes this tournament was played the following year in early January so that may be how you got this one missed along with the name change from 'Masters' to 'Tour Finals'.
Rankings for 1999-03-22 have wrong points for ranking 1-1000
For example second Sampras has more points 2735 (should be 3447) then first Moya 2704 (should be 3484)
Instead of a 3 character olympic country code there are numbers instead. Some examples of row numbers are 30717, 30718, 30744 and 30745.
Hi,
Many thanks for this great dataset. I've tried doing that a while ago and gave up, because I didn't have the bandwidth to deal with the messy data issues.
I noticed that some of the dates have incomplete ranking information. For example, 2010-09-06 has only the players ranked 1,001 and lower - the top 1,000 players are missing.
This became evident when I looked at the total number of ranking points each week.
Thanks,
Jerzy
The header does not match the data. While the header has 49 fields, the data rows have 69 fields.
Vina del Mar 2007 is Missing:
http://www.atpworldtour.com/en/scores/archive/vina-del-mar/505/2007/results
atp_rankings_80s.csv
has just one week of rankings each for 1982 and 1983.
[email from p.w.]
105705,Lazare,Kukhalashvili,U,19910205,GEO
105707,Nicolaas,Scholtz,R,19910205,RSA
105707,Nicolaas,Scholtz,R,19910205,RSA
105708,Alastair,Barnes,U,19910207,GBR
nicolaas scholtz is a duplicate. but player with ID 105706 is missing.
While comparing career W-L of some players I realized that the data provided for the files were not entirely correct.
Then I discovered that some walkover data were wrong typed most walkover are set as "W/O" (3 characters) but some matches (apparently random) were set as " W/O" with a blank space in front of the "W" for a total of 4 characters.
Using Excel the filters provide that there are 3 types of "W/O" but I haven't realized which is the third type.
Missing many ATP tournaments in '60 and '70, here is the list of some of them that are more important ones:
1979:
1974:
1973:
1972:
1971:
1970:
How can we increase the frequency of updates?
Some matches from round-robin stage and even one semi-final of World Tour Finals are missing:
Season 2004:
Season 2003:
Season 2002:
Season 2000:
Season 1999:
May I've done some bad operation, but it seems that ATP player 103541 (Kevin Harris) had started his ATP career even before he was birth. Is it possible?
[per email from e.j.]
There are also some matches, albeit fewer, missing from Masters Cup entries from 2002-04. Those matches are:
2002:
RR Carlos Moya def. Marat Safin 6-4 7-5
2003:
RR Rainer Schuettler def. Guillermo Coria 6-3 4-6 6-2
RR Carlos Moya def. Rainer Schuettler 7-5 6-4
2004:
RR Marat Safin def. Guillermo Coria 6-1 6-4
RR Marat Safin def. Tim Henman 6-2 7-6(2)
(via p.w.)
1993-M-SA-USA-02A-1993a
=> There is a bug with the "round" column. it contains the following values: R62, R31, ...
and the tournament misses the final.
1996-M-SA-POR-03A-1996b
=> missing SF and F
1999-M-SA-IND-02A-1999b
=> nothing besides R32 available
2013-M-FU-THA-04A-2013
=> missing F
2014-M-FU-USA-26A-2014
=> There is a bug with the "round" column. it contains the following values: R31, R15 and nothing else (no F, SF, ...)
2015-M-FU-EGY-36A-2015
=> missing F
2015-M-FU-ISR-02A-2015
=> missing F
2015-M-FU-POL-02A-2015
=> missing F
2015-M-FU-USA-26A-2015
=> missing F
challenger:
2015-6250, 2015-7347
=> only 15 R32 matches available and nothing else
2016-3994
=> 1 SF, F and 1 R32 missing
ATP:
2008-438
=> 1 QF, 1 SF, F and some R32s missin
(probably missing some other qualies from this and last couple of years, especially for new events)
[email from g.h.]
I believe I have figured some of this out. The players who are the duplicates are NOT in the match data. I also have reason to believe some of the match data may be incorrect.
Case in point:
109484,Ryan,Thacher,R,19891006,USA
109484,Phil,Whitesell,R,19701110,USA
If you check the data, this match shows up
2012-M-FU-HKG-01A-2012,Hong Kong F1,Hard,32,S,20121203,015,109484,,Q,Phil Whitesell,R,,USA,42.0643394935,1007,8,105291,,Q,Yi Fan Yang,U,,CHN,23.8247775496,1446,2,6-3 6-4,3,R32,,,,,,,,,,,,,,,,,,,
If you compare this to the ITF website, you see this should be Thacher in the match data
(photo attached)
then when you go back to the tournament data, you can see that everything before 1998 is Whitesell, everything after should be Thacher
1991-M-SA-USA-04A-1991a Phil Whitesell
1997-M-SA-USA-02A-1997b Phil Whitesell
1997-M-SA-USA-02A-1997b Phil Whitesell
1997-M-SA-USA-02A-1997b Phil Whitesell
1997-M-SA-USA-02A-1997d Phil Whitesell
1997-M-SA-USA-03A-1997a Phil Whitesell
1997-M-SA-USA-03A-1997a Phil Whitesell
1997-M-SA-USA-03A-1997b Phil Whitesell
1997-M-SA-USA-03A-1997c Phil Whitesell
1997-M-SA-USA-03A-1997d Phil Whitesell
1997-M-SA-USA-06A-1997c Phil Whitesell
2008-M-FU-USA-13A-2008 Phil Whitesell
2008-M-FU-USA-14A-2008 Phil Whitesell
2008-M-FU-USA-14A-2008 Phil Whitesell
2010-M-FU-USA-23A-2010 Phil Whitesell
2012-M-FU-USA-21A-2012 Phil Whitesell
2012-M-FU-USA-21A-2012 Phil Whitesell
2012-M-FU-USA-21A-2012 Phil Whitesell
2012-M-FU-USA-23A-2012 Phil Whitesell
2012-M-FU-USA-23A-2012 Phil Whitesell
2012-M-FU-USA-24A-2012 Phil Whitesell
2012-M-FU-USA-25A-2012 Phil Whitesell
2012-M-FU-USA-25A-2012 Phil Whitesell
2012-M-FU-HKG-01A-2012 Phil Whitesell
2012-M-FU-HKG-01A-2012 Phil Whitesell
2012-M-FU-USA-29A-2012 Phil Whitesell
2012-M-FU-USA-29A-2012 Phil Whitesell
2012-M-FU-USA-31A-2012 Phil Whitesell
2012-M-FU-USA-31A-2012 Phil Whitesell
2012-M-FU-USA-31A-2012 Phil Whitesell
2012-M-FU-USA-32A-2012 Phil Whitesell
2012-M-FU-USA-32A-2012 Phil Whitesell
1996-628 Phil Whitesell
2007-656 Phil Whitesell
2007-39 Phil Whitesell
2007-39 Phil Whitesell
2008-3590 Phil Whitesell
2008-974 Phil Whitesell
duplicate ids in atp_players.csv from id 109450 to 109499. Check it please @JeffSackmann
Missing many tournaments that have abandoned final match (mostly because of weather issues):
[per email from g.h.]
105707
109450
109451
109452
109453
109454
109455
109456
109457
109458
109459
109460
109461
109462
109463
109464
109465
109466
109467
109468
109469
109470
109471
109472
109473
109474
109475
109476
109477
109478
109479
109480
109481
109482
109483
109484
109485
109486
109487
109488
109489
109490
109491
109492
109493
109494
109495
109496
109497
109498
109499
109663
Hi,
all these data collected are fascinating however would it be possible to create a data dictionary to better understand what are exactly some of the fields. For example, in the file atp_matches_2016; there is a variable called tourney_level that can take the value 'G', 'M', 'A', 'D' and I don't know what these categories refer to. In the statistics provided in other tables, it would be also interesting to know what they mean or how they were derived.
Of course, I understand it is an important effort but it's really worth to help understanding in tennis statistics.
Do you think it is something that you could share with the community?
Thanks!
Eagerly awaited update.
[per email from g.h.]
105707 Nicolaas Scholtz Nicolaas Scholtz
109450 Michael Birzon Arumun Surma
109451 Ikponwonsa Amandin Evghenii Corduneanu
109452 Timur Alshin James Anukam
109453 Greg Prudhomme Amir Reza
109454 Luigi Gianuzzi Remiginsz Adamek
109455 Ales Plesnicar Dieter Leurs
109456 Carlos Lozano Chung Hsing Liu
109457 Arkan Vuran Martin Pucalka
109458 Stefan Enciu Alberto Rodriguez Cervantes
109459 Roberto Cavalcanti Jean Baptiste Poux Gautier
109460 Benjamin Althaus Maurice Arraes
109461 Thomas Sascha Winkler Leandro Ribeiro
109462 Robert Kowalczyk Dane Mcgregor
109463 Graeme Dyce Francisco Carrillo
109464 Anton Saranchukov Julian Edwards
109465 Kong Pop Lertchai Octavian Nicodim
109466 Djanibek Orazoliev Kamlesh Shukla
109467 Woo Ram Kim Jagdish Tanwar
109468 Aroon Ramnath Peter Schuster
109469 Sharad Kohli Clay Donato
109470 Sherman Lim Steven Caverzasio
109471 Alexander Zlatnik Paul Podbury
109472 Giordano Boza Ugljesa Ostojic
109473 Alex Stone Kostyantyn Dmytrenko
109474 Adem Ozmeral Paulo Passold
109475 Orcun Seyrek Rodrigo Michelucci
109476 Claudio Alvarado Fernando Maniero
109477 Ruslan Miroshnichenko Vincent Sapene
109478 Kiran Nandkumar Jiri Placek
109479 Rafael Puerto Jaimez Alexandr Kotora
109480 Yavuz Erkangil Alex Roman
109481 Can Uner Carlos Navarro
109482 John Falbo Enrique Cagide
109483 Tony Ro Daniel Gagan
109484 Phil Whitesell Ryan Thacher
109485 Jean Francois Merven Mike Steinherr
109486 Alberto Cammarata Sebastian Schulz
109487 Aaron De Leon Andres Intriago
109488 Chris Johnson Pedro Campos
109489 Rahul Sankhla Renzo Barioni
109490 Andrew Dottino David Valeriano
109491 Jonathan Russo Andrea Turini
109492 Michael Schneider Jonathan Beaskoetxea Etxabarr
109493 Boris Kurtovic Dante Cipulli
109494 Pedro Ast Joseph Guluzian
109495 Francisco Gallardo Jorge Escallon
109496 Whi Kim Arpad Odry
109497 Kaushik Raju Daniel Bustamante
109498 Dmitry Resnyanskiy Alexei Milner
109499 Georgy Kurochkin Thomas Estrada
109663 Andy Lloyd Benjamin Janse Van Rensburg
Alexander Zverev Sr (ID 200630) match and ranking data from years 1982-1986 is merged with Alexander Zverev (Jr) (ID 100644), who is born only in 1997!
1993-01-04
1993-01-25
1993-03-15
1993-03-29
1993-05-31
1993-06-28
1993-09-06
1993-12-27
1994-01-03
1994-01-24
1994-03-14
1994-05-30
1994-06-27
1994-09-05
1994-12-05
1995-01-02
1995-01-23
1995-03-20
1995-06-05
1995-07-03
1995-09-04
1995-12-11
1995-12-25
1996-01-01
1996-01-22
1996-03-25
1996-06-03
File atp_rankings_10s.csv has wrong character at line 604666:
20160613,1709,,>
atp_rankings_00s.csv has the following at line: 585774
20070212,1535,104756,bioTableWrap bioTableWrapAlt">
Is there any way to know which player (winner or loser) served first in the match? I can't find it in any of the csv files and think this would be really helpful to know when analyzing matches in aggregate. Thanks!
atp_players.csv seems to be with a weird text encoding.
Line:
112797,Jean Richard,Le Besnerais,,,FRA
112798,Bjã¸Rn,Thalbitzer,,18951213,DEN
112799,Enrique,Obarrio,,,ARG
Hi,
In 2016 atp dataset the yearend Tour Finals is marked as tour_level 'A' instead of "F". The name is "London" instead of Tour Finals.
Regards
Zoltan
Missing World Team Cup at Dusseldorf for 1990,
as well as 10 matches from round-robin stage from 2000,
as well as some of the matches for some other years.
starting with tournaments of 8 june. might be able to incorporate those from another source.
Dirty data in file atp_rankings_00s.csv at line 585874:
20070212,1535,104756,bioTableWrap bioTableWrapAlt">
Should probably be
20070212,1535,104756,1
The player name seems to have got some HTML doctype text in it somehow. Rows 36445, 36448 and 38829 also have the same HTML data.
File atp_matches_2016.csv has invalid lines around Rio Olympics matches, starting at line 1970:
,,,,,,,,,,,,,,,,,,,,
From what I understand, the "M" level for tournaments stands for Masters 1000. However, Monte-Carlo is tagged with "A" although it's a Masters 1000 tournament.
I've only checked in atp_matches_2015.csv file.
By the way, I'm still scratching my head about what the "A" stands for...
[per email from e.j. -- e.j. may compile missing data]
However, there appear to be considerably more matches missing from events with weird formats - particularly the World Team Cup. (For instance, the 2006 World Team Cup - Dusseldorf, in the ATP match file - has 15 matches listed in the file, but actually included 26 total singles matches according to the event's Wikipedia entry: http://en.wikipedia.org/wiki/2006_ARAG_World_Team_Cup).
Files atp_matches_2016.csv and atp_matches_2017.csv have additional empty columns:
,,,,,,,,,,,,,,,,,,,,
Some player ages (and bio information) are wrong in the match files due to duplicate names of players.
For example Michael Grant
at the Spain Futures in 2014 is stored as being 58.6
years old. This points to this player: http://www.itftennis.com/procircuit/players/player/profile.aspx?PlayerID=10002555
However, the correct player would be: http://www.itftennis.com/procircuit/players/player/profile.aspx?PlayerID=100129943
This can be proven by looking up the player's match activity on the ITF site. Only the latter one played the Spain Future in 2014.
The next one is similar but a bit trickier because of the variants in name spelling: The player Adly Shafei
from Egypt occurs, for instance, in the Egypt 2 Masters 1
from 1996. According to the ITF page he should be named Adly El Shafei
.
In the database of this repository there are two entries:
109169,Adli,El Shafei,R,,EGY
(ITF page: http://www.itftennis.com/procircuit/players/player/profile.aspx?playerid=10006597)
112902,Adly,Shafei,,19190418,EGY
(ITF page: http://www.itftennis.com/procircuit/players/player/profile.aspx?PlayerID=10003427)
For the future from 1996 the first one should be used, however in the match files the second one is used (this can be proven by looking at the age).
Please note that it is very likely that a) there are more wrong occurrences of the mentioned players in other tournaments and match files, and b) that there are more duplicate names, and hence, wrong player information in the match files than mentioned here. These are just two pointers.
I dont think that this issue is super important to resolve since it likely only affects futures matches where due to the player quantity duplicate player names are likely to appear. At least, I can't think of duplicate player names in the ATP circuit...
[per email from e.j., which included corrected data for this event]
I ran into a bit of a snag in the 2002 data. The Wrexham Challenger event that was played that year only has 29 of the 31 matches included, and they're not in a conventional order in the file. Those 29 matches also show up twice in the Challenger file, and one more time in the ATP file.
I was trying to find the player who held the largest percentage of available ranking points at any given time, and was surprised to find it was Pat Cash in 1990. Here's the issue:
19900416,590,101138,8224
Cash has 8224 points assigned to him for this week at position 590, while Lendl at position 1 had only 3201.
For context, here are the rest of Cash's rankings that month:
19900402,617,101138,0
19900409,609,101138,13
19900416,590,101138,8224
19900423,243,101138,90
19900430,135,101138,206
If anyone can find Cash's correct score that week, do let me know. Will make the change in my local db as well.
[email from ubi via c.b.]
Virginia Beach77, Toronto 74 & 76. (the Vilas titles)
[more] examples of wrong surfaces?
Cincinnati74, Toronto from 73 to 77, Boston beginning years 70ies, Boca West 75&76, Adelaide74 (here is wrong even the tournament!), many tournaments of Riordan's circuit 72&73, etcetera.
Tour Finals wrong level in atp_matches_2016.csv, tourney_level is A instead of F
[email from g.h.]
I went through the duplicates and made some changes to birthdates, handedness and country for some.
The three Nigerians towards the top are listed with 1991 birthdates on the ITF website. The ATP website lists them with the same date 02-11-1991. Chung Hsing,Liu was listed from Chile, but he's from Chinese Taipei. Aroon,Ramnath was listed as India, but ITF says AUS. It also appears Gregg Prudhomme has 2 'g' in his name. There are 2 Pedro Campos in the ITF files, but the birthdate I added is the correct one, based on match data.
109450,Arumun,Surma,R,19910211,NGR
109450,Michael,Birzon,U,19821230,USA
109451,Evghenii,Corduneanu,U,19830414,MKD
109451,Ikponwonsa,Amandin,R,19910211,NGR
109452,James,Anukam,R,19910211,NGR
109452,Timur,Alshin,U,19960909,RUS
109453,Amir,Reza,R,19740307,IRI
109453,Gregg,Prudhomme,R,19700624,USA
109454,Remiginsz,Adamek,R,,POL
109454,Luigi,Gianuzzi,U,,SUI
109455,Dieter,Leurs,U,19770105,BEL
109455,Ales,Plesnicar,R,19780815,ITA
109456,Chung Hsing,Liu,R,19640830,TPE
109456,Carlos,Lozano,U,19801105,MEX
109457,Martin,Pucalka,U,19831013,CZE
109457,Arkan,Vuran,R,19760505,TUR
109458,Alberto,Rodriguez Cervantes,U,19900710,ESP
109458,Stefan,Enciu,U,19810822,ROU
109459,Jean Baptiste,Poux Gautier,U,19810601,AND
109459,Roberto,Cavalcanti,R,,BRA
109460,Maurice,Arraes,R,19760612,BRA
109460,Benjamin,Althaus,U,19850118,GER
109461,Leandro,Ribeiro,U,19901231,BRA
109461,Thomas Sascha,Winkler,R,19730511,GER
109462,Dane,Mcgregor,U,19800901,RSA
109462,Robert,Kowalczyk,R,19801023,USA
109463,Francisco,Carrillo,U,19820519,ESP
109463,Graeme,Dyce,R,19890724,GBR
109464,Julian,Edwards,U,19810213,GBR
109464,Anton,Saranchukov,U,19931212,KAZ
109465,Octavian,Nicodim,U,19820910,ROU
109465,Kong Pop,Lertchai,U,19920901,THA
109466,Kamlesh,Shukla,U,19791230,IND
109466,Djanibek,Orazoliev,U,19900308,UZB
109467,Jagdish,Tanwar,U,19740601,IND
109467,Woo Ram,Kim,U,19850807,KOR
109468,Peter,Schuster,U,19820501,GER
109468,Aroon,Ramnath,R,19680319,AUS
109469,Clay,Donato,U,19880126,CAN
109469,Sharad,Kohli,R,19760720,IND
109470,Steven,Caverzasio,R,19760616,ITA
109470,Sherman,Lim,R,19750501,SIN
109471,Paul,Podbury,R,19790313,AUS
109471,Alexander,Zlatnik,R,19790823,AUT
109472,Ugljesa,Ostojic,U,19850205,BIH
109472,Giordano,Boza,U,19880202,BRA
109473,Kostyantyn,Dmytrenko,U,19780121,UKR
109473,Alex,Stone,U,19860509,USA
109474,Paulo,Passold,U,19821220,BRA
109474,Adem,Ozmeral,U,19890912,TUR
109475,Rodrigo,Michelucci,U,19830930,BRA
109475,Orcun,Seyrek,L,19880628,TUR
109476,Fernando,Maniero,U,19840318,BRA
109476,Claudio,Alvarado,R,19801105,CHI
109477,Vincent,Sapene,R,19890309,FRA
109477,Ruslan,Miroshnichenko,U,,UKR
109478,Jiri,Placek,U,19890803,CZE
109478,Kiran,Nandkumar,U,19851023,IND
109479,Alexandr,Kotora,U,19840414,CZE
109479,Rafael,Puerto Jaimez,U,19870825,ESP
109480,Alex,Roman,R,19741118,BOL
109480,Yavuz,Erkangil,R,19670302,TUR
109481,Carlos,Navarro,R,19761209,BOL
109481,Can,Uner,R,19731108,TUR
109482,Enrique,Cagide,R,19780526,MEX
109482,John,Falbo,R,19690404,USA
109483,Daniel,Gagan,U,19791015,HUN
109483,Tony,Ro,U,19800921,USA
109484,Ryan,Thacher,R,19891006,USA
109484,Phil,Whitesell,R,19701110,USA
109485,Mike,Steinherr,U,19860609,GER
109485,Jean Francois,Merven,R,19720513,MRI
109486,Sebastian,Schulz,R,19830623,GER
109486,Alberto,Cammarata,R,19930408,ITA
109487,Andres,Intriago,U,19820429,ECU
109487,Aaron,De Leon,U,19780114,USA
109488,Pedro,Campos,U,19860816,BRA
109488,Chris,Johnson,U,19870829,USA
109489,Renzo,Barioni,U,19870715,BRA
109489,Rahul,Sankhla,R,19790917,IND
109490,David,Valeriano,R,19711111,ESP
109490,Andrew,Dottino,U,19890717,USA
109491,Andrea,Turini,U,19860325,ITA
109491,Jonathan,Russo,U,19840602,USA
109492,Jonathan,Beaskoetxea Etxabarr,R,19850531,ESP
109492,Michael,Schneider,U,19850220,GER
109493,Dante,Cipulli,U,19811111,ARG
109493,Boris,Kurtovic,U,19860517,CRO
109494,Joseph,Guluzian,R,19811115,SWE
109494,Pedro,Ast,U,19880812,VEN
109495,Jorge,Escallon,R,19790929,COL
109495,Francisco,Gallardo,U,19860107,MEX
109496,Arpad,Odry,R,19760814,GER
109496,Whi,Kim,U,19810918,USA
109497,Daniel,Bustamante,U,19931209,BRA
109497,Kaushik,Raju,U,19880110,IND
109498,Alexei,Milner,R,19890620,ISR
109498,Dmitry,Resnyanskiy,U,19900605,KAZ
109499,Thomas,Estrada,R,19880526,COL
109499,Georgy,Kurochkin,U,19890930,RUS
109663,Benjamin Janse,Van Rensburg,U,19830119,RSA
109663,Andy,Lloyd,R,,USA
In the other years data qualifiers for ATP tourneys are present but not in the 2016 or 2017 versions
I think 'Aj Catanzariti' is a duplicate ATP player entry, player ID's are 126272 and 200224
Australian Open 2016 statistics is lacking w_SvGms and l_SvGms, they are 0 for all matches.
Line 13609
2017-M-FU-HUN-08A-2017,Hungary F8,Clay,32,S,20170904,002,206678,,Q,Marcell Bartakovics,U,,HUN,19.8384668036,,,207686,,Q,Yle="Height:100%"> Tyle="Height:100%",U,,RUS,,,,6-2 6-2,3,R32,,,,,,,,,,,,,,,,,,,,,
loser_name isn't
Yle="Height:100%"> Tyle="Height:100%"
Correct loser_name is:
Alexander Shevchenko
Source: http://www.itftennis.com/procircuit/tournaments/men's-tournament/info.aspx?tournamentid=1100040883
Main Draw (32)
In the players file (atp_players.csv), you would have to modify the record with ID 207686 and add your name and surname
Alexander Shevchenko
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.