{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd, numpy as np" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#load list of all circuits and years with races from wikipedia\n", "df=pd.read_html('https://en.wikipedia.org/wiki/List_of_Grand_Prix_motorcycle_circuits', header=0)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df=df[0][['Circuit','Location','Season(s)','Type']]" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'races': u'2000\\u20132012', 'place': u'Cascais', 'name': u'Aut\\xf3dromo do Estoril', 'coord': (38.6967571, -9.4207438)}\n", "{'races': u'1969, 1972, 1974\\u20131975, 1977, 1979, 1988,', 'place': u'Imola', 'name': u'Autodromo Enzo e Dino Ferrari', 'coord': (44.35999959999999, 11.7124294)}\n", "{'races': u'1969, 1972, 1974\\u20131975, 1977, 1979, 1988,, 1981, 1983', 'place': u'Imola', 'name': u'Autodromo Enzo e Dino Ferrari', 'coord': (44.35999959999999, 11.7124294)}\n", "{'races': u'1969, 1972, 1974\\u20131975, 1977, 1979, 1988,, 1981, 1983, 1996\\u20131999', 'place': u'Imola', 'name': u'Autodromo Enzo e Dino Ferrari', 'coord': (44.35999959999999, 11.7124294)}\n", "{'races': u'1987\\u20131989', 'place': u'Goi\\xe2nia', 'name': u'Aut\\xf3dromo Internacional Ayrton Senna', 'coord': (-16.6868824, -49.26478849999999)}\n", "{'races': u'1995\\u20131997, 1999\\u20132004', 'place': u'Rio de Janeiro', 'name': u'Aut\\xf3dromo Internacional Nelson Piquet', 'coord': (-22.9068467, -43.1728965)}\n", "{'races': u'1992', 'place': u'S\\xe3o Paulo', 'name': u'Aut\\xf3dromo Jos\\xe9 Carlos Pace', 'coord': (-23.5505199, -46.63330939999999)}\n", "{'races': u'1961\\u20131964, 1981\\u20131982, 1987, 1994\\u20131995, 1998\\u20131999', 'place': u'Buenos Aires', 'name': u'Aut\\xf3dromo Juan y Oscar G\\xe1lvez', 'coord': (-34.6036844, -58.3815591)}\n", "{'races': u'1949\\u20131968, 1970\\u20131971, 1973, 1981\\u20131983, 1986\\u20131987', 'place': 'Monza, Italy', 'name': u'Autodromo Nazionale di Monza', 'coord': (45.5845001, 9.2744485)}\n", "{'races': u'2014\\u20132017', 'place': u'Termas de R\\xedo Hondo', 'name': u'Aut\\xf3dromo Termas de R\\xedo Hondo', 'coord': (-27.4985572, -64.8605362)}\n", "{'races': u'1978\\u20131990', 'place': u'\\u010cavle', 'name': u'Automotodrom Grobnik', 'coord': (45.3569043, 14.4880867)}\n", "{'races': u'1969\\u20131970, 1976, 1979, 1983, 1985, 1987, 1989\\u20131990, 1994\\u20131995, 2000\\u20132017', 'place': 'Le Mans, France', 'name': u'Bugatti Circuit', 'coord': (48.00611000000001, 0.199556)}\n", "{'races': u'1969\\u20131970, 1976, 1979, 1983, 1985, 1987, 1989\\u20131990, 1994\\u20131995, 2000\\u20132017, 1991', 'place': 'Le Mans, France', 'name': u'Bugatti Circuit', 'coord': (48.00611000000001, 0.199556)}\n", "{'races': u'1951', 'place': u'Albi', 'name': u\"Circuit automobile d'Albi (Les Planques)\\xa0(fr)\", 'coord': (43.9250853, 2.1486413)}\n", "{'races': u'1949, 1951\\u20131954', 'place': u'Bern', 'name': u'Circuit Bremgarten', 'coord': (46.9479739, 7.4474468)}\n", "{'races': u'1992\\u20131995', 'place': u'Montmel\\xf3', 'name': u'Circuit de Catalunya', 'coord': (41.5567683, 2.2507317)}\n", "{'races': u'1992\\u20131995, 1996\\u20132017', 'place': u'Montmel\\xf3', 'name': u'Circuit de Catalunya', 'coord': (41.5567683, 2.2507317)}\n", "{'races': u'1959\\u20131964, 1966\\u20131967, 1972, 1974', 'place': u'Saint-Gen\\xe8s-Champanelle', 'name': u'Circuit de Charade', 'coord': (45.72031, 3.018367)}\n", "{'races': u'1992', 'place': u'Magny-Cours', 'name': u'Circuit de Nevers Magny-Cours', 'coord': (46.8615409, 3.163392)}\n", "{'races': u'1949\\u20131979, 1981\\u20131990', 'place': u'Stavelot', 'name': u'Circuit de Spa-Francorchamps', 'coord': (50.3940981, 5.9304413)}\n", "{'races': u'1950', 'place': u'Geneva', 'name': u'Circuit des Nations', 'coord': (46.2043907, 6.1431577)}\n", "{'races': u'2013\\u20132017', 'place': 'Elroy, Texas', 'name': u'Circuit of the Americas', 'coord': (30.12077, -97.63527839999999)}\n", "{'races': u'1978, 1982', 'place': u'Nogaro', 'name': u'Circuit Paul Armagnac', 'coord': (43.7710318, -0.0312656)}\n", "{'races': u'1973, 1977, 1977, 1980\\u20131981, 1984, 1986, 1988, 1991, 1996\\u20131999', 'place': u'Le Castellet', 'name': u'Circuit Paul Ricard', 'coord': (43.203551, 5.776755)}\n", "{'races': u'1999\\u20132017', 'place': u'Cheste', 'name': u'Circuit Ricardo Tormo', 'coord': (39.4934832, -0.6856076)}\n", "{'races': u'1980', 'place': u'Heusden-Zolder', 'name': u'Circuit Zolder', 'coord': (51.0384819, 5.2904127)}\n", "{'races': u'1987, 1989\\u20132017', 'place': u'Jerez de la Frontera', 'name': u'Circuito de Jerez', 'coord': (36.6850064, -6.126074399999999)}\n", "{'races': u'1987, 1989\\u20132017, 1988', 'place': u'Jerez de la Frontera', 'name': u'Circuito de Jerez', 'coord': (36.6850064, -6.126074399999999)}\n", "{'races': u'1969, 1971, 1973, 1975, 1977\\u20131986, 1988, 1991', 'place': u'San Sebasti\\xe1n de los Reyes', 'name': u'Circuito del Jarama', 'coord': (40.5688791, -3.5913939)}\n", "{'races': u'1969, 1971, 1973, 1975, 1977\\u20131986, 1988, 1991, 1987', 'place': u'San Sebasti\\xe1n de los Reyes', 'name': u'Circuito del Jarama', 'coord': (40.5688791, -3.5913939)}\n", "{'races': u'1969, 1971, 1973, 1975, 1977\\u20131986, 1988, 1991, 1987, 1993', 'place': u'San Sebasti\\xe1n de los Reyes', 'name': u'Circuito del Jarama', 'coord': (40.5688791, -3.5913939)}\n", "{'races': u'1969, 1971, 1973, 1975, 1977\\u20131986, 1988, 1991, 1987, 1993, 1998', 'place': u'San Sebasti\\xe1n de los Reyes', 'name': u'Circuito del Jarama', 'coord': (40.5688791, -3.5913939)}\n", "{'races': u'2010\\u20132017', 'place': u'Alca\\xf1iz', 'name': u'Ciudad del Motor de Arag\\xf3n', 'coord': (41.0510353, -0.1335373)}\n", "{'races': u'1949\\u20131952', 'place': u'County Antrim', 'name': u'Clady Circuit', 'coord': (54.7195338, -6.2072498)}\n", "{'races': u'1964\\u20131965', 'place': u'Daytona Beach', 'name': u'Daytona International Speedway', 'coord': (29.2108147, -81.0228331)}\n", "{'races': u'1987\\u20132009', 'place': u'Castle Donington', 'name': u'Donington Park', 'coord': (52.845016, -1.3373001)}\n", "{'races': u'1953\\u20131971', 'place': u'Lisburn', 'name': u'Dundrod Circuit', 'coord': (54.516246, -6.058010599999999)}\n", "{'races': u'1991\\u20131996', 'place': u'Sydney', 'name': u'Eastern Creek Raceway', 'coord': (-33.8688197, 151.2092955)}\n", "{'races': u'1966\\u20131967', 'place': 'Oyama, Japan', 'name': u'Fuji Speedway', 'coord': (36.3146714, 139.800131)}\n", "{'races': u'1958', 'place': u'Hedemora', 'name': u'Hedemora Circuit', 'coord': (60.2775453, 15.985892)}\n", "{'races': u'1957, 1959, 1961, 1963, 1966\\u20131967, 1969, 1971, 1973, 1975, 1977, 1979, 1981\\u20131983, 1985, 1987, 1989, 1991\\u20131994', 'place': u'Hockenheim', 'name': u'Hockenheimring', 'coord': (49.3298956, 8.5709249)}\n", "{'races': u'1957, 1959, 1961, 1963, 1966\\u20131967, 1969, 1971, 1973, 1975, 1977, 1979, 1981\\u20131983, 1985, 1987, 1989, 1991\\u20131994, 1961, 1963, 1966\\u20131967, 1969, 1971', 'place': u'Hockenheim', 'name': u'Hockenheimring', 'coord': (49.3298956, 8.5709249)}\n", "{'races': u'1957, 1959, 1961, 1963, 1966\\u20131967, 1969, 1971, 1973, 1975, 1977, 1979, 1981\\u20131983, 1985, 1987, 1989, 1991\\u20131994, 1961, 1963, 1966\\u20131967, 1969, 1971, 1986', 'place': u'Hockenheim', 'name': u'Hockenheimring', 'coord': (49.3298956, 8.5709249)}\n", "{'races': u'1990, 1992', 'place': u'Mogyor\\xf3d', 'name': u'Hungaroring', 'coord': (47.6001016, 19.2420461)}\n", "{'races': u'1964\\u20131982', 'place': u'Imatra', 'name': u'Imatra Circuit', 'coord': (61.1695977, 28.7645463)}\n", "{'races': u'2008\\u20132015', 'place': u'Speedway', 'name': u'Indianapolis Motor Speedway', 'coord': (39.1157141, -94.8310001)}\n", "{'races': u'2005\\u20132007', 'place': u'Istanbul', 'name': u'Istanbul Park', 'coord': (41.0082376, 28.9783589)}\n", "{'races': u'1998', 'place': u'Pasir Gudang', 'name': u'Johor Circuit', 'coord': (1.470288, 103.9029689)}\n", "{'races': u'1978\\u20131979', 'place': u'Karlskoga', 'name': u'Karlskoga Motorstadion', 'coord': (59.32863399999999, 14.536414)}\n", "{'races': u'1959, 1961', 'place': u'Kristianstad', 'name': u'Kristianstad Circuit', 'coord': (56.0293936, 14.1566779)}\n", "{'races': u'1983\\u20131985, 1992', 'place': u'Midrand', 'name': u'Kyalami Racing Circuit', 'coord': (-25.9991795, 28.1262927)}\n", "{'races': u'2004\\u20132017', 'place': u'Losail', 'name': u'Losail International Circuit', 'coord': (25.486109, 51.4527794)}\n", "{'races': u'1965\\u20131982, 1987\\u20131991', 'place': u'Brno', 'name': u'Masaryk Circuit', 'coord': (49.1950602, 16.6068371)}\n", "{'races': u'1965\\u20131982, 1987\\u20131991, 1993\\u20132017', 'place': u'Brno', 'name': u'Masaryk Circuit', 'coord': (49.1950602, 16.6068371)}\n", "{'races': u'1988\\u20131991, 1993\\u20131994, 2005\\u20132013', 'place': u'Monterey', 'name': u'Mazda Raceway Laguna Seca', 'coord': (36.6002378, -121.8946761)}\n", "{'races': u'1980, 1984, 1989\\u20131991, 1993', 'place': u'Misano Adriatico', 'name': u'Misano World Circuit Marco Simoncelli', 'coord': (43.982546, 12.6946857)}\n", "{'races': u'1980, 1984, 1989\\u20131991, 1993, 1982, 1985\\u20131987', 'place': u'Misano Adriatico', 'name': u'Misano World Circuit Marco Simoncelli', 'coord': (43.982546, 12.6946857)}\n", "{'races': u'1980, 1984, 1989\\u20131991, 1993, 1982, 1985\\u20131987, 2007\\u20132017', 'place': u'Misano Adriatico', 'name': u'Misano World Circuit Marco Simoncelli', 'coord': (43.982546, 12.6946857)}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'races': u'1950\\u20131955, 1961\\u20131968, 1970, 1972, 1974, 1976', 'place': u'Barcelona', 'name': u'Montju\\xefc circuit', 'coord': (41.3850639, 2.1734035)}\n", "{'races': u'1967', 'place': u'Bowmanville', 'name': u'Mosport International Raceway', 'coord': (43.9126042, -78.688019)}\n", "{'races': u'1999, 2004\\u20132017', 'place': u'Motegi', 'name': u'Motegi', 'coord': (36.533385, 140.2273922)}\n", "{'races': u'1999, 2004\\u20132017, 2000-2003', 'place': u'Motegi', 'name': u'Motegi', 'coord': (36.533385, 140.2273922)}\n", "{'races': u'1976, 1978, 1985, 1992, 1994\\u20132017', 'place': u'Scarperia e San Piero', 'name': u'Mugello Circuit', 'coord': (43.9937487, 11.3533461)}\n", "{'races': u'1976, 1978, 1985, 1992, 1994\\u20132017, 1982, 1984, 1991, 1993', 'place': u'Scarperia e San Piero', 'name': u'Mugello Circuit', 'coord': (43.9937487, 11.3533461)}\n", "{'races': u'1955, 1958, 1965, 1968, 1970, 1972, 1974, 1976, 1978, 1980, 1984, 1986, 1988, 1990, 1995\\u20131997', 'place': u'N\\xfcrburg', 'name': u'N\\xfcrburgring', 'coord': (50.3418803, 6.9520304)}\n", "{'races': u'1970, 1972\\u20131977', 'place': u'Opatija', 'name': u'Opatija Circuit', 'coord': (45.3376197, 14.305196)}\n", "{'races': u'1999\\u20132004', 'place': u'Odendaalsrus', 'name': u'Phakisa Freeway', 'coord': (-27.8808353, 26.690706)}\n", "{'races': u'1989\\u20131990, 1997\\u20132017', 'place': 'Ventnor, Australia', 'name': u'Phillip Island Grand Prix Circuit', 'coord': (-38.4834062, 145.1727694)}\n", "{'races': u'1996\\u20131997, 2016-2017', 'place': u'Spielberg bei Knittelfeld', 'name': u'Red Bull Ring', 'coord': (47.2085616, 14.7996235)}\n", "{'races': u'1954\\u20131955', 'place': u'Gueux', 'name': u'Reims-Gueux', 'coord': (49.248466, 3.90993)}\n", "{'races': u'1953, 1965', 'place': 'Orival, France', 'name': u'Rouen-Les-Essarts', 'coord': (49.310705, 0.996206)}\n", "{'races': u'1961\\u20131972', 'place': u'Hohenstein-Ernstthal', 'name': u'Sachsenring', 'coord': (50.8009829, 12.7132681)}\n", "{'races': u'1961\\u20131972, 1998\\u20132017', 'place': u'Hohenstein-Ernstthal', 'name': u'Sachsenring', 'coord': (50.8009829, 12.7132681)}\n", "{'races': u'1971\\u20131991, 1993', 'place': 'Koppl, Austria', 'name': u'Salzburgring', 'coord': (47.8068785, 13.1556484)}\n", "{'races': u'1977\\u20131979', 'place': 'San Carlos, Venezuela', 'name': u'San Carlos Circuit', 'coord': (9.6598946, -68.5812895)}\n", "{'races': u'1971\\u20131977, 1981\\u20131990', 'place': u'Anderstorp', 'name': u'Scandinavian Raceway', 'coord': (57.2812542, 13.6271963)}\n", "{'races': u'1953', 'place': u'Schotten', 'name': u'Schottenring', 'coord': (50.5019846, 9.1234184)}\n", "{'races': u'1996\\u20131997 and 2017 (planned)', 'place': u'Bogor', 'name': u'Sentul International Circuit', 'coord': (-6.597146899999999, 106.8060388)}\n", "{'races': u'1999\\u20132017', 'place': u'Kuala Lumpur', 'name': u'Sepang International Circuit', 'coord': (3.139003, 101.686855)}\n", "{'races': u'1991\\u20131997', 'place': u'Shah Alam', 'name': u'Shah Alam Circuit', 'coord': (3.0638655, 101.4848547)}\n", "{'races': u'2005\\u20132008', 'place': u'Shanghai', 'name': u'Shanghai International Circuit', 'coord': (31.2303904, 121.4737021)}\n", "{'races': u'1977\\u20131986, 2010\\u20132017', 'place': 'Silverstone, United Kingdom', 'name': u'Silverstone Circuit', 'coord': (52.0733006, -1.0146634)}\n", "{'races': u'1949\\u20131976', 'place': u'Isle of Man', 'name': u'Snaefell Mountain Course', 'coord': (54.236107, -4.548056)}\n", "{'races': u'1952, 1954, 1956, 1960, 1962, 1964', 'place': u'Leonberg', 'name': u'Solitudering', 'coord': (48.7960447, 9.0095706)}\n", "{'races': u'1963\\u20131965, 1987\\u20131998, 2000\\u20132003', 'place': u'Suzuka', 'name': u'Suzuka International Racing Course', 'coord': (34.8455935, 136.5389522)}\n", "{'races': u'1962\\u20131963', 'place': u'Tampere', 'name': u'Tampere Circuit', 'coord': (61.4977524, 23.7609535)}\n", "{'races': u'1949\\u20132017', 'place': u'Assen', 'name': u'TT Circuit Assen', 'coord': (52.992753, 6.5642284)}\n" ] } ], "source": [ "#geocode circuit names and create list with circuits\n", "from pygeocoder import Geocoder\n", "circs=[]\n", "apikey='AIzaSyCJJD4hDxsENJOVohntPCqgvsuvQ-yRgLY'\n", "for i in df.T.iteritems():\n", " circ={}\n", " circ['name']=i[1][0]\n", " if repr(i[1][2]).lower()=='nan':\n", " circs[-1]['races']=circs[-1]['races']+', '+i[1][3]\n", " else:\n", " circ['races']=i[1][2]\n", " g=i[1][1]\n", " if g=='Silverstone':\n", " g='Silverstone, United Kingdom'\n", " if g=='Elroy':\n", " g='Elroy, Texas'\n", " if g=='Ventnor':\n", " g='Ventnor, Australia'\n", " if g=='Le Mans':\n", " g='Le Mans, France'\n", " if g=='Koppl':\n", " g='Koppl, Austria'\n", " if g=='Monza':\n", " g='Monza, Italy'\n", " if g=='San Carlos':\n", " g='San Carlos, Venezuela'\n", " if g=='Oyama':\n", " g='Oyama, Japan'\n", " if g=='Orival':\n", " g='Orival, France'\n", " circ['place']=g\n", " circ['coord']=Geocoder(apikey).geocode(circ['place']).coordinates\n", " circs.append(circ)\n", " print circs[-1]" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#manual fixes\n", "circs[61]['races']='1996, 1997, 2017'" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": true }, "outputs": [], "source": [ "calendar={i:[] for i in range(1949,2018)}\n", "for i in range(len(circs)):\n", " for k in circs[i]['races'].replace(u'\\u2013', '-').replace(\" \", \",\").replace(\",,\", \",\").replace(\",,\", \",\").split(\",\"):\n", " r=k.find('-')\n", " if r==-1:\n", " calendar[np.int(k)].append(i)\n", " else:\n", " for j in range(np.int(k[:r]),np.int(k[r+1:])+1):\n", " calendar[j].append(i)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#save data\n", "import json\n", "file('calendar_mgp2018.json','w').write(json.dumps(calendar))\n", "file('circs_mgp2018.json','w').write(json.dumps(circs))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 1 }