In [1]:
import requests as rq
import pandas as pd
import json
from StringIO import StringIO
import matplotlib.pyplot as plt
In [2]:
token = 'e2ce375f9642d036ff9362e829d26c273a2522a4'
payload = {'access_token': token, 'per_page': '50'}
headers = {'content-type': 'application/json'}#, 'login': token}
# Segments
# Farnley Line Full - 2314277
r = rq.get('https://www.strava.com/api/v3/segments/2314277/leaderboard', headers=headers, params=payload)
In [60]:
data = json.loads(r.text)
#print json.dumps(data, sort_keys=True, indent=4)
data = data['entries']
df = pd.DataFrame(data)
df['speed'] = 3.6*df['distance']/df['elapsed_time']
print df.info()
print df.columns
In [76]:
fig = plt.figure(figsize=(16,8))
ax1 = fig.add_subplot(211)
plt.scatter(df['elapsed_time'], df['distance'], c=df['average_watts'],s=100)
plt.colorbar()
#ax1.set_xlim([0,51])
plt.title('Distance traveled v Ranking (Power output in colour)')
ax2 = fig.add_subplot(212)
plt.title('Distribution of segment times')
df['elapsed_time'].plot(kind='kde')
Out[76]:
In [69]:
df['distance_delta'] = df['distance']-df['distance'].mean()
df['true_time'] = df['elapsed_time'] - 3.6*df['distance_delta']/df['speed']
In [68]:
print df.head()
In [70]:
print df[df['rank']==18][['athlete_name','distance','elapsed_time','speed', 'true_time']]
In [78]:
fig = plt.figure(figsize=(16,8))
ax1 = fig.add_subplot(211)
plt.scatter(df['true_time'], df['distance'], c=df['rank'],s=100)
plt.colorbar()
ax1.set_xlabel('True Time')
plt.title('Distance traveled v Ranking (Power output in colour)')
Out[78]:
In [10]:
token = 'e2ce375f9642d036ff9362e829d26c273a2522a4'
payload = {'access_token': token, 'per_page': '100'}
headers = {'content-type': 'application/json'}#, 'login': token}
# Segments
# Farnley Line Full - 2314277
r = rq.get('https://www.strava.com/api/v3/segments/2314277/leaderboard', headers=headers, params=payload)
In [11]:
data = json.loads(r.text)
#print json.dumps(data, sort_keys=True, indent=4)
data = data['entries']
df = pd.DataFrame(data)
df['speed'] = 3.6*df['distance']/df['elapsed_time']
print df.info()
print df.columns
In [12]:
df['elapsed_time'].plot(kind='kde')
Out[12]:
In [22]:
full_df = []
token = 'e2ce375f9642d036ff9362e829d26c273a2522a4'
for x in xrange(1,16):
payload = {'access_token': token, 'per_page': '200', 'page':'{}'.format(x)}
headers = {'content-type': 'application/json'}
r = rq.get('https://www.strava.com/api/v3/segments/2521267/leaderboard', headers=headers, params=payload)
data = json.loads(r.text)
data = data['entries']
df = pd.DataFrame(data)
full_df.append(df)
In [23]:
full_df = pd.concat(full_df)
In [24]:
full_df.info
Out[24]:
In [25]:
full_df['elapsed_time'].plot(kind='kde')
Out[25]:
In [34]:
plt.hist(full_df['elapsed_time'].values, bins=30);
In [33]:
plt.hist(full_df['distance'].values, bins=20);
In [37]:
plt.scatter(full_df['elapsed_time'], full_df['average_watts'])
Out[37]:
In [39]:
full_df['start_date'].plot(kind='hist')
In [ ]: