Add files via upload
This commit is contained in:
parent
3d9fede756
commit
d289d5bac8
4219
ipynb/Bike-Stats.ipynb
Normal file
4219
ipynb/Bike-Stats.ipynb
Normal file
File diff suppressed because one or more lines are too long
@ -32,7 +32,7 @@
|
||||
"source": [
|
||||
"# Reading Data: `rides`\n",
|
||||
"\n",
|
||||
"I downloaded a bunch of my recorded [Strava](https://www.strava.com/athletes/575579) rides, most of them longer than 25 miles (with a few exceptions), as [`bikerides.tsv`](bikerides.tsv). The columns are: the date; the year; a title; the elapsed time of the ride; the length of the ride in miles; and the total climbing in feet, e.g.: \n",
|
||||
"I saved a bunch of my recorded [Strava](https://www.strava.com/athletes/575579) rides, most of them longer than 25 miles, as [`bikerides.tsv`](bikerides.tsv). The columns are: the date; the year; a title; the elapsed time of the ride; the length of the ride in miles; and the total climbing in feet, e.g.: \n",
|
||||
"\n",
|
||||
" Mon, 10/5\t2020\tHalf way around the bay on bay trail\t6:26:35\t80.05\t541\n",
|
||||
" \n",
|
||||
@ -45,6 +45,11 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def parse_rides(lines):\n",
|
||||
" \"\"\"Parse a bikerides.tsv file.\"\"\"\n",
|
||||
" return add_columns(pd.read_table(lines, comment='#',\n",
|
||||
" converters=dict(hours=parse_hours, feet=parse_int)))\n",
|
||||
"\n",
|
||||
"def parse_hours(time: str) -> float: \n",
|
||||
" \"\"\"Parse '4:30:00' => 4.5 hours.\"\"\"\n",
|
||||
" while time.count(':') < 2: \n",
|
||||
@ -53,13 +58,15 @@
|
||||
"\n",
|
||||
"def parse_int(field: str) -> int: return int(field.replace(',', ''))\n",
|
||||
"\n",
|
||||
"def add_derived_columns(rides) -> pd.DataFrame:\n",
|
||||
"def add_columns(rides) -> pd.DataFrame:\n",
|
||||
" \"\"\"Compute new columns from existing ones.\"\"\"\n",
|
||||
" mi, hr, ft = rides['miles'], rides['hours'], rides['feet']\n",
|
||||
" return rides.assign(\n",
|
||||
" mph=round(rides['miles'] / rides['hours'], 2),\n",
|
||||
" vam=round(rides['feet'] / rides['hours']),\n",
|
||||
" fpm=round(rides['feet'] / rides['miles']),\n",
|
||||
" pct=round(rides['feet'] / rides['miles'] * 100 / 5280, 2),\n",
|
||||
" kms=round(rides['miles'] * 1.609, 2))"
|
||||
" mph=round(mi / hr, 2),\n",
|
||||
" vam=round(ft / hr / 3.28084),\n",
|
||||
" fpm=round(ft / mi),\n",
|
||||
" pct=round(ft / mi * 100 / 5280, 2),\n",
|
||||
" kms=round(mi * 1.609, 2))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -68,8 +75,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"rides = add_derived_columns(pd.read_table(open('bikerides.tsv'), comment='#',\n",
|
||||
" converters=dict(hours=parse_hours, feet=parse_int)))"
|
||||
"rides = parse_rides(open('bikerides.tsv'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -91,13 +97,15 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def parse_segments(lines):\n",
|
||||
"def parse_segments(lines) -> pd.DataFrame:\n",
|
||||
" \"\"\"Parse segments into rides. Each ride is a tuple of:\n",
|
||||
" (segment_title, time, miles, feet_climb).\"\"\"\n",
|
||||
" records = []\n",
|
||||
" for segment in lines:\n",
|
||||
" title, mi, ft, *times = segment.split(',')[:5]\n",
|
||||
" for time in times:\n",
|
||||
" yield title, parse_hours(time), float(mi), parse_int(ft)"
|
||||
" records.append((title, parse_hours(time), float(mi), parse_int(ft)))\n",
|
||||
" return add_columns(pd.DataFrame(records, columns=('title', 'hours', 'miles', 'feet')))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -106,9 +114,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"segments = add_derived_columns(pd.DataFrame(\n",
|
||||
" parse_segments(open('bikesegments.csv')), \n",
|
||||
" columns='title\thours\tmiles\tfeet'.split()))"
|
||||
"segments = parse_segments(open('bikesegments.csv'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -135,7 +141,7 @@
|
||||
" def __str__(self): return f'{(self - 1) // 12}-{(self % 12) or 12:02d}'\n",
|
||||
"\n",
|
||||
"start = Month(2020 * 12 + 7) # Starting month: July 2020\n",
|
||||
"bonuses = (25, 90, 99) # Percents the earn important bonuses\n",
|
||||
"bonuses = (0.1, 25, 90, 99) # Percents the earn important bonuses\n",
|
||||
"\n",
|
||||
"Entry = Tuple[str, float, List[float]] # (Place_Name, miles_of_roads, [pct_by_month,...])\n",
|
||||
"\n",
|
||||
@ -149,10 +155,6 @@
|
||||
" X = [dates[i] for i in range(N) if pcts[i]]\n",
|
||||
" Y = [pcts[i] for i in range(N) if pcts[i]]\n",
|
||||
" ax.plot(X, Y, ':', marker=marker, label=label(pcts, place, miles))\n",
|
||||
" all_pcts = [p for _, _, pcts in entries for p in pcts if p]\n",
|
||||
" for p in bonuses: \n",
|
||||
" if min(all_pcts) < p < max(all_pcts):\n",
|
||||
" ax.plot(dates, [p] * N, 'k:', lw=1, alpha=3/4) # Plot bonus line\n",
|
||||
" ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), shadow=True,\n",
|
||||
" prop=matplotlib.font_manager.FontProperties(family='monospace'))\n",
|
||||
" plt.xticks(dates, [str(d) for d in dates], rotation=90)\n",
|
||||
@ -210,6 +212,13 @@
|
||||
"places = parse_places(open('bikeplaces.txt'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Updating `bikeplaces.txt` to a new month"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
@ -217,9 +226,11 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def update_places(filename='bikeplaces.txt'):\n",
|
||||
" \"\"\"Print an update of the bikeplaces.txt file by adding a new month.\"\"\"\n",
|
||||
" return ''.join(map(update_line, open(filename)))\n",
|
||||
"\n",
|
||||
"def update_line(line):\n",
|
||||
" \"\"\"Update a line by adding a new month with the same % as the previous.\"\"\"\n",
|
||||
" words = line.split()\n",
|
||||
" if not words or words[0].startswith(':'):\n",
|
||||
" pass\n",
|
||||
@ -231,6 +242,157 @@
|
||||
" return ' '.join(words) + '\\n'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
":Complete!:\n",
|
||||
"Atherton: 56.0: 0*4 91.2 94.0 | 95.2*2 94.2 94.9 96.2*2 98.7 99.5 99.19 99.3*2\n",
|
||||
"Kensington Square: 0.6: 86.9 100*5 | 100*4 99.9*4 99.99*3\n",
|
||||
"Menlo Oaks: 3.5: 0*4 98.4 99.7 | 99.7*4 100*4 99.99*3\n",
|
||||
"West Menlo Park: 11.2: 0*4 97.5 98.1 | 98.1*3 99.3 99.7*2 100*2 99.99*3\n",
|
||||
"North Fair Oaks: 26.7: 78.1 90.4 93.1 93.8 94.8 96.1 | 96.9*2 99.1*6 99.17*3\n",
|
||||
"Sequoia Tract: 11.5: 0*4 72.8 82.3 | 92.5*4 96.4*2 97.5 98.2 99.4*3\n",
|
||||
"East Palo Alto: 47.6: 74.4 91.2 91.9*2 92.2 93.3 | 93.4*2 92.4*2 92.5*4 95.0 99.2*2\n",
|
||||
"\n",
|
||||
":Over 90%:\n",
|
||||
"Los Altos: 139.6: 40.2 43.7 72.4 77.2 84.5 90.8 | 91.0*2 91.1*2 91.2 90.4*3 90.63 90.9*2\n",
|
||||
"Emerald Lake Hills: 24.6: 0.0 94.3*3 44.7 51.0 | 80.0 85.8 91.3*6 92.2*3\n",
|
||||
"Menlo Park: 141.1: 67.7 76.8 87.7 90.7 91.2 90.1 | 92.5*2 91.4 91.6*3 91.8*2 93.5 94.7*2\n",
|
||||
"Mountain View: 211.8: 53.0 59.9 63.0 63.6 72.9 77.1 | 91.1*4 92.3*4 91.12 93.5*2\n",
|
||||
"Palo Alto: 298.8: 63.0 73.6 85.4 85.7 87.1 87.6 | 88.1*2 90.3 90.4 90.5 90.6*2 90.7 89.8 91.3*2\n",
|
||||
"Loyola: 18.3: 0*4 60.8 62.1 | 62.1*4 91.5 90.6 91.3*2\n",
|
||||
"Palomar Park: 4.1: 0*6 | 91.1*2 94.9*6 98.1*3\n",
|
||||
"Syline Ridge OSP: 0.8: 0*6 | 0*9 91.5*2\n",
|
||||
"\n",
|
||||
":Between 33% and 90%:\n",
|
||||
"Monte Sereno: 20.4: 20.5*6 | 20.5 39.8*3 44.1*7\n",
|
||||
"Burlingame: 88.4: 9.4*6 | 9.4 31.5*3 35.5*7\n",
|
||||
"Los Altos Hills: 91: 48.4*2 49.0 55.1*2 55.4 | 55.8*4 54.0*2 56.4 59.0*2 62.1*2\n",
|
||||
"Portola Valley: 59: 0*4 57.3 59.8 | 59.8*2 61.0*2 66.2 66.4 67.4 70.3 72.0*2\n",
|
||||
"Redwood City: 242.2: 34.0 39.1 46.0 51.6 56.9 60.8 | 62.9*2 65.1*2 66.3 66.7 67.0*2 75.0 77.9*2\n",
|
||||
"San Carlos: 99: 22.2 26.0 32.9 32.9 37.2 39.0 | 40.5*2 41.4*2 41.0 41.7*6\n",
|
||||
"Woodside: 75.2: 51.9*2 52.3*3 54.0 | 56.1*4 62.2 65.8 81.8 84.3 85.5*3\n",
|
||||
"Ladera: 8.0: 0*4 30.5 29.8 | 29.8*2 47.6*2 44.5*2 50.6*3 82.1*2\n",
|
||||
"Los Trancos Woods: 5.3: 0*4 71.4*2 | 71.4*4 74.9 75.0*6\n",
|
||||
"Sky Londa: 11.8: 0*4 72.1*2 | 73.2*4 75.4 75.5*4 83.4*2\n",
|
||||
"Foster City: 150: 9.1*6 | 9.1 27.4 37.2*2 38.7*5 34.3*2\n",
|
||||
"Burlingame Hills: 6: 0*6 | 0.8 34.5*3 35.5*7\n",
|
||||
"\n",
|
||||
":Between 25% and 33%:\n",
|
||||
"Newark: 147: 15*3 17*3 | 18.7 26.8 30.8*9\n",
|
||||
"Millbrae: 65: 0*6 | 0 18.4 31.6*2 32.8*7\n",
|
||||
"Cupertino: 172: 22.1 23.9 26.2*3 26.3 | 26.4*4 26.5*4 29.5 29.7*2\n",
|
||||
"Belmont: 98.1: 15.5 17.3 18.6 18.6 20.6*2 | 27.4*2 27.5*2 27.3 27.4*4 27.5*2\n",
|
||||
"Campbell: 119: 8.9 10.1 12.4*4 | 12.4 25.2 26.5*4 26.8 28.3*2\n",
|
||||
"Hillsborough: 85.3: 3.3*6 | 3.6 24.5 25.3*6 25.5*3\n",
|
||||
"Los Gatos: 148: 7.5 8.6 8.8*4 | 8.8 26.1*3 28.2*5 28.6*2\n",
|
||||
"San Mateo: 256: 11.1*6 | 11.3 25.5 27.8*9\n",
|
||||
"Saratoga: 180: 14.5 15.7 17.4*4 | 17.4 26.9*3 27.2*7\n",
|
||||
"Sunnyvale: 357: 19.4 19.9 22.2*4 | 25.1*3 25.8 25.9*5 31.0*2\n",
|
||||
"Union City: 208.8: 7*3 8*3 | 8.8*2 25.7*2 26.7*7\n",
|
||||
"Fremont: 780.2: 9*3 10*3 | 11.7*2 27.5 28.1*8\n",
|
||||
"San Mateo Highlands: 18: 0*6 | 18.0 29.2*3 28.0*7\n",
|
||||
"Santa Clara: 348: 6.4*2 9.6*4 | 9.6*3 26.6*5 28.8 29.4*2\n",
|
||||
"San Bruno: 114: 0*6 | 0*3 25.4*5 25.5*3\n",
|
||||
"Milpitas: 224: 2.2*4 4.4*2 | 4.4*3 26.6 27.2*5 29.5*2\n",
|
||||
"\n",
|
||||
":A Few Places Below 25%:\n",
|
||||
"Half Moon Bay: 68: 0*6 | 8.9*11\n",
|
||||
"Emeryville: 28.1: 0*6 | 5.5*4 7.0*7\n",
|
||||
"Hayward: 444.5: 0*6 | 4.6*4 5.1*7\n",
|
||||
"Berkeley: 260.3: 5.0*3 7.0*3 | 7.0*11\n",
|
||||
"Albany: 42.7: 0*6 | 0*4 6.6*7\n",
|
||||
"\n",
|
||||
":San Jose Neighborhoods:\n",
|
||||
"San Jose: 2618.7: 1.3 1.36 5.3*4 | 5.4*3 6.7 11.9 13.1 18.2 19.8 23.1 25.6*2\n",
|
||||
"Spartan Keyes: 64.3: 0*6 | 22.1*6 38.9 39.0 35.74 35.8*2\n",
|
||||
"Willow Glen: 81.6: 0*6 | 13.9*6 29.67 32.6 31.95 34.9*2\n",
|
||||
"Gardner: 23.4: 0*6 | 0*6 22.6 40.5 39.69 43.9*2\n",
|
||||
"Seven Trees: 40.9: 0*6 | 0*6 27.96 28.0 25.9*3\n",
|
||||
"Edenvale: 30: 0*6 | 0*6 47.35*2 46.81 47.0*2\n",
|
||||
"Parkview: 42.5: 0*6 | 0*6 30.32*2 27.8 32.1*2\n",
|
||||
"Branham: 44.0: 0*6 | 0*6 26.5 27.9 27.75 32.1*2\n",
|
||||
"Willow Glen South: 63.3: 0*6 | 0*6 22.3 30.6 29.23 30.2*2\n",
|
||||
"Communications Hill: 27.8: 0*6 | 0*6 34.1*2 33.96 37.2*2\n",
|
||||
"\n",
|
||||
":San Francisco Neighborhoods Over 25%:\n",
|
||||
"Golden Gate Park: 40.8: 0*6 | 25.6*8 37.8*3\n",
|
||||
"Lincoln Park: 4.5: 0*6 | 43*8 35.4*3\n",
|
||||
"Presidio National Park: 43.5: 0*6 | 21.1*4 24.4*4 27.7*3\n",
|
||||
"Presidio Terrace: 2.8: 0*6 | 37.0*8 43.7*3\n",
|
||||
"Seacliff: 4.1: 0*6 | 23.1*8 30.7*3\n",
|
||||
"South Beach: 4.8: 0*6 | 28.2*4 39.6*7\n",
|
||||
"Lake Street: 3.9: 0*6 | 0*8 36.8*3\n",
|
||||
"\n",
|
||||
":San Francisco Neighborhoods Under 25%:\n",
|
||||
"Little Hollywood: 3.7: 0*6 | 0*4 15.4*7\n",
|
||||
"Mission Bay: 13.8: 0*6 | 0*4 9.3*7\n",
|
||||
"Sutro Heights: 7.1: 0*6 | 0*4 14.0*7\n",
|
||||
"Pacific Heights: 18: 0*6 | 10.8*11\n",
|
||||
"Ashbury Heights: 3.7: 0*6 | 12.9*11\n",
|
||||
"Clarendon Heights: 6: 0*6 | 14.3*11\n",
|
||||
"Cow Hollow: 12: 0*6 |5*4 12.0*7\n",
|
||||
"Financial District: 9.4: 0*6 |5.8*4 9.7*7\n",
|
||||
"Golden Gate Heights: 17.8: 0*6 | 10.7*11\n",
|
||||
"Polk Gulch: 4: 0*6 | 18.2*11\n",
|
||||
"Presidio Heights: 6.5: 0*6 | 15.1*11\n",
|
||||
"Aquatic Park / Fort Mason: 6.4: 0*6 | 0*4 14.9*7\n",
|
||||
"Central Waterfront: 10.2: 0*6 | 0*4 6.7*7\n",
|
||||
"Northern Waterfront: 5.6: 0*6 | 0*4 16.4*7\n",
|
||||
"Dogpatch: 5.1: 0*6 | 0*4 12.4*7\n",
|
||||
"Fisherman's Wharf: 6.2: 0*6 | 0*4 14.2*7\n",
|
||||
"Balboa Terrace: 3.4: 0*6 | 18.2*11\n",
|
||||
"Cole Valley: 1.7: 0*6 | 19.6*11\n",
|
||||
"Forest Hill: 6.1: 0*6 | 15.7*11\n",
|
||||
"\n",
|
||||
":Far, Far Away:\n",
|
||||
"Mokelumne Hill, Calaveras: 14.7: 28.9*6| 28.9*11\n",
|
||||
"MIT, Cambridge, MA: 9.6: 37.2*6 | 37.2*11\n",
|
||||
"Barangaroo, NSW: 1.7: 49.9*6 | 49.9*11\n",
|
||||
"Dawes Point, NSW: 1.8: 29.2*6 | 29.2*11\n",
|
||||
"Millers Point, NSW: 3.2: 38.2*6 | 38.2*11\n",
|
||||
"Stinson Beach, Marin: 11.2: 9.2*6 | 9.2*11\n",
|
||||
"Muir Beach, Marin: 4.6: 35.8*6 | 35.8*11\n",
|
||||
"Corte Madera, Marin: 51: 0*6 | 0*4 13*7\n",
|
||||
"Mill Valley, Marin: 92.2: 0*6 | 0*4 5.1*7\n",
|
||||
"San Rafael, Marin: 260: 0*6 | 0*4 3.7*7\n",
|
||||
"Sausalito, Marin: 32.7: 0*6 | 0*4 13.1*7\n",
|
||||
"Cambridge, MA: 180.8: 6.4*6 | 6.4*11\n",
|
||||
"Bodega Bay, Sonoma: 28.9: 18*6 | 18*11\n",
|
||||
"Guerneville, Sonoma: 22.7: 23.4*6 | 23.4*11\n",
|
||||
"Healdsburg, Sonoma: 53.7: 18.5*6 | 18.5*11\n",
|
||||
"\n",
|
||||
":California Bay Area Counties:\n",
|
||||
"Contra Costa: 6052: 1.0*6 | 1.0*3 1.41*8\n",
|
||||
"San Mateo: 3173: 20.1 21.2 22.9 23.4 24.57 25.53 | 26.43 30.0 31.27 32.24 32.54 32.98 33.48 33.56 34.51 34.7*2\n",
|
||||
"Santa Clara: 7507: 12.7 13.6 15.4 15.6 16.04 16.29 | 16.78 17.73 18.15 20.0 21.1 22.53 24.45 25.05 25.96 27.76*2\n",
|
||||
"Alameda: 5704: 3.3*3 3.94*3 | 4.73*2 7.06 7.14 7.34*7\n",
|
||||
"Marin: 2322: 6.7*6 | 6.7*4 7.98*7\n",
|
||||
"Napa: 1524: 5.1*6 | 5.1*11\n",
|
||||
"Sonoma: 4556: 5.1*6 | 5.1*11\n",
|
||||
"San Francisco: 1197: 4.5*6 | 4.5*4 5.47*4 6.4 6.51*2\n",
|
||||
"Santa Cruz: 2767: 2.3*6 | 2.3*11\n",
|
||||
"\n",
|
||||
":California:\n",
|
||||
"California: 371717: .712 .811 .846 .867 .8875 .8873 | .9054 .9624 1.0289 1.0758 1.1278 1.1386 1.1812 1.1939 1.2007 1.2524*2\n",
|
||||
"\n",
|
||||
":USA and Earth\n",
|
||||
"USA: 6333164: .048 .052 .055 .05589 .0571 .05749 | .05853 .06183 .06553 .06824 0.07138 0.07200 0.07446 0.0752 0.07665 0.07904*2\n",
|
||||
"Earth: 40818989: .008 .0089 .0091 .00936 .009535 .009536| .009597 .010136 .010561 .010997 .011349 0.011448 0.011839 0.011955 0.012024 0.0124113*2\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#print(update_places()) #### Do this once a month and copy/paste the output"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@ -240,7 +402,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -254,13 +416,39 @@
|
||||
" \"\"\"The number of rides needed to reach an Eddington number target.\"\"\"\n",
|
||||
" return target - sum(distances > target)\n",
|
||||
"\n",
|
||||
"def Ed_progress(years=range(2013, 2022), rides=rides) -> pd.DataFrame:\n",
|
||||
"def Ed_gaps(rides, N=10) -> dict:\n",
|
||||
" \"\"\"A table of gaps to Eddington numbers by year, and a plot.\"\"\"\n",
|
||||
" E_km, E_mi = Ed_number(rides.kms), Ed_number(rides.miles)\n",
|
||||
" data = [(E_km + d, Ed_gap(rides.kms, E_km + d), E_mi + d, Ed_gap(rides.miles, E_mi + d))\n",
|
||||
" for d in range(N)]\n",
|
||||
" frame = pd.DataFrame(data, columns=['kms', 'Ed gap (kms)', 'miles', 'Ed gap (miles)'])\n",
|
||||
" figure, (ax1, ax2) = plt.subplots(1, 2)\n",
|
||||
" frame.plot(ax=ax1, kind='line', x='kms', y='Ed gap (kms)', style='o:', grid=1,\n",
|
||||
" title='Metric Eddington Gaps')\n",
|
||||
" frame.plot(ax=ax2, kind='line', x='miles', y='Ed gap (miles)', style='o:', grid=1,\n",
|
||||
" title='Eddington Gaps')\n",
|
||||
" return frame\n",
|
||||
"\n",
|
||||
"def Ed_gaps(rides, N=10) -> dict:\n",
|
||||
" \"\"\"A table of gaps to Eddington numbers by year, and a plot..\"\"\"\n",
|
||||
" E_km, E_mi = Ed_number(rides.kms), Ed_number(rides.miles)\n",
|
||||
" data = [(E_km + d, Ed_gap(rides.kms, E_km + d), E_mi + d, Ed_gap(rides.miles, E_mi + d))\n",
|
||||
" for d in range(N)]\n",
|
||||
" frame = pd.DataFrame(data, columns=['kms', 'Ed gap (kms)', 'miles', 'Ed gap (miles)'])\n",
|
||||
" figure, (ax1, ax2) = plt.subplots(1, 2)\n",
|
||||
" frame.plot(ax=ax1, kind='line', x='kms', y='Ed gap (kms)', style='o:', grid=1,\n",
|
||||
" title='Metric Eddington Gaps')\n",
|
||||
" frame.plot(ax=ax2, kind='line', x='miles', y='Ed gap (miles)', style='o:', grid=1,\n",
|
||||
" title='Eddington Gaps')\n",
|
||||
" return frame\n",
|
||||
"\n",
|
||||
"def Ed_progress(years=reversed(range(2013, 2022)), rides=rides) -> pd.DataFrame:\n",
|
||||
" \"\"\"A table of Eddington numbers by year, and a plot.\"\"\"\n",
|
||||
" def Ed(year, d): return Ed_number(rides[rides['year'] <= year][d])\n",
|
||||
" data = [(y, Ed(y, 'kms'), Ed(y, 'miles')) for y in years]\n",
|
||||
" frame = pd.DataFrame(data, columns=['year', 'Ed_km', 'Ed_mi'])\n",
|
||||
" frame.plot('year', ['Ed_km', 'Ed_mi'], style='o:',\n",
|
||||
" title='Eddington Numbers in kms and miles')\n",
|
||||
" title=f'My Eddington Numbers: {Ed_number(rides.kms)} in kms, {Ed_number(rides.miles)} in miles')\n",
|
||||
" grid(axis='y')\n",
|
||||
" return frame"
|
||||
]
|
||||
@ -274,7 +462,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -305,10 +493,58 @@
|
||||
"\n",
|
||||
"def estimate(miles, feet, estimator=estimator) -> float:\n",
|
||||
" \"\"\"Given a ride distance in miles and total climb in feet, estimate time in minutes.\"\"\"\n",
|
||||
" return 60 * miles / estimator(feet / miles)\n",
|
||||
" return round(60 * miles / estimator(feet / miles))\n",
|
||||
"\n",
|
||||
"def top(frame, field, n=20): return frame.sort_values(field, ascending=False).head(n)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{6, 10}"
|
||||
]
|
||||
},
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"class Acker:\n",
|
||||
" def __init__(self, n=0):\n",
|
||||
" self.HWM = n\n",
|
||||
" self._set = {n}\n",
|
||||
" \n",
|
||||
" def ack(self, n):\n",
|
||||
" if n <= self.HWM:\n",
|
||||
" warn(f'duplicate ack of {n}')\n",
|
||||
" else:\n",
|
||||
" self._set.add(n)\n",
|
||||
" while self.HWM + 1 in self._set:\n",
|
||||
" self._set.remove(self.HWM)\n",
|
||||
" self.HWM += 1\n",
|
||||
"\n",
|
||||
"A = Acker(3)\n",
|
||||
"A.ack(5)\n",
|
||||
"A.ack(6)\n",
|
||||
"A.ack(10)\n",
|
||||
"assert A.HWM == 3\n",
|
||||
"A.ack(4)\n",
|
||||
"assert A.HWM == 6\n",
|
||||
"A._set\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
@ -1,116 +1,135 @@
|
||||
:Complete!:
|
||||
Atherton: 56.0: 0*4 91.2 94.0 | 95.2*2 94.2 94.9 96.2*2 98.7 99.5 99.19 99.3*2
|
||||
Kensington Square: 0.6: 86.9 100*5 | 100*4 99.9*4 99.99*3
|
||||
Menlo Oaks: 3.5: 0*4 98.4 99.7 | 99.7*4 100*4 99.99*3
|
||||
West Menlo Park: 11.2: 0*4 97.5 98.1 | 98.1*3 99.3 99.7*2 100*2 99.99*3
|
||||
North Fair Oaks: 26.7: 78.1 90.4 93.1 93.8 94.8 96.1 | 96.9*2 99.1*6 99.17*3
|
||||
Sequoia Tract: 11.5: 0*4 72.8 82.3 | 92.5*4 96.4*2 97.5 98.2 99.4*3
|
||||
East Palo Alto: 47.6: 74.4 91.2 91.9*2 92.2 93.3 | 93.4*2 92.4*2 92.5*4 95.0 99.2*2
|
||||
|
||||
:Over 90%:
|
||||
Los Altos: 138: 40.2 43.7 72.4 77.2 84.5 90.8 | 91.0*2 91.1*3
|
||||
Atherton: 55.7: 0*4 91.2 94.0 | 95.2*2 94.2 94.9*2
|
||||
East Palo Alto: 46.5: 74.4 91.2 91.9*2 92.2 93.3 | 93.4*2 92.4*3
|
||||
Emerald Lake Hills: 24.4: 0.0 94.3*3 44.7 51.0 | 80.0 85.8 91.3*3
|
||||
Menlo Park: 136.4: 67.7 76.8 87.7 90.7 91.2 90.1 | 92.5*2 91.4 91.6*2
|
||||
North Fair Oaks: 26.8: 48.1 90.4 93.1 93.8 94.8 96.1 | 96.9*2 99.1*3
|
||||
Mountain View: 205: 53.0 59.9 63.0 63.6 72.9 77.1 | 91.1*5
|
||||
Palo Alto: 292: 63.0 73.6 85.4 85.7 87.1 87.6 | 88.1*2 90.3 90.4*2
|
||||
Loyola: 18.3: 0*4 60.8 62.1 | 62.1*4 88.6
|
||||
Los Altos: 139.6: 40.2 43.7 72.4 77.2 84.5 90.8 | 91.0*2 91.1*2 91.2 90.4*3 90.63 90.9*2
|
||||
Emerald Lake Hills: 24.6: 0.0 94.3*3 44.7 51.0 | 80.0 85.8 91.3*6 92.2*3
|
||||
Menlo Park: 141.1: 67.7 76.8 87.7 90.7 91.2 90.1 | 92.5*2 91.4 91.6*3 91.8*2 93.5 94.7*2
|
||||
Mountain View: 211.8: 53.0 59.9 63.0 63.6 72.9 77.1 | 91.1*4 92.3*4 91.12 93.5*2
|
||||
Palo Alto: 298.8: 63.0 73.6 85.4 85.7 87.1 87.6 | 88.1*2 90.3 90.4 90.5 90.6*2 90.7 89.8 91.3 91.5
|
||||
Loyola: 18.3: 0*4 60.8 62.1 | 62.1*4 91.5 90.6 91.3*2
|
||||
Palomar Park: 4.1: 0*6 | 91.1*2 94.9*6 98.1*3
|
||||
Syline Ridge OSP: 0.8: 0*6 | 0*9 91.5*2
|
||||
Ladera: 8.0: 0*4 30.5 29.8 | 29.8*2 47.6*2 44.5*2 50.6*3 82.1 92.0
|
||||
|
||||
:Between 30% and 90%:
|
||||
Foster City: 150: 9.1*6 | 9.1 27.4 37.2*3
|
||||
Burlingame: 88.4: 9.4*6 | 9.4 31.5*4
|
||||
Los Altos Hills: 91: 48.4*2 49.0 55.1*2 55.4 | 55.8*5
|
||||
Millbrae: 65: 0*6 | 0 18.4 31.6*3
|
||||
Monte Sereno: 20.4: 20.5*6 | 20.5 39.8*4
|
||||
Portola Valley: 59: 0*4 57.3 59.8 | 59.8*2 61.0*3
|
||||
Redwood City: 235.1: 34.0 39.1 46.0 51.6 56.9 60.8 | 62.9*2 65.1*3
|
||||
San Carlos: 99: 22.2 26.0 32.9 32.9 37.2 39.0 | 40.5*2 41.4*3
|
||||
Woodside: 75.2: 51.9*2 52.3*3 54.0 | 56.1*5
|
||||
Newark: 147: 15*3 17*3 | 18.7 26.8 30.8*3
|
||||
:Between 33% and 90%:
|
||||
Monte Sereno: 20.4: 20.5*6 | 20.5 39.8*3 44.1*7
|
||||
Burlingame: 88.4: 9.4*6 | 9.4 31.5*3 35.5*7
|
||||
Los Altos Hills: 91: 48.4*2 49.0 55.1*2 55.4 | 55.8*4 54.0*2 56.4 59.0*2 62.1 62.5
|
||||
Portola Valley: 59: 0*4 57.3 59.8 | 59.8*2 61.0*2 66.2 66.4 67.4 70.3 72.0*2
|
||||
Redwood City: 242.2: 34.0 39.1 46.0 51.6 56.9 60.8 | 62.9*2 65.1*2 66.3 66.7 67.0*2 75.0 77.9*2
|
||||
San Carlos: 99: 22.2 26.0 32.9 32.9 37.2 39.0 | 40.5*2 41.4*2 41.0 41.7*6
|
||||
Woodside: 75.2: 51.9*2 52.3*3 54.0 | 56.1*4 62.2 65.8 81.8 84.3 85.5*3
|
||||
Los Trancos Woods: 5.3: 0*4 71.4*2 | 71.4*4 74.9 75.0*6
|
||||
Sky Londa: 11.8: 0*4 72.1*2 | 73.2*4 75.4 75.5*4 83.4*2
|
||||
Foster City: 150: 9.1*6 | 9.1 27.4 37.2*2 38.7*5 34.3*2
|
||||
Burlingame Hills: 6: 0*6 | 0.8 34.5*3 35.5*7
|
||||
San Lorenzo: 55.5: 0*6 | 0*10 34.56
|
||||
Newark: 147: 15*3 17*3 | 18.7 26.8 30.8*8 42.5
|
||||
Millbrae: 65: 0*6 | 0 18.4 31.6*2 32.8*7
|
||||
|
||||
:Just Over 25%:
|
||||
Belmont: 98.1: 15.5 17.3 18.6 18.6 20.6*2 | 27.4*2 27.5*3
|
||||
Campbell: 119: 8.9 10.1 12.4*4 | 12.4 25.2*4
|
||||
Cupertino: 172: 22.1 23.9 26.2*3 26.3 | 26.4*5
|
||||
Hillsborough: 85.3: 3.3*6 | 3.6 24.5 25.3*3
|
||||
Los Gatos: 148: 7.5 8.6 8.8*4 | 8.8 26.1*4
|
||||
San Mateo: 256: 11.1*6 | 11.3 25.5 27.8*3
|
||||
Saratoga: 180: 14.5 15.7 17.4*4 | 17.4 26.9*4
|
||||
Sunnyvale: 357: 19.4 19.9 22.2*4 | 25.1*3 25.8*2
|
||||
Union City: 208.8: 7*3 8*3 | 8.8*2 25.7*2 26.7
|
||||
Fremont: 780.2: 9*3 10*3 | 11.7*2 27.5 28.1*2
|
||||
San Mateo Highlands: 18: 0*6 | 18.0 29.2*4
|
||||
Santa Clara: 348: 6.4*2 9.6*4 | 9.6*3 26.6*2
|
||||
San Bruno: 114: 0*6 | 0*3 25.4*2
|
||||
Milpitas: 224: 2.2*4 4.4*2 | 4.4*3 26.6*2
|
||||
:Between 25% and 33%:
|
||||
Cherryland: 20.9: 0*6 | 0*10 26.8
|
||||
Cupertino: 172: 22.1 23.9 26.2*3 26.3 | 26.4*4 26.5*4 29.5 29.7*2
|
||||
Belmont: 98.1: 15.5 17.3 18.6 18.6 20.6*2 | 27.4*2 27.5*2 27.3 27.4*4 27.5*2
|
||||
Campbell: 119: 8.9 10.1 12.4*4 | 12.4 25.2 26.5*4 26.8 28.3*2
|
||||
Hillsborough: 85.3: 3.3*6 | 3.6 24.5 25.3*6 25.5*3
|
||||
Los Gatos: 148: 7.5 8.6 8.8*4 | 8.8 26.1*3 28.2*5 28.6*2
|
||||
San Mateo: 256: 11.1*6 | 11.3 25.5 27.8*9
|
||||
Saratoga: 180: 14.5 15.7 17.4*4 | 17.4 26.9*3 27.2*7
|
||||
Sunnyvale: 357: 19.4 19.9 22.2*4 | 25.1*3 25.8 25.9*5 31.0*2
|
||||
Union City: 208.8: 7*3 8*3 | 8.8*2 25.7*2 26.7*7
|
||||
Fremont: 780.2: 9*3 10*3 | 11.7*2 27.5 28.1*7 28.8
|
||||
San Mateo Highlands: 18: 0*6 | 18.0 29.2*3 28.0*7
|
||||
Santa Clara: 348: 6.4*2 9.6*4 | 9.6*3 26.6*5 28.8 29.4*2
|
||||
San Bruno: 114: 0*6 | 0*3 25.4*5 25.5*3
|
||||
Milpitas: 224: 2.2*4 4.4*2 | 4.4*3 26.6 27.2*5 29.5*2
|
||||
Hayward: 444.5: 0*6 | 4.6*4 5.1*6 26.3
|
||||
Rosie the Riveter Park: 5.5: 0*6 | 0*4 29.3*7
|
||||
|
||||
:Just Getting Started:
|
||||
Half Moon Bay: 68: 0*6 | 8.9*5
|
||||
Emeryville: 28.1: 0*6 | 5.5*4 7.0
|
||||
Hayward: 445.1: 0*6 | 4.6*4 5.1
|
||||
San Jose: 2543: 1.3 1.36 5.3*4 | 5.4*3 6.7 8.4
|
||||
Berkeley: 260.3: 5.0*3 7.0*3 | 7.0*5
|
||||
San Rafael: 260: 0*6 | 0*4 3.7
|
||||
Albany: 42.7: 0*6 | 0*4 6.6
|
||||
Corte Madera: 51: 0*6 | 0*4 13
|
||||
Mill Valley: 92.2: 0*6 | 0*4 5.1
|
||||
Sausalito: 32.7: 0*6 | 0*4 13.1
|
||||
:San Jose Neighborhoods:
|
||||
San Jose: 2618.7: 1.3 1.36 5.3*4 | 5.4*3 6.7 11.9 13.1 18.2 19.8 23.1 25.6*2
|
||||
Spartan Keyes: 64.3: 0*6 | 22.1*6 38.9 39.0 35.74 35.8*2
|
||||
Willow Glen: 81.6: 0*6 | 13.9*6 29.67 32.6 31.95 34.9*2
|
||||
Gardner: 23.4: 0*6 | 0*6 22.6 40.5 39.69 43.9*2
|
||||
Seven Trees: 40.9: 0*6 | 0*6 27.96 28.0 25.9*3
|
||||
Edenvale: 30: 0*6 | 0*6 47.35*2 46.81 47.0*2
|
||||
Parkview: 42.5: 0*6 | 0*6 30.32*2 27.8 32.1*2
|
||||
Branham: 44.0: 0*6 | 0*6 26.5 27.9 27.75 32.1*2
|
||||
Willow Glen South: 63.3: 0*6 | 0*6 22.3 30.6 29.23 30.2*2
|
||||
Communications Hill: 27.8: 0*6 | 0*6 34.1*2 33.96 37.2*2
|
||||
|
||||
:Tiny Neighborhoods (under 12 road miles):
|
||||
Burlingame Hills: 6: 0*6 | 0.8 34.5*4
|
||||
Kensington Square: 0.6: 86.9 100*5 | 100*5
|
||||
Ladera: 8.0: 0*4 30.5 29.8 | 29.8*2 47.6*3
|
||||
Los Trancos Woods: 5.4: 0*4 71.4*2 | 71.4*5
|
||||
Menlo Oaks: 3.6: 0*4 98.4 99.7 | 99.7*5
|
||||
Palomar Park: 3.9: 0*6 | 91.1*2 94.9*3
|
||||
Sequoia Tract: 11.6: 0*4 72.8 82.3 | 92.5*5
|
||||
Sky Londa: 11.8: 0*4 72.1*2 | 73.2*5
|
||||
West Menlo Park: 11.2: 0*4 97.5 98.1 | 98.1*3 99.3*2
|
||||
:San Francisco Neighborhoods Over 25%:
|
||||
Golden Gate Park: 40.8: 0*6 | 25.6*8 37.8*3
|
||||
Lincoln Park: 4.5: 0*6 | 43*8 35.4*3
|
||||
Presidio National Park: 43.5: 0*6 | 21.1*4 24.4*4 27.7*3
|
||||
Presidio Terrace: 2.8: 0*6 | 37.0*8 43.7*3
|
||||
Seacliff: 4.1: 0*6 | 23.1*8 30.7*3
|
||||
South Beach: 4.8: 0*6 | 28.2*4 39.6*7
|
||||
Lake Street: 3.9: 0*6 | 0*8 36.8*3
|
||||
|
||||
:San Francisco Neighborhoods:
|
||||
Aquatic Park / Fort Mason: 6.4: 0*6 | 0*4 14.9
|
||||
Central Waterfront: 10.2: 0*6 | 0*4 6.7
|
||||
Northern Waterfront: 5.6: 0*6 | 0*4 16.4
|
||||
Dogpatch: 5.1: 0*6 | 0*4 12.4
|
||||
Fisherman's Wharf: 6.2: 0*6 | 0*4 14.2
|
||||
Balboa Terrace: 3.4: 0*6 | 18.2*5
|
||||
Cole Valley: 1.7: 0*6 | 19.6*5
|
||||
Forest Hill: 6.1: 0*6 | 15.7*5
|
||||
Golden Gate Park: 40.8: 0*6 | 25.6*5
|
||||
Lincoln Park: 3.7: 0*6 | 43*5
|
||||
Pacific Heights: 18: 0*6 | 10.8*5
|
||||
Ashbury Heights: 3.7: 0*6 | 12.9*5
|
||||
Clarendon Heights: 6: 0*6 | 14.3*5
|
||||
Cow Hollow: 12: 0*6 |5*4 12.0
|
||||
Financial District: 9.4: 0*6 |5.8*4 9.7
|
||||
Golden Gate Heights: 17.8: 0*6 | 10.7*5
|
||||
Polk Gulch: 4: 0*6 | 18.2*5
|
||||
Presidio Heights: 6.5: 0*6 | 15.1*5
|
||||
Presidio National Park: 43.5: 0*6 | 21.1*4 24.4
|
||||
Presidio Terrace: 2.8: 0*6 | 37.0*5
|
||||
Seacliff: 4.1: 0*6 | 23.1*5
|
||||
South Beach: 4.8: 0*6 | 28.2*4 39.7
|
||||
Little Hollywood: 3.7: 0*6 | 0*4 15.4
|
||||
:San Francisco Neighborhoods Under 25%:
|
||||
Little Hollywood: 3.7: 0*6 | 0*4 15.4*7
|
||||
Mission Bay: 13.8: 0*6 | 0*4 9.3*7
|
||||
Sutro Heights: 7.1: 0*6 | 0*4 14.0*7
|
||||
Pacific Heights: 18: 0*6 | 10.8*11
|
||||
Ashbury Heights: 3.7: 0*6 | 12.9*11
|
||||
Clarendon Heights: 6: 0*6 | 14.3*11
|
||||
Cow Hollow: 12: 0*6 |5*4 12.0*7
|
||||
Financial District: 9.4: 0*6 |5.8*4 9.7*7
|
||||
Golden Gate Heights: 17.8: 0*6 | 10.7*11
|
||||
Polk Gulch: 4: 0*6 | 18.2*11
|
||||
Presidio Heights: 6.5: 0*6 | 15.1*11
|
||||
Aquatic Park / Fort Mason: 6.4: 0*6 | 0*4 14.9*7
|
||||
Central Waterfront: 10.2: 0*6 | 0*4 6.7*7
|
||||
Northern Waterfront: 5.6: 0*6 | 0*4 16.4*7
|
||||
Dogpatch: 5.1: 0*6 | 0*4 12.4*7
|
||||
Fisherman's Wharf: 6.2: 0*6 | 0*4 14.2*7
|
||||
Balboa Terrace: 3.4: 0*6 | 18.2*11
|
||||
Cole Valley: 1.7: 0*6 | 19.6*11
|
||||
Forest Hill: 6.1: 0*6 | 15.7*11
|
||||
|
||||
:Far Away (When will I return?):
|
||||
Mokelumne Hill, Calaveras: 14.7: 28.9*6| 28.9*5
|
||||
MIT, Cambridge, MA: 9.6: 37.2*6 | 37.2*5
|
||||
Barangaroo, NSW: 1.7: 49.9*6 | 49.9*5
|
||||
Dawes Point, NSW: 1.8: 29.2*6 | 29.2*5
|
||||
Millers Point, NSW: 3.2: 38.2*6 | 38.2*5
|
||||
Stinson Beach, Marin: 11.2: 9.2*6 | 9.2*5
|
||||
Muir Beach, Marin: 4.6: 35.8*6 | 35.8*5
|
||||
Cambridge, MA: 180.8: 6.4*6 | 6.4*5
|
||||
Bodega Bay, Sonoma: 28.9: 18*6 | 18*5
|
||||
Guerneville, Sonoma: 22.7: 23.4*6 | 23.4*5
|
||||
Healdsburg, Sonoma: 53.7: 18.5*6 | 18.5*5
|
||||
:Farther Away:
|
||||
Mokelumne Hill, Calaveras: 14.7: 28.9*6| 28.9*11
|
||||
MIT, Cambridge, MA: 9.6: 37.2*6 | 37.2*11
|
||||
Barangaroo, NSW: 1.7: 49.9*6 | 49.9*11
|
||||
Dawes Point, NSW: 1.8: 29.2*6 | 29.2*11
|
||||
Millers Point, NSW: 3.2: 38.2*6 | 38.2*11
|
||||
Stinson Beach, Marin: 11.2: 9.2*6 | 9.2*11
|
||||
Muir Beach, Marin: 4.6: 35.8*6 | 35.8*11
|
||||
Corte Madera, Marin: 51: 0*6 | 0*4 13*7
|
||||
Mill Valley, Marin: 92.2: 0*6 | 0*4 5.1*7
|
||||
San Rafael, Marin: 260: 0*6 | 0*4 3.7*7
|
||||
Sausalito, Marin: 32.7: 0*6 | 0*4 13.1*7
|
||||
Cambridge, MA: 180.8: 6.4*6 | 6.4*11
|
||||
Bodega Bay, Sonoma: 28.9: 18*6 | 18*11
|
||||
Guerneville, Sonoma: 22.7: 23.4*6 | 23.4*11
|
||||
Healdsburg, Sonoma: 53.7: 18.5*6 | 18.5*11
|
||||
Half Moon Bay: 68: 0*6 | 8.9*11
|
||||
Emeryville: 28.1: 0*6 | 5.5*4 7.0*7
|
||||
Berkeley: 260.3: 5.0*3 7.0*3 | 7.0*11
|
||||
Albany: 42.7: 0*6 | 0*4 6.6*7
|
||||
|
||||
:California Counties:
|
||||
San Mateo: 3248: 20.1 21.2 22.9 23.4 24.57 25.53 | 26.43 30.0 31.27 32.24 32.61
|
||||
Santa Clara: 7396: 12.7 13.6 15.4 15.6 16.04 16.29 | 16.78 17.73 18.15 20.0 20.68
|
||||
Alameda: 5704: 3.3*3 3.94*3 | 4.73*2 7.06 7.14 7.33
|
||||
Marin: 2322: 6.7*6 | 6.7*4 7.98
|
||||
Napa: 1524: 5.1*6 | 5.1*5
|
||||
Sonoma: 4556: 5.1*6 | 5.1*5
|
||||
San Francisco: 1183: 4.5*6 | 4.5*4 5.46
|
||||
Santa Cruz: 2767: 2.3*6 | 2.3*5
|
||||
:California Bay Area Counties:
|
||||
Contra Costa: 6052: 1.0*6 | 1.0*3 1.41*8
|
||||
San Mateo: 3171: 20.1 21.2 22.9 23.4 24.57 25.53 | 26.43 30.0 31.27 32.24 32.54 32.98 33.48 33.56 34.51 34.7 35.05
|
||||
Santa Clara: 7445: 12.7 13.6 15.4 15.6 16.04 16.29 | 16.78 17.73 18.15 20.0 21.1 22.53 24.45 25.05 25.96 27.76 28.03
|
||||
Alameda: 5704: 3.3*3 3.94*3 | 4.73*2 7.06 7.14 7.34*6 9.86
|
||||
Marin: 2322: 6.7*6 | 6.7*4 7.98*7
|
||||
Napa: 1524: 5.1*6 | 5.1*11
|
||||
Sonoma: 4556: 5.1*6 | 5.1*11
|
||||
San Francisco: 1197: 4.5*6 | 4.5*4 5.47*4 6.4 6.51*2
|
||||
Santa Cruz: 2767: 2.3*6 | 2.3*11
|
||||
|
||||
:California:
|
||||
California: 365188: .712 .811 .846 .867 .8875 .8873 | .9054 .9624 1.0289 1.0758 1.1052
|
||||
California: 372710: .712 .811 .846 .867 .8875 .8873 | .9054 .9624 1.0289 1.0758 1.1278 1.1386 1.1812 1.1939 1.2007 1.2524 1.2987
|
||||
|
||||
:USA and Earth
|
||||
USA: 6317607: .048 .052 .055 .05589 .0571 .05749 | .05853 .06183 .06553 .06824 0.06993
|
||||
Earth: 38609276: .008 .0089 .0091 .00936 .009535 .009536| .009597 .010136 .010561 .010997 .011269
|
||||
USA: 6400536: .048 .052 .055 .05589 .0571 .05749 | .05853 .06183 .06553 .06824 0.07138 0.07200 0.07446 0.0752 0.07665 0.07904 0.08173
|
||||
Earth: 40818989: .008 .0089 .0091 .00936 .009535 .009536| .009597 .010136 .010561 .010997 .011349 0.011448 0.011839 0.011955 0.012024 0.0124113 0.012835
|
@ -1,5 +1,12 @@
|
||||
date year title hours miles feet
|
||||
##### 2019-2021: Mostly Eddington rides; most recent first
|
||||
Sun, 11/14 2021 Hayward 5:08:23 72.23 1,132
|
||||
Sat, 10/16 2021 San Jose 5:47:00 70.18 2,562
|
||||
Sat, 9/2 2021 San Jose 4:38:20 60.54 1,079
|
||||
Tue, 8/3 2021 San Jose Neighborhoods 4:41:27 62.35 1,825
|
||||
Sat, 8/7 2021 Emerald Hills etc. 5:45:30 73.38 3,015
|
||||
Sun, 7/11 2021 San Jose 4:05:49 65.10 1,086
|
||||
Sat, 6/12 2021 Up OLH, down Page Mill 5:48:48 71.42 3,525
|
||||
Sun, 5/16 2021 Palo Alto / SF / San Rafael 5:41:52 70.33 2,073
|
||||
Sat, 5/15 2021 San Rafael to Palo Alto over 20 bridges 5:23:44 68.30 871
|
||||
Sat, 4/24 2021 Alviso / Niles / Dumbarton 100km with Juliet 5:44:24 69.79 1,230
|
||||
@ -97,6 +104,7 @@ Sat, 7/9 2016 Santa Cruz 3:50:23 58.23 4,042
|
||||
Wed, 6/18 2014 Sierra to the Sea Day 4 4:57:53 57.64 5,561
|
||||
Tue, 7/7 2015 Palo Alto, CA 4:13:20 57.60 1,280
|
||||
Mon, 8/6 2018 Bike Ride Northwest Day 2 4:35:48 57.58 4,514
|
||||
Su, 1/26 2020 Los Gatos 4:24:58 57.05 1,086
|
||||
Fri, 6/20 2014 Sierra to the Sea Day 6 4:33:39 56.91 4,453
|
||||
Sat, 6/10 2017 Los Gatos / Creek Trails 3:50:24 56.28 1,365
|
||||
Sat, 3/4 2017 Lunch Ride 3:58:25 56.26 1,378
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
Loading…
Reference in New Issue
Block a user