ソースコード InfoField | Python code #!/usr/bin/env python # coding: utf-8 # In[1]: import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np # In[2]: from pandas.plotting import register_matplotlib_converters register_matplotlib_converters() # In[3]: # Set plotting style plt.style.use("seaborn-white") RECORD_TO_TEXT = { "uci": "UCI Record", "best": "Best Human Effort", "unified": "Unified Record", } CURRENT_PALLETE = sns.color_palette() PLOT_COLORS = { "uci": CURRENT_PALLETE[0], RECORD_TO_TEXT["uci"]: CURRENT_PALLETE[0], "best": CURRENT_PALLETE[1], RECORD_TO_TEXT["best"]: CURRENT_PALLETE[1], "unified": CURRENT_PALLETE[2], RECORD_TO_TEXT["unified"]: CURRENT_PALLETE[2], } WIDTH = 12 HEIGHT = 7 get_ipython().run_line_magic('matplotlib', 'inline') # # Load the data # # I have already scraped the HTML, read it into Pandas, and cleaned it up. So I'll just load that cleaned data. # In[4]: df = pd.read_json("./hour_record_dataframe.json", orient="table") # In[5]: # Rename some riders who have *REALLY* long names df = df.replace( { "Leontien Zijlaard-van Moorsel": "Leontien van Moorsel", "Molly Shaffer Van Houweling": "Molly Van Houweling", } ) # In[6]: df.head() # # Plotting # In[7]: def draw_bands(ax, ticks=None): """Add grey bands to the plot. Args: ax: a matplotlib axes object. ticks: a list of tick postions, to use instead of the ones that come with ax. """ if ticks is None: ticks = ax.get_xticks(minor=False) for i in range(0, len(ticks), 2): # Check for the end of the array if i >= len(ticks) or i + 1 >= len(ticks): return # Draw a band left_tick = ticks[i] right_tick = ticks[i + 1] plt.axvspan(left_tick, right_tick, color="0.97", zorder=-2) ticks = ax.get_xticks(minor=False) # In[8]: def draw_legend(plt): """Draw the legend on the specified plot. Args: plt (matplotlib.pyplot): pyplot object """ leg = plt.legend( loc="upper left", fontsize=18, ncol=1, frameon=1, fancybox=True, # The bellow commands remove the lines in the legend handlelength=0, handletextpad=0, markerscale=0, ) # Turn on and theme the frame frame = leg.get_frame() frame.set_linewidth(1) frame.set_alpha(1) frame.set_facecolor("white") frame.set_edgecolor("black") # Set the legend text color to match the line color handles, _ = ax.get_legend_handles_labels() texts = leg.get_texts() for _, text in zip(handles, texts): text.set_color(PLOT_COLORS[text.get_text()]) fig.tight_layout() # In[9]: def annotate_point_with_name(row, color, nudges): rider = row["rider"] distance = row["distance (km)"] date = row["date"] text = f"{rider} ({distance} km) " # Try to get nudges adjust = nudges.get((rider, distance), (0, 0)) x_adjust = adjust[0] * 365.0 # Convert to years x_pos = date + pd.to_timedelta(x_adjust, unit="D") y_pos = distance + adjust[1] plt.text( x_pos, y_pos, text, horizontalalignment="right", verticalalignment="center", color=color, fontsize=16, fontweight="bold", ) # In[10]: def plot_steps_and_markers(df, nudges, ax): MAX_DATE = max(df["date"]) plt.sca(ax) for record in df["record"].unique(): color = PLOT_COLORS[record] df_tmp = df[df["record"] == record] heights = list(df_tmp["distance (km)"].values) years = list(df_tmp["date"].values) # Exend to the end of the plot heights += [heights[-1]] years += [MAX_DATE] plt.step( x=years, y=heights, where="post", linewidth=2.5, color=color, label=RECORD_TO_TEXT[record], ) plt.plot(years[:-1], heights[:-1], "o", color=color, markersize=10) for index, row in df_tmp.iterrows(): annotate_point_with_name(row, color, nudges) # In[11]: df_men = df[(df["gender"] == "men") & (df["success"] == True)] fig, ax = plt.subplots(figsize=(WIDTH, HEIGHT)) annotation_nudge = { ("Eddy Merckx", 49.431): (9, 0.25), ("Chris Boardman", 49.441): (4, 0.25), ("Ondřej Sosenka", 49.7): (5, 0.33), ("Tony Rominger", 55.291): (0.2, -0.36), } ax.set_ylabel("Distance (km)", fontsize=20) plt.title("Men's Hour Record Progression", fontsize=30) plot_steps_and_markers(df_men, annotation_nudge, ax) ax.tick_params(axis="both", which="major", labelsize=16) draw_bands(ax) draw_legend(ax) _, x_current = ax.get_xlim() ax.set_xlim("1966-01-01", x_current) ticks = ax.get_xticks() fig.patch.set_facecolor("white") # Save to disk for ext in ("png", "svg"): fig.savefig( "/tmp/mens_hour_records_progression.{ext}".format(ext=ext), bbox_inches="tight", transparent=False, ) # In[12]: df_women = df[(df["gender"] == "women") & (df["success"] == True)] fig, ax = plt.subplots(figsize=(WIDTH, HEIGHT)) annotation_nudge = { ("Maria Cressari", 41.471): (10, -0.27), ("Keetie van Oosten", 43.082): (18, -0.25), ("Jeannie Longo-Ciprelli", 44.767): (20.5, -0.25), ("Jeannie Longo-Ciprelli", 45.094): (20.5, -0.25), ("Leontien van Moorsel", 46.065): (19.5, -0.25), ("Jeannie Longo-Ciprelli", 44.933): (0, 0.25), ("Yvonne McGregor", 47.411): (1.5, 0.3), ("Jeannie Longo-Ciprelli", 48.159): (3, 0.3), ("Catherine Marsal", 47.112): (0, -0.15), ("Molly Van Houweling", 46.273): (0, 0.1), ("Evelyn Stevens", 47.98): (0, -0.1), ("Vittoria Bussi", 48.007): (3, 0.35), ("Joscelin Lowden", 48.405): (0.5, 0.35), } ax.set_ylabel("Distance (km)", fontsize=20) plt.title("Women's Hour Record Progression", fontsize=30) plot_steps_and_markers(df_women, annotation_nudge, ax) ax.tick_params(axis="both", which="major", labelsize=16) draw_bands(ax, ticks[1:-1]) draw_legend(ax) ax.set_ylim(41, 49.5) fig.patch.set_facecolor("white") # Save to disk for ext in ("png", "svg"): fig.savefig( "/tmp/womens_hour_records_progression.{ext}".format(ext=ext), bbox_inches="tight", transparent=False, ) Data Data (collapsed) | { "data": [ { "age": 27.0, "date": "1972-10-25T00:00:00.000Z", "distance (km)": 49.431, "equipment": "Drop handlebar, round steel tubing frame, wire spokes.", "gender": "men", "index": 0, "record": "uci", "rider": "Eddy Merckx", "success": true, "velodrome": "Agust\u00edn Melgar (333 meters outdoor concrete high-altitude), Mexico City, Mexico" }, { "age": null, "date": "1972-11-25T00:00:00.000Z", "distance (km)": 41.471, "equipment": "4.7-kilogram Colnago, drop handlebars, wire spokes.[12]", "gender": "women", "index": 1, "record": "uci", "rider": "Maria Cressari", "success": true, "velodrome": "Agust\u00edn Melgar Olympic Velodrome, Mexico City, Mexico" }, { "age": 29.0, "date": "1978-09-16T00:00:00.000Z", "distance (km)": 43.082, "equipment": "RIH superlight steel frame, drop handlebars, wire spokes.[13][14]", "gender": "women", "index": 2, "record": "uci", "rider": "Keetie van Oosten", "success": true, "velodrome": "Munich, Germany" }, { "age": 32.0, "date": "1984-01-19T00:00:00.000Z", "distance (km)": 50.808, "equipment": "Bullhorn handlebar, oval steel tubing frame, disc wheels.", "gender": "men", "index": 3, "record": "best", "rider": "Francesco Moser", "success": true, "velodrome": "Agust\u00edn Melgar (333 meters outdoor concrete high-altitude), Mexico City, Mexico" }, { "age": 32.0, "date": "1984-01-23T00:00:00.000Z", "distance (km)": 51.151, "equipment": "Bullhorn handlebar, oval steel tubing frame, disc wheels.", "gender": "men", "index": 4, "record": "best", "rider": "Francesco Moser", "success": true, "velodrome": "Agust\u00edn Melgar (333 meters outdoor concrete high-altitude), Mexico City, Mexico" }, { "age": 27.0, "date": "1986-09-20T00:00:00.000Z", "distance (km)": 44.77, "equipment": null, "gender": "women", "index": 5, "record": "best", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Colorado Springs, United States" }, { "age": 28.0, "date": "1987-09-23T00:00:00.000Z", "distance (km)": 44.933, "equipment": null, "gender": "women", "index": 6, "record": "best", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Colorado Springs, United States" }, { "age": 30.0, "date": "1989-10-01T00:00:00.000Z", "distance (km)": 46.352, "equipment": null, "gender": "women", "index": 7, "record": "best", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Agust\u00edn Melgar Olympic Velodrome, Mexico City, Mexico" }, { "age": 27.0, "date": "1993-07-17T00:00:00.000Z", "distance (km)": 51.596, "equipment": "Graeme Obree-style \"praying mantis\" handlebar, round steel tubing frame, carbon tri-spoke wheels.", "gender": "men", "index": 8, "record": "best", "rider": "Graeme Obree", "success": true, "velodrome": "Vikingskipet (250 meters indoor wood sea-level), Hamar, Norway" }, { "age": 24.0, "date": "1993-07-23T00:00:00.000Z", "distance (km)": 52.27, "equipment": "Triathlon handlebar, carbon airfoil tubing frame, carbon 4-spoke wheels.", "gender": "men", "index": 9, "record": "best", "rider": "Chris Boardman", "success": true, "velodrome": "Velodrome du Lac (250 meters indoor wood sea-level), Bordeaux, France" }, { "age": 28.0, "date": "1994-04-27T00:00:00.000Z", "distance (km)": 52.713, "equipment": "Graeme Obree-style \"praying mantis\" handlebar, round steel tubing frame, carbon tri-spoke wheels.", "gender": "men", "index": 10, "record": "best", "rider": "Graeme Obree", "success": true, "velodrome": "Velodrome du Lac (250 meters indoor wood sea-level), Bordeaux, France" }, { "age": 30.0, "date": "1994-09-02T00:00:00.000Z", "distance (km)": 53.04, "equipment": "Wide triathlon handlebar, carbon monocoque aero frame, disc wheels.", "gender": "men", "index": 11, "record": "best", "rider": "Miguel Indurain", "success": true, "velodrome": "Velodrome du Lac (250 meters indoor wood sea-level), Bordeaux, France" }, { "age": 33.0, "date": "1994-10-22T00:00:00.000Z", "distance (km)": 53.832, "equipment": "Triathlon handlebar, oval steel tubing frame, disc wheels.", "gender": "men", "index": 12, "record": "best", "rider": "Tony Rominger", "success": true, "velodrome": "Velodrome du Lac (250 meters indoor wood sea-level), Bordeaux, France" }, { "age": 33.0, "date": "1994-11-05T00:00:00.000Z", "distance (km)": 55.291, "equipment": "Triathlon handlebar, oval steel tubing frame, disc wheels.", "gender": "men", "index": 13, "record": "best", "rider": "Tony Rominger", "success": true, "velodrome": "Velodrome du Lac (250 meters indoor wood sea-level), Bordeaux, France" }, { "age": 24.0, "date": "1995-04-29T00:00:00.000Z", "distance (km)": 47.112, "equipment": "Corima carbon composite bicycle. Corima 12 spoke/Corima disc wheels. Tri-Bar.[16]", "gender": "women", "index": 14, "record": "best", "rider": "Catherine Marsal", "success": true, "velodrome": "Bordeaux, France" }, { "age": 34.0, "date": "1995-06-17T00:00:00.000Z", "distance (km)": 47.411, "equipment": "Terry Dolan bicycle. Cinelli tri-bar, Corima disc wheels", "gender": "women", "index": 15, "record": "best", "rider": "Yvonne McGregor", "success": true, "velodrome": "Manchester, England" }, { "age": 28.0, "date": "1996-09-06T00:00:00.000Z", "distance (km)": 56.375, "equipment": "Graeme Obree \"superman-style\" handlebar, carbon monocoque aero frame, 5-spoke front and rear disc wheel.", "gender": "men", "index": 16, "record": "best", "rider": "Chris Boardman", "success": true, "velodrome": "Manchester Velodrome (250 meters indoor wood sea-level), Manchester, UK" }, { "age": 38.0, "date": "1996-10-26T00:00:00.000Z", "distance (km)": 48.159, "equipment": null, "gender": "women", "index": 17, "record": "best", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Agust\u00edn Melgar Olympic Velodrome, Mexico City, Mexico" }, { "age": 26.0, "date": "2000-10-18T00:00:00.000Z", "distance (km)": 43.501, "equipment": "Perkins, Columbus steel tubing, box section rims, wire spokes", "gender": "women", "index": 18, "record": "uci", "rider": "Anna Wilson-Millward", "success": true, "velodrome": "Vodafone Arena, Melbourne, Australia" }, { "age": 32.0, "date": "2000-10-27T00:00:00.000Z", "distance (km)": 49.441, "equipment": "Drop handlebar, carbon fibre tubing frame, wire spokes.", "gender": "men", "index": 19, "record": "uci", "rider": "Chris Boardman", "success": true, "velodrome": "Manchester Velodrome (250 meters indoor wood sea-level), Manchester, UK" }, { "age": 42.0, "date": "2000-11-05T00:00:00.000Z", "distance (km)": 44.767, "equipment": "Drop handlebar, steel tubing frame, wire spokes.", "gender": "women", "index": 20, "record": "uci", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Agust\u00edn Melgar Olympic Velodrome, Mexico City, Mexico" }, { "age": 42.0, "date": "2000-12-07T00:00:00.000Z", "distance (km)": 45.094, "equipment": "Drop handlebar, steel tubing frame, wire spokes.", "gender": "women", "index": 21, "record": "uci", "rider": "Jeannie Longo-Ciprelli", "success": true, "velodrome": "Agust\u00edn Melgar, Mexico City, Mexico" }, { "age": 33.0, "date": "2003-10-01T00:00:00.000Z", "distance (km)": 46.065, "equipment": "Drop handlebar, Koga chromoly tubing frame, box section rims, wire spokes[15]", "gender": "women", "index": 22, "record": "uci", "rider": "Leontien Zijlaard-van Moorsel", "success": true, "velodrome": "Agust\u00edn Melgar, Mexico City, Mexico" }, { "age": 29.0, "date": "2005-07-19T00:00:00.000Z", "distance (km)": 49.7, "equipment": "Drop handlebar, carbon fibre tubing frame, wire spokes.", "gender": "men", "index": 23, "record": "uci", "rider": "Ond\u0159ej Sosenka", "success": true, "velodrome": "Krylatskoye (333 meters indoor wood sea-level), Moscow, Russia" }, { "age": 43.0, "date": "2014-09-18T00:00:00.000Z", "distance (km)": 51.11, "equipment": "Triathlon handlebar, Trek carbon fibre tubing frame, disc wheels,[38] chain on a 55/14 gear ratio.[39]", "gender": "men", "index": 24, "record": "unified", "rider": "Jens Voigt", "success": true, "velodrome": "Velodrome Suisse, Grenchen, Switzerland (altitude 450m)" }, { "age": 24.0, "date": "2014-10-30T00:00:00.000Z", "distance (km)": 51.852, "equipment": "Triathlon handlebar, SCOTT carbon fibre tubing frame, disc wheels, chain on a 55/13 gear ratio.[39]", "gender": "men", "index": 25, "record": "unified", "rider": "Matthias Br\u00e4ndle", "success": true, "velodrome": "World Cycling Centre Aigle, Switzerland (altitude 380m)" }, { "age": 24.0, "date": "2015-01-31T00:00:00.000Z", "distance (km)": 51.3, "equipment": "Triathlon handlebar, Cervelo carbon fibre tubing frame, disc wheels.", "gender": "men", "index": 26, "record": "unified", "rider": "Jack Bobridge", "success": false, "velodrome": "Darebin International Sports Centre, Melbourne, Australia" }, { "age": 24.0, "date": "2015-02-08T00:00:00.000Z", "distance (km)": 52.491, "equipment": "Triathlon handlebar, BMC carbon fibre tubing frame, disc wheels, chain on a 56/14 gear ratio.[43]", "gender": "men", "index": 27, "record": "unified", "rider": "Rohan Dennis", "success": true, "velodrome": "Velodrome Suisse, Grenchen, Switzerland (altitude 450m)" }, { "age": 30.0, "date": "2015-02-25T00:00:00.000Z", "distance (km)": 52.221, "equipment": "Koga TeeTeeTrack with Mavic Comete Track wheels, Koga components, Rotor cranks with a KMC (3/32\") chain on a 58/14 gear ratio.[45]", "gender": "men", "index": 28, "record": "unified", "rider": "Thomas Dekker", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico" }, { "age": 37.0, "date": "2015-02-28T00:00:00.000Z", "distance (km)": 45.502, "equipment": "Ridley Arena Carbon track bike with triathlon bars, Pro rear disc wheel, front disk wheel, Shimano Dura-Ace groupset.[84]", "gender": "women", "index": 29, "record": "unified", "rider": "Sarah Storey", "success": false, "velodrome": "Lee Valley VeloPark, London, United Kingdom" }, { "age": 34.0, "date": "2015-03-14T00:00:00.000Z", "distance (km)": 50.016, "equipment": "Ridley carbon track bike with front and rear disc wheels, triathlon handlebars.", "gender": "men", "index": 30, "record": "unified", "rider": "Gustav Larsson", "success": false, "velodrome": "Manchester Velodrome, Manchester, United Kingdom" }, { "age": 26.0, "date": "2015-05-02T00:00:00.000Z", "distance (km)": 52.937, "equipment": "Canyon Speedmax WHR carbon track bike, with Campagnolo Pista disc wheels, Pista crankset with 54 or 55 or 56t chainring.[49][50]", "gender": "men", "index": 31, "record": "unified", "rider": "Alex Dowsett", "success": true, "velodrome": "Manchester Velodrome, Manchester, United Kingdom[48]" }, { "age": 35.0, "date": "2015-06-07T00:00:00.000Z", "distance (km)": 54.526, "equipment": "Pinarello Bolide HR, SRAM Crankset,[52] modified front fork, custom printed handlebars,[53] 58/14 gear ratio.[54]", "gender": "men", "index": 32, "record": "unified", "rider": "Bradley Wiggins", "success": true, "velodrome": "Lee Valley VeloPark, London, United Kingdom[51]" }, { "age": 42.0, "date": "2015-09-12T00:00:00.000Z", "distance (km)": 46.273, "equipment": "Cervelo T4 track bike with double Mavic Comete discwheels, running 56/14 gear ratio.[76][86]", "gender": "women", "index": 33, "record": "unified", "rider": "Molly Shaffer Van Houweling", "success": true, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico (altitude 1887m)" }, { "age": 41.0, "date": "2016-01-22T00:00:00.000Z", "distance (km)": 46.882, "equipment": "Cervelo T4 track bike.[87]", "gender": "women", "index": 34, "record": "unified", "rider": "Bridie O'Donnell", "success": true, "velodrome": "Super-Drome, Adelaide, Australia" }, { "age": 32.0, "date": "2016-02-27T00:00:00.000Z", "distance (km)": 47.98, "equipment": "Specialized Shiv modified for the track, SRAM groupset with 53t or 54t chainrings, Zipp 900 front wheel, Zipp Super 9 rear disc, Bioracer skinsuit.", "gender": "women", "index": 35, "record": "unified", "rider": "Evelyn Stevens", "success": true, "velodrome": "OTC Velodrome, Colorado, United States of America (altitude 1840m)" }, { "age": null, "date": "2016-03-21T00:00:00.000Z", "distance (km)": 48.255, "equipment": null, "gender": "men", "index": 36, "record": "unified", "rider": "Micah Gross", "success": false, "velodrome": "Velodrome Suisse, Grenchen, Switzerland" }, { "age": 37.0, "date": "2016-09-16T00:00:00.000Z", "distance (km)": 53.037, "equipment": "Modified Diamondback Serios time trial bike, fitted with special HED disc wheels[56] and a gearing of 53/13[57]", "gender": "men", "index": 37, "record": "unified", "rider": "Tom Zirbel", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico" }, { "age": 31.0, "date": "2017-01-28T00:00:00.000Z", "distance (km)": 52.114, "equipment": "Argon 18 Electron Pro, Mavic Comete discs, SRM + Fibre-Lyte chain ring, and a gearing of 54/13", "gender": "men", "index": 38, "record": "unified", "rider": "Martin Toft Madsen", "success": false, "velodrome": "Ballerup Super Arena, Ballerup, Denmark[59]" }, { "age": null, "date": "2017-02-25T00:00:00.000Z", "distance (km)": 48.337, "equipment": "RB1213 track bike with double DT Swiss disc wheels", "gender": "men", "index": 39, "record": "unified", "rider": "Marc Dubois", "success": false, "velodrome": "Velodrome Suisse, Grenchen, Switzerland" }, { "age": 32.0, "date": "2017-07-02T00:00:00.000Z", "distance (km)": 49.47, "equipment": "BMC Trackmachine TR01, Mavic Comete disc wheels, Custom Prinzwear TT Suit", "gender": "men", "index": 40, "record": "unified", "rider": "Wojciech Ziolkowski", "success": false, "velodrome": "Arena Pruszk\u00f3w, Pruszkow, Poland" }, { "age": 32.0, "date": "2017-07-21T00:00:00.000Z", "distance (km)": 47.791, "equipment": null, "gender": "women", "index": 41, "record": "unified", "rider": "Jaime Nielsen", "success": false, "velodrome": "Avantidrome, Cambridge, New Zealand" }, { "age": 30.0, "date": "2017-10-07T00:00:00.000Z", "distance (km)": 47.576, "equipment": "Giant Trinity track bike with Walker Brothers double-disc wheels", "gender": "women", "index": 42, "record": "unified", "rider": "Vittoria Bussi", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico" }, { "age": 18.0, "date": "2017-10-07T00:00:00.000Z", "distance (km)": 52.311, "equipment": "Giant trinity track bike, Mavic disc wheels", "gender": "men", "index": 43, "record": "unified", "rider": "Mikkel Bjerg", "success": false, "velodrome": "Odense Cykelbane, Odense, Denmark[62]" }, { "age": 32.0, "date": "2018-01-11T00:00:00.000Z", "distance (km)": 52.324, "equipment": "Argon 18 Electron Pro, Mavic Comete discs, SRM + Fibre-Lyte chain ring, and a gearing of 54/13", "gender": "men", "index": 44, "record": "unified", "rider": "Martin Toft Madsen", "success": false, "velodrome": "Ballerup Super Arena, Ballerup, Denmark[63]" }, { "age": 33.0, "date": "2018-07-26T00:00:00.000Z", "distance (km)": 53.63, "equipment": "Argon 18 Electron Pro, Mavic Comete discs, SRM + Fibre-Lyte chain ring, and a gearing of 54/13", "gender": "men", "index": 45, "record": "unified", "rider": "Martin Toft Madsen", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico[64]" }, { "age": 29.0, "date": "2018-08-22T00:00:00.000Z", "distance (km)": 52.757, "equipment": "Customized Giant Trinity road frame, with a gearing of 58/14", "gender": "men", "index": 46, "record": "unified", "rider": "Dion Beukeboom", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico[66]" }, { "age": 31.0, "date": "2018-09-13T00:00:00.000Z", "distance (km)": 48.007, "equipment": "Endura skin suit, HVMN Ketone, and Liv Bike [94]", "gender": "women", "index": 47, "record": "unified", "rider": "Vittoria Bussi", "success": true, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico (altitude 1887m)" }, { "age": 19.0, "date": "2018-10-04T00:00:00.000Z", "distance (km)": 53.73, "equipment": "Giant trinity track bike, Mavic disc wheels", "gender": "men", "index": 48, "record": "unified", "rider": "Mikkel Bjerg", "success": false, "velodrome": "Odense Cykelbane, Odense, Denmark[67]" }, { "age": 27.0, "date": "2019-04-16T00:00:00.000Z", "distance (km)": 55.089, "equipment": "Ridley Arena Hour Record bike, 330mm custom handlebars, custom handlebar extensions specifically moulded for Campenaerts' forearms, F-Surface Plus aero paint, Campagnolo drivetrain, full carbon disc Campagnolo Ghibli wheels, C-Bear bottom bracket bearings.[69]", "gender": "men", "index": 49, "record": "unified", "rider": "Victor Campenaerts", "success": true, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico (altitude 1887m)[68]" }, { "age": 34.0, "date": "2019-08-13T00:00:00.000Z", "distance (km)": 53.975, "equipment": null, "gender": "men", "index": 50, "record": "unified", "rider": "Martin Toft Madsen", "success": false, "velodrome": "Odense Cykelbane, Odense, Denmark[70]" }, { "age": 22.0, "date": "2019-10-06T00:00:00.000Z", "distance (km)": 52.061, "equipment": null, "gender": "men", "index": 51, "record": "unified", "rider": "Mathias Norsgaard", "success": false, "velodrome": "Odense Cykelbane, Odense, Denmark[71]" }, { "age": 30.0, "date": "2020-09-18T00:00:00.000Z", "distance (km)": 52.116, "equipment": null, "gender": "men", "index": 52, "record": "unified", "rider": "Claudio Imhof", "success": false, "velodrome": "Zurich, Switzerland" }, { "age": 32.0, "date": "2020-10-23T00:00:00.000Z", "distance (km)": 51.304, "equipment": null, "gender": "men", "index": 53, "record": "unified", "rider": "Lionel Sanders", "success": false, "velodrome": "Milton, Canada[72]" }, { "age": 33.0, "date": "2021-09-30T00:00:00.000Z", "distance (km)": 48.405, "equipment": "LeCol x McLaren Skinsuit, Poc Tempor Helmet Argon18 Electron Pro track frame, WattShop Cratus chainrings (64x15 gear ratio) and WattShop Pentaxia Olympic/Anemoi handlebars/extensions, FFWD Disc-T SL wheels (front and rear w/ 23c Vittoria Pista tyres). Lowden may have used an 8.5mm pitch chain supplied by New Motion Labs.[83]", "gender": "women", "index": 54, "record": "unified", "rider": "Joscelin Lowden", "success": true, "velodrome": "Velodrome Suisse in Grenchen, Switzerland (altitude 450m)" }, { "age": 33.0, "date": "2021-11-03T00:00:00.000Z", "distance (km)": 54.555, "equipment": "Factor Hanzo time trial bike (track version), Aerocoach Aten chainring with 61/13 gearing, Aerocoach Ascalon extensions, custom Vorteq skinsuit, HED Volo disc wheels, Izumi Super Toughness KAI chain[74]", "gender": "men", "index": 55, "record": "unified", "rider": "Alex Dowsett", "success": false, "velodrome": "Aguascalientes Bicentenary Velodrome, Aguascalientes, Mexico (altitude 1887m)[73]" }, { "age": 35.0, "date": "2022-05-23T00:00:00.000Z", "distance (km)": 49.254, "equipment": null, "gender": "women", "index": 56, "record": "unified", "rider": "Ellen van Dijk", "success": true, "velodrome": "Velodrome Suisse in Grenchen, Switzerland (altitude 450m)" }, { "age": 30.0, "date": "2022-08-19T00:00:00.000Z", "distance (km)": 55.548, "equipment": null, "gender": "men", "index": 57, "record": "unified", "rider": "Daniel Bigham", "success": true, "velodrome": "Velodrome Suisse, Grenchen, Switzerland (altitude 450m)" } ], "schema": { "fields": [ { "name": "index", "type": "integer" }, { "name": "date", "type": "datetime" }, { "name": "rider", "type": "string" }, { "name": "age", "type": "number" }, { "name": "velodrome", "type": "string" }, { "name": "distance (km)", "type": "number" }, { "name": "equipment", "type": "string" }, { "name": "success", "type": "boolean" }, { "name": "gender", "type": "string" }, { "name": "record", "type": "string" } ], "pandas_version": "1.4.0", "primaryKey": [ "index" ] } } | |