Goal: To use Fibit API to extract information from Soccer
Query: GET http://api.fitbit.com/1/user/-/activities/distance/date/2013-11-02/1d/time/18:00/20:00.json
import json
import pandas as pd
soccer = """{
"activities-distance": [
{
"dateTime": "2013-11-02",
"value": "6.4906830000000015"
}
],
"activities-distance-intraday": {
"dataset": [
{
"time": "18:00:00",
"value": 0
},
{
"time": "18:01:00",
"value": 0
},
{
"time": "18:02:00",
"value": 0
},
{
"time": "18:03:00",
"value": 0
},
{
"time": "18:04:00",
"value": 0.025398
},
{
"time": "18:05:00",
"value": 0.050048999999999996
},
{
"time": "18:06:00",
"value": 0.029133
},
{
"time": "18:07:00",
"value": 0.047807999999999996
},
{
"time": "18:08:00",
"value": 0.058266
},
{
"time": "18:09:00",
"value": 0.08665199999999999
},
{
"time": "18:10:00",
"value": 0.09188099999999999
},
{
"time": "18:11:00",
"value": 0.070965
},
{
"time": "18:12:00",
"value": 0.077688
},
{
"time": "18:13:00",
"value": 0.088146
},
{
"time": "18:14:00",
"value": 0.07843499999999999
},
{
"time": "18:15:00",
"value": 0.08216999999999999
},
{
"time": "18:16:00",
"value": 0.070218
},
{
"time": "18:17:00",
"value": 0.05976
},
{
"time": "18:18:00",
"value": 0.041084999999999997
},
{
"time": "18:19:00",
"value": 0.020916
},
{
"time": "18:20:00",
"value": 0
},
{
"time": "18:21:00",
"value": 0
},
{
"time": "18:22:00",
"value": 0
},
{
"time": "18:23:00",
"value": 0.015687
},
{
"time": "18:24:00",
"value": 0.063495
},
{
"time": "18:25:00",
"value": 0.085158
},
{
"time": "18:26:00",
"value": 0.077688
},
{
"time": "18:27:00",
"value": 0.073206
},
{
"time": "18:28:00",
"value": 0.07395299999999999
},
{
"time": "18:29:00",
"value": 0.07843499999999999
},
{
"time": "18:30:00",
"value": 0.050796
},
{
"time": "18:31:00",
"value": 0.027639
},
{
"time": "18:32:00",
"value": 0
},
{
"time": "18:33:00",
"value": 0.044073
},
{
"time": "18:34:00",
"value": 0.070218
},
{
"time": "18:35:00",
"value": 0.076941
},
{
"time": "18:36:00",
"value": 0.085905
},
{
"time": "18:37:00",
"value": 0.07843499999999999
},
{
"time": "18:38:00",
"value": 0.08216999999999999
},
{
"time": "18:39:00",
"value": 0.0747
},
{
"time": "18:40:00",
"value": 0.06947099999999999
},
{
"time": "18:41:00",
"value": 0.076194
},
{
"time": "18:42:00",
"value": 0.076941
},
{
"time": "18:43:00",
"value": 0.07395299999999999
},
{
"time": "18:44:00",
"value": 0.081423
},
{
"time": "18:45:00",
"value": 0.079929
},
{
"time": "18:46:00",
"value": 0.084411
},
{
"time": "18:47:00",
"value": 0.076194
},
{
"time": "18:48:00",
"value": 0.083664
},
{
"time": "18:49:00",
"value": 0.077688
},
{
"time": "18:50:00",
"value": 0.080676
},
{
"time": "18:51:00",
"value": 0.07395299999999999
},
{
"time": "18:52:00",
"value": 0.081423
},
{
"time": "18:53:00",
"value": 0.083664
},
{
"time": "18:54:00",
"value": 0.08291699999999999
},
{
"time": "18:55:00",
"value": 0.07395299999999999
},
{
"time": "18:56:00",
"value": 0.07843499999999999
},
{
"time": "18:57:00",
"value": 0.06723
},
{
"time": "18:58:00",
"value": 0.08216999999999999
},
{
"time": "18:59:00",
"value": 0.07843499999999999
},
{
"time": "19:00:00",
"value": 0.077688
},
{
"time": "19:01:00",
"value": 0.070965
},
{
"time": "19:02:00",
"value": 0.068724
},
{
"time": "19:03:00",
"value": 0.079929
},
{
"time": "19:04:00",
"value": 0.073206
},
{
"time": "19:05:00",
"value": 0.020916
},
{
"time": "19:06:00",
"value": 0
},
{
"time": "19:07:00",
"value": 0
},
{
"time": "19:08:00",
"value": 0
},
{
"time": "19:09:00",
"value": 0.051543
},
{
"time": "19:10:00",
"value": 0.060507
},
{
"time": "19:11:00",
"value": 0.005229
},
{
"time": "19:12:00",
"value": 0
},
{
"time": "19:13:00",
"value": 0
},
{
"time": "19:14:00",
"value": 0.053784
},
{
"time": "19:15:00",
"value": 0.07395299999999999
},
{
"time": "19:16:00",
"value": 0.070965
},
{
"time": "19:17:00",
"value": 0.06498899999999999
},
{
"time": "19:18:00",
"value": 0.070965
},
{
"time": "19:19:00",
"value": 0.070218
},
{
"time": "19:20:00",
"value": 0.077688
},
{
"time": "19:21:00",
"value": 0.05976
},
{
"time": "19:22:00",
"value": 0.049302
},
{
"time": "19:23:00",
"value": 0.047807999999999996
},
{
"time": "19:24:00",
"value": 0.055278
},
{
"time": "19:25:00",
"value": 0.070218
},
{
"time": "19:26:00",
"value": 0.073206
},
{
"time": "19:27:00",
"value": 0.0747
},
{
"time": "19:28:00",
"value": 0.054530999999999996
},
{
"time": "19:29:00",
"value": 0.07395299999999999
},
{
"time": "19:30:00",
"value": 0.070965
},
{
"time": "19:31:00",
"value": 0.036603
},
{
"time": "19:32:00",
"value": 0
},
{
"time": "19:33:00",
"value": 0.005229
},
{
"time": "19:34:00",
"value": 0
},
{
"time": "19:35:00",
"value": 0
},
{
"time": "19:36:00",
"value": 0.015687
},
{
"time": "19:37:00",
"value": 0.047807999999999996
},
{
"time": "19:38:00",
"value": 0.061253999999999996
},
{
"time": "19:39:00",
"value": 0.0747
},
{
"time": "19:40:00",
"value": 0.073206
},
{
"time": "19:41:00",
"value": 0.077688
},
{
"time": "19:42:00",
"value": 0.076194
},
{
"time": "19:43:00",
"value": 0.073206
},
{
"time": "19:44:00",
"value": 0.055278
},
{
"time": "19:45:00",
"value": 0.0747
},
{
"time": "19:46:00",
"value": 0.072459
},
{
"time": "19:47:00",
"value": 0.081423
},
{
"time": "19:48:00",
"value": 0.0747
},
{
"time": "19:49:00",
"value": 0.079929
},
{
"time": "19:50:00",
"value": 0.079182
},
{
"time": "19:51:00",
"value": 0.071712
},
{
"time": "19:52:00",
"value": 0.04482
},
{
"time": "19:53:00",
"value": 0
},
{
"time": "19:54:00",
"value": 0
},
{
"time": "19:55:00",
"value": 0
},
{
"time": "19:56:00",
"value": 0.011205
},
{
"time": "19:57:00",
"value": 0
},
{
"time": "19:58:00",
"value": 0
},
{
"time": "19:59:00",
"value": 0.032868
},
{
"time": "20:00:00",
"value": 0.050048999999999996
}
],
"datasetInterval": 1
}
}"""
import json
import pandas as pd
# transform data into something usable
j = json.loads(soccer)
j_data = j['activities-distance-intraday']['dataset']
# jpd_data = {'time' : [pd.to_datetime(j["activities-distance"][0]['dateTime'] + " " + x['time']) for x in j_data], 'distance_in_m' : [x['value']*1000 for x in j_data]}
jpd_data = {'distance_in_m' : [x['value']*1000 for x in j_data],
'minute' : range(len(j_data))}
dataf = pd.DataFrame(jpd_data)
# view the first few rows of the dataframe
dataf.head()
distance_in_m | minute | |
---|---|---|
0 | 0.000 | 0 |
1 | 0.000 | 1 |
2 | 0.000 | 2 |
3 | 0.000 | 3 |
4 | 25.398 | 4 |
from ggplot import *
# plot the results
ggplot(aes(x='minute', y='distance_in_m', group=1), data=dataf) + \
geom_point(color='steelblue') + \
geom_line(color='lightblue', alpha=.6) +\
stat_smooth(method='loess', se=True) + \
scale_x_continuous(limits=[-0.5,120.5]) + \
scale_y_continuous(limits=[-0.5,100.5]) + \
xlab("Time in Minutes") + \
ylab("Distance in Metres")
<ggplot: (11029495)>