In [1]:
%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import requests
import json
import pprint
import datetime
from datetime import date

base_url = 'https://mikestebbinscgmtest.azurewebsites.net/api/v1/entries.json?'
extra_url='find[date][$lte]=1462905809000&count=1000'
url = base_url + extra_url
print (url)


https://mikestebbinscgmtest.azurewebsites.net/api/v1/entries.json?find[date][$lte]=1462905809000&count=1000

In [2]:
r = requests.get(url)

#print(r.status_code)
#print()
#print(r.headers['content-type'])
#print(r.encoding)
#print(r.text)
#print(pprint.pprint(r.json()))
#print()
print('-----------------------------------------------------------------------------------------------------------')


-----------------------------------------------------------------------------------------------------------

In [3]:
data=json.loads(r.text)

In [4]:
time_and_data=[]

In [5]:
data[1]


Out[5]:
{u'_id': u'57322aedec89f67d8aa23cf8',
 u'date': 1462905453000L,
 u'dateString': u'Tue May 10 11:37:33 PDT 2016',
 u'device': u'dexcom',
 u'direction': u'Flat',
 u'filtered': 185632,
 u'noise': 1,
 u'rssi': 180,
 u'sgv': 181,
 u'type': u'sgv',
 u'unfiltered': 183040}

In [6]:
for item in data:
    try:
        properdatetime = datetime.datetime.strptime(item['dateString'], "%a %b %d %H:%M:%S PDT %Y")
        sgv = item['sgv']
        time_and_data.append((properdatetime,sgv))
    except:
        print('missed one')


missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one
missed one

In [7]:
print(time_and_data[0:5])


[(datetime.datetime(2016, 5, 10, 11, 42, 33), 179), (datetime.datetime(2016, 5, 10, 11, 37, 33), 181), (datetime.datetime(2016, 5, 10, 11, 32, 33), 186), (datetime.datetime(2016, 5, 10, 11, 27, 33), 185), (datetime.datetime(2016, 5, 10, 11, 22, 33), 185)]

In [8]:
time_and_data[0][0]


Out[8]:
datetime.datetime(2016, 5, 10, 11, 42, 33)

In [9]:
datetime.datetime.date(time_and_data[0][0])


Out[9]:
datetime.date(2016, 5, 10)

In [10]:
dates_and_data=[]
for item in time_and_data:
    properdate = datetime.datetime.date(item[0])
    sgv = item[1]
    dates_and_data.append((properdate,sgv))

In [11]:
print(dates_and_data[0:5])


[(datetime.date(2016, 5, 10), 179), (datetime.date(2016, 5, 10), 181), (datetime.date(2016, 5, 10), 186), (datetime.date(2016, 5, 10), 185), (datetime.date(2016, 5, 10), 185)]

In [12]:
one_date_all_bgs={}
#lists of lists, each list is a unique date and a list of BG's

for item in dates_and_data:
    date = item[0]
    one_date_all_bgs.setdefault(date,[])
    one_date_all_bgs[date].append(item[1])

In [ ]:
one_date_all_bgs


Out[ ]:
{datetime.date(2016, 5, 6): [97,
  95,
  93,
  94,
  93,
  92,
  93,
  94,
  97,
  99,
  95,
  96,
  95,
  100,
  100],
 datetime.date(2016, 5, 7): [141,
  138,
  133,
  130,
  130,
  125,
  122,
  121,
  121,
  120,
  118,
  116,
  118,
  113,
  109,
  107,
  106,
  105,
  108,
  111,
  112,
  113,
  118,
  124,
  116,
  115,
  114,
  113,
  112,
  110,
  109,
  110,
  114,
  115,
  115,
  118,
  123,
  128,
  128,
  129,
  132,
  135,
  139,
  136,
  137,
  145,
  148,
  152,
  158,
  164,
  171,
  174,
  176,
  176,
  179,
  181,
  183,
  184,
  195,
  202,
  201,
  196,
  191,
  186,
  181,
  175,
  165,
  167,
  164,
  161,
  154,
  148,
  142,
  135,
  127,
  125,
  120,
  113,
  106,
  97,
  97,
  93,
  93,
  89,
  84,
  84,
  85,
  88,
  90,
  91,
  89,
  85,
  82,
  79,
  75,
  75,
  70,
  69,
  72,
  72,
  74,
  73,
  70,
  67,
  62,
  59,
  57,
  58,
  64,
  72,
  79,
  84,
  91,
  94,
  96,
  98,
  97,
  90,
  84,
  73,
  69,
  67,
  62,
  59,
  59,
  66,
  72,
  81,
  88,
  98,
  105,
  117,
  126,
  132,
  136,
  139,
  141,
  140,
  138,
  137,
  137,
  138,
  136,
  136,
  134,
  128,
  123,
  124,
  127,
  130,
  139,
  142,
  145,
  146,
  146,
  140,
  132,
  122,
  116,
  103,
  88,
  80,
  76,
  74,
  74,
  74,
  73,
  71,
  68,
  69,
  69,
  68,
  70,
  69,
  73,
  76,
  77,
  79,
  79,
  79,
  82,
  84,
  86,
  88,
  88,
  89,
  89,
  90,
  93,
  98,
  101,
  103,
  105,
  105,
  107,
  110,
  113,
  115,
  117,
  119,
  121,
  124,
  126,
  129,
  132,
  127,
  124,
  124,
  125,
  126,
  131,
  140,
  140,
  139,
  141,
  143,
  144,
  144,
  145,
  145,
  146,
  147,
  149,
  153,
  153,
  154,
  155,
  156,
  157,
  160,
  164,
  164,
  163,
  158,
  152,
  154,
  154,
  153,
  151,
  150,
  148,
  147,
  146,
  146,
  146,
  146,
  147,
  143,
  141,
  138,
  136,
  134,
  132,
  130,
  127,
  124,
  117,
  111,
  108,
  104,
  100,
  99,
  99,
  101,
  100,
  99,
  100,
  99,
  97,
  92,
  88,
  94,
  95,
  94,
  98,
  97],
 datetime.date(2016, 5, 8): [104,
  104,
  107,
  115,
  116,
  118,
  119,
  115,
  110,
  112,
  113,
  114,
  115,
  116,
  119,
  123,
  125,
  125,
  124,
  125,
  122,
  118,
  115,
  112,
  109,
  106,
  105,
  104,
  105,
  105,
  105,
  103,
  103,
  107,
  114,
  119,
  121,
  126,
  130,
  131,
  137,
  141,
  146,
  152,
  158,
  165,
  173,
  189,
  198,
  200,
  201,
  207,
  210,
  213,
  215,
  212,
  210,
  208,
  206,
  204,
  202,
  199,
  201,
  201,
  202,
  203,
  203,
  199,
  195,
  193,
  189,
  186,
  184,
  178,
  173,
  169,
  166,
  163,
  163,
  165,
  168,
  164,
  161,
  158,
  151,
  149,
  140,
  134,
  130,
  129,
  126,
  123,
  121,
  119,
  118,
  115,
  112,
  113,
  110,
  108,
  107,
  105,
  107,
  106,
  108,
  108,
  109,
  109,
  115,
  114,
  113,
  109,
  103,
  102,
  102,
  101,
  102,
  99,
  100,
  103,
  103,
  102,
  102,
  103,
  104,
  106,
  107,
  107,
  107,
  104,
  103,
  102,
  101,
  100,
  98,
  101,
  102,
  101,
  99,
  98,
  96,
  97,
  99,
  99,
  97,
  95,
  94,
  95,
  96,
  99,
  101,
  104,
  103,
  100,
  102,
  106,
  112,
  119,
  120,
  126,
  124,
  130,
  138,
  145,
  151,
  155,
  160,
  167,
  167,
  167,
  166,
  163,
  159,
  161,
  162,
  164,
  159,
  150,
  136,
  128,
  122,
  125,
  121,
  121,
  118,
  116,
  114,
  111,
  109,
  108,
  106,
  101,
  83,
  83,
  84,
  84,
  83,
  82,
  84,
  84,
  85,
  86,
  87,
  89,
  90,
  91,
  90,
  90,
  91,
  91,
  91,
  94,
  93,
  93,
  94,
  95,
  96,
  97,
  99,
  101,
  103,
  104,
  105,
  103,
  106,
  110,
  114,
  115,
  117,
  117,
  111,
  110,
  113,
  117,
  119,
  120,
  122,
  124,
  125,
  126,
  126,
  127,
  127,
  128,
  129,
  130,
  133,
  139,
  144,
  146,
  148,
  151,
  152,
  158,
  162,
  164,
  166,
  168,
  169,
  171,
  172,
  174,
  176,
  179,
  179,
  180,
  182,
  183,
  184,
  185,
  185,
  185,
  185,
  185,
  180,
  177,
  173,
  171,
  168,
  163,
  161,
  158,
  153,
  149,
  144,
  143],
 datetime.date(2016, 5, 9): [229,
  228,
  226,
  225,
  226,
  222,
  219,
  218,
  211,
  212,
  234,
  235,
  234,
  233,
  230,
  231,
  229,
  228,
  224,
  214,
  208,
  204,
  199,
  190,
  181,
  178,
  175,
  172,
  165,
  157,
  151,
  150,
  132,
  112,
  106,
  101,
  98,
  96,
  89,
  92,
  92,
  92,
  96,
  93,
  93,
  92,
  87,
  83,
  82,
  79,
  75,
  72,
  71,
  73,
  77,
  80,
  85,
  90,
  93,
  96,
  98,
  98,
  98,
  97,
  97,
  98,
  96,
  97,
  101,
  106,
  113,
  119,
  128,
  139,
  144,
  149,
  154,
  157,
  162,
  166,
  171,
  176,
  180,
  185,
  188,
  191,
  193,
  193,
  191,
  189,
  182,
  175,
  166,
  164,
  162,
  160,
  156,
  155,
  154,
  150,
  145,
  138,
  132,
  127,
  121,
  116,
  112,
  108,
  106,
  105,
  104,
  102,
  100,
  99,
  98,
  98,
  99,
  102,
  105,
  106,
  103,
  99,
  95,
  92,
  89,
  85,
  82,
  79,
  77,
  76,
  75,
  77,
  79,
  82,
  87,
  92,
  96,
  100,
  100,
  99,
  100,
  103,
  110,
  118,
  141,
  145,
  150,
  157,
  162,
  169,
  173,
  179,
  185,
  190,
  195,
  199,
  203,
  203,
  203,
  204,
  206,
  207,
  207,
  207,
  206,
  205,
  205,
  206,
  204,
  201,
  198,
  195,
  194,
  195,
  191,
  178,
  112,
  107,
  104,
  102,
  102,
  103,
  108,
  114,
  122,
  128,
  134,
  141,
  141,
  136,
  151,
  165,
  188,
  191,
  197,
  199,
  202,
  205,
  207,
  209,
  211,
  213,
  216,
  218,
  221,
  220,
  213,
  218,
  229,
  233,
  227,
  228,
  231,
  231,
  237,
  243,
  243,
  244,
  246,
  247,
  248,
  247,
  247,
  248,
  253,
  254,
  254,
  234,
  231,
  235,
  241,
  241,
  243,
  244,
  237,
  228,
  222,
  220,
  217,
  213,
  208,
  202,
  197,
  192,
  189,
  185,
  181,
  179,
  176,
  172,
  169,
  166,
  164,
  157,
  152,
  148,
  140,
  133,
  125,
  121,
  120,
  121,
  117,
  112,
  110,
  107,
  104,
  103,
  104,
  104],
 datetime.date(2016, 5, 10): [179,
  181,
  186,
  185,
  185,
  188,
  191,
  193,
  196,
  198,
  201,
  198,
  200,
  203,
  208,
  209,
  212,
  216,
  214,
  216,
  219,
  223,
  225,
  227,
  231,
  235,
  237,
  239,
  240,
  244,
  250,
  254,
  257,
  258,
  252,
  242,
  229,
  213,
  195,
  181,
  166,
  156,
  140,
  135,
  124,
  117,
  116,
  115,
  112,
  104,
  94,
  88,
  82,
  74,
  72,
  67,
  69,
  73,
  79,
  80,
  81,
  80,
  81,
  83,
  84,
  84,
  84,
  85,
  88,
  90,
  91,
  91,
  93,
  97,
  99,
  102,
  104,
  107,
  109,
  112,
  114,
  117,
  119,
  122,
  126,
  130,
  133,
  136,
  145,
  153,
  153,
  156,
  163,
  170,
  175,
  181,
  187,
  192,
  195,
  199,
  203,
  203,
  206,
  206,
  206,
  207,
  206,
  205,
  207,
  211,
  215,
  221,
  228,
  235,
  242,
  245,
  241,
  238,
  237,
  236,
  234,
  234,
  233,
  231,
  226,
  224,
  223,
  226,
  231,
  237,
  238,
  235,
  236,
  236,
  234,
  233,
  231]}

In [ ]:
for key in one_date_all_bgs:
    print (one_date_all_bgs[key])
    plt.figure()
    plt.boxplot(np.asarray(one_date_all_bgs[key]))


[104, 104, 107, 115, 116, 118, 119, 115, 110, 112, 113, 114, 115, 116, 119, 123, 125, 125, 124, 125, 122, 118, 115, 112, 109, 106, 105, 104, 105, 105, 105, 103, 103, 107, 114, 119, 121, 126, 130, 131, 137, 141, 146, 152, 158, 165, 173, 189, 198, 200, 201, 207, 210, 213, 215, 212, 210, 208, 206, 204, 202, 199, 201, 201, 202, 203, 203, 199, 195, 193, 189, 186, 184, 178, 173, 169, 166, 163, 163, 165, 168, 164, 161, 158, 151, 149, 140, 134, 130, 129, 126, 123, 121, 119, 118, 115, 112, 113, 110, 108, 107, 105, 107, 106, 108, 108, 109, 109, 115, 114, 113, 109, 103, 102, 102, 101, 102, 99, 100, 103, 103, 102, 102, 103, 104, 106, 107, 107, 107, 104, 103, 102, 101, 100, 98, 101, 102, 101, 99, 98, 96, 97, 99, 99, 97, 95, 94, 95, 96, 99, 101, 104, 103, 100, 102, 106, 112, 119, 120, 126, 124, 130, 138, 145, 151, 155, 160, 167, 167, 167, 166, 163, 159, 161, 162, 164, 159, 150, 136, 128, 122, 125, 121, 121, 118, 116, 114, 111, 109, 108, 106, 101, 83, 83, 84, 84, 83, 82, 84, 84, 85, 86, 87, 89, 90, 91, 90, 90, 91, 91, 91, 94, 93, 93, 94, 95, 96, 97, 99, 101, 103, 104, 105, 103, 106, 110, 114, 115, 117, 117, 111, 110, 113, 117, 119, 120, 122, 124, 125, 126, 126, 127, 127, 128, 129, 130, 133, 139, 144, 146, 148, 151, 152, 158, 162, 164, 166, 168, 169, 171, 172, 174, 176, 179, 179, 180, 182, 183, 184, 185, 185, 185, 185, 185, 180, 177, 173, 171, 168, 163, 161, 158, 153, 149, 144, 143]
[141, 138, 133, 130, 130, 125, 122, 121, 121, 120, 118, 116, 118, 113, 109, 107, 106, 105, 108, 111, 112, 113, 118, 124, 116, 115, 114, 113, 112, 110, 109, 110, 114, 115, 115, 118, 123, 128, 128, 129, 132, 135, 139, 136, 137, 145, 148, 152, 158, 164, 171, 174, 176, 176, 179, 181, 183, 184, 195, 202, 201, 196, 191, 186, 181, 175, 165, 167, 164, 161, 154, 148, 142, 135, 127, 125, 120, 113, 106, 97, 97, 93, 93, 89, 84, 84, 85, 88, 90, 91, 89, 85, 82, 79, 75, 75, 70, 69, 72, 72, 74, 73, 70, 67, 62, 59, 57, 58, 64, 72, 79, 84, 91, 94, 96, 98, 97, 90, 84, 73, 69, 67, 62, 59, 59, 66, 72, 81, 88, 98, 105, 117, 126, 132, 136, 139, 141, 140, 138, 137, 137, 138, 136, 136, 134, 128, 123, 124, 127, 130, 139, 142, 145, 146, 146, 140, 132, 122, 116, 103, 88, 80, 76, 74, 74, 74, 73, 71, 68, 69, 69, 68, 70, 69, 73, 76, 77, 79, 79, 79, 82, 84, 86, 88, 88, 89, 89, 90, 93, 98, 101, 103, 105, 105, 107, 110, 113, 115, 117, 119, 121, 124, 126, 129, 132, 127, 124, 124, 125, 126, 131, 140, 140, 139, 141, 143, 144, 144, 145, 145, 146, 147, 149, 153, 153, 154, 155, 156, 157, 160, 164, 164, 163, 158, 152, 154, 154, 153, 151, 150, 148, 147, 146, 146, 146, 146, 147, 143, 141, 138, 136, 134, 132, 130, 127, 124, 117, 111, 108, 104, 100, 99, 99, 101, 100, 99, 100, 99, 97, 92, 88, 94, 95, 94, 98, 97]
[179, 181, 186, 185, 185, 188, 191, 193, 196, 198, 201, 198, 200, 203, 208, 209, 212, 216, 214, 216, 219, 223, 225, 227, 231, 235, 237, 239, 240, 244, 250, 254, 257, 258, 252, 242, 229, 213, 195, 181, 166, 156, 140, 135, 124, 117, 116, 115, 112, 104, 94, 88, 82, 74, 72, 67, 69, 73, 79, 80, 81, 80, 81, 83, 84, 84, 84, 85, 88, 90, 91, 91, 93, 97, 99, 102, 104, 107, 109, 112, 114, 117, 119, 122, 126, 130, 133, 136, 145, 153, 153, 156, 163, 170, 175, 181, 187, 192, 195, 199, 203, 203, 206, 206, 206, 207, 206, 205, 207, 211, 215, 221, 228, 235, 242, 245, 241, 238, 237, 236, 234, 234, 233, 231, 226, 224, 223, 226, 231, 237, 238, 235, 236, 236, 234, 233, 231]
[229, 228, 226, 225, 226, 222, 219, 218, 211, 212, 234, 235, 234, 233, 230, 231, 229, 228, 224, 214, 208, 204, 199, 190, 181, 178, 175, 172, 165, 157, 151, 150, 132, 112, 106, 101, 98, 96, 89, 92, 92, 92, 96, 93, 93, 92, 87, 83, 82, 79, 75, 72, 71, 73, 77, 80, 85, 90, 93, 96, 98, 98, 98, 97, 97, 98, 96, 97, 101, 106, 113, 119, 128, 139, 144, 149, 154, 157, 162, 166, 171, 176, 180, 185, 188, 191, 193, 193, 191, 189, 182, 175, 166, 164, 162, 160, 156, 155, 154, 150, 145, 138, 132, 127, 121, 116, 112, 108, 106, 105, 104, 102, 100, 99, 98, 98, 99, 102, 105, 106, 103, 99, 95, 92, 89, 85, 82, 79, 77, 76, 75, 77, 79, 82, 87, 92, 96, 100, 100, 99, 100, 103, 110, 118, 141, 145, 150, 157, 162, 169, 173, 179, 185, 190, 195, 199, 203, 203, 203, 204, 206, 207, 207, 207, 206, 205, 205, 206, 204, 201, 198, 195, 194, 195, 191, 178, 112, 107, 104, 102, 102, 103, 108, 114, 122, 128, 134, 141, 141, 136, 151, 165, 188, 191, 197, 199, 202, 205, 207, 209, 211, 213, 216, 218, 221, 220, 213, 218, 229, 233, 227, 228, 231, 231, 237, 243, 243, 244, 246, 247, 248, 247, 247, 248, 253, 254, 254, 234, 231, 235, 241, 241, 243, 244, 237, 228, 222, 220, 217, 213, 208, 202, 197, 192, 189, 185, 181, 179, 176, 172, 169, 166, 164, 157, 152, 148, 140, 133, 125, 121, 120, 121, 117, 112, 110, 107, 104, 103, 104, 104]
[97, 95, 93, 94, 93, 92, 93, 94, 97, 99, 95, 96, 95, 100, 100]

In [ ]:
# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low), 0)

# basic plot
plt.boxplot(data)

In [ ]: