{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import requests\n",
    "import json, csv, re\n",
    "from bs4 import BeautifulSoup\n",
    "from sqlalchemy import create_engine\n",
    "engine = create_engine('postgresql://tdobbins:@localhost:5432/sports1')\n",
    "enginepi = create_engine('postgres://pi@192.168.1.80:5432/nba')\n",
    "# engine = create_engine('postgres://postgres@107.170.76.179:5432/sports')\n",
    "from datetime import date, timedelta, datetime\n",
    "import time\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pandas.stats.api import ols\n",
    "import statsmodels.api as sm\n",
    "import random\n",
    "pd.options.display.max_columns = None\n",
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt \n",
    "\n",
    "# cdf = cdf.convert_objects(convert_numeric=True) # covert ncaa strings to numerics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df = pd.read_excel('/Users/tdobbins/nba/ncaaMASTER.xlsx', sheetname='Master')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df = df[[u'Conference', u'Date', u'Team', u'OPP', u'Points', u'Field Goals', u'Field Goals ATT', u'Free Throws', u'Free Throws ATT', u'3-pointers', u'3-pointers ATT', u'Off. Rebounds', u'Def. Rebounds', u'Total Rebounds', u'Assists', u'Blocks', u'Fouls', u'Steals', u'Turnovers', u'Home/Away.1']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df.columns = ['conference', 'dateof', 'team', 'opp', 'points', 'fg', 'fgatt', 'ft', 'ftatt', 'fg3', 'fg3att', 'offrebounds', 'defrebounds', 'totalrebounds', 'assists', 'blocks', 'fouls', 'steals', 'turnovers', 'side']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df = df.head(11404)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df.to_sql('nbateamstats1516', con=enginepi, if_exists='append', index=False, chunksize=500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# df.to_sql('nbateamstats1516', con=enginepi, if_exists='replace', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sql = \"\"\"select distinct '' as blank, '' as blank1,  h.dateof, h.team, h.opp, h.points, h.fg, h.fgatt, h.ft, h.ftatt, \n",
    "            h.fg3, h.fg3att, h.offrebounds, h.defrebounds, h.totalrebounds,\n",
    "            h.assists, h.blocks, h.fouls, h.steals, h.turnovers,\n",
    "            a.points as opoints, a.fg as ofg, a.fgatt as ofgatt, a.ft as oft, a.ftatt as oftatt, \n",
    "            a.fg3 as ofg3, a.fg3att as ofg3att, a.offrebounds as ooffrebounds, a.defrebounds as odefrebounds,\n",
    "            a.totalrebounds as ototalrebounds, a.assists as oassists, a.blocks as oblocks, a.fouls as ofouls,\n",
    "            a.steals as osteals, a.turnovers as oturnovers, h.side\n",
    "            --(h.fgatt + h.turnovers + (0.4*h.ftatt) - h.offrebounds) as poss_calc,\n",
    "            --(a.fgatt + a.turnovers + (0.4*a.ftatt) - a.offrebounds) as oposs_calc\n",
    "        from nbateamstats1516 h\n",
    "        join nbateamstats1516 a \n",
    "            on h.opp = a.team \n",
    "            and h.team = a.opp\n",
    "            and (h.team <> 'EAS' and a.team <> 'EAS')\n",
    "            and (h.opp <> 'WES' and a.opp <> 'WES')\n",
    "        where h.dateof = a.dateof\n",
    "            --and h.dateof >= '2016-03-14'\n",
    "        order by h.dateof asc\"\"\"\n",
    "\n",
    "df = pd.read_sql_query(sql, enginepi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# df['dateof'].strftime('%Y-%m-%d')\n",
    "df['dateof'] = df['dateof'].apply(lambda x: x.strftime('%Y-%m-%d'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(16, 13)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df[(df.dateof<'2015-12-25')&(df.team=='LAC')&(df.points>df.opoints)]), len(df[(df.dateof<'2015-12-25')&(df.team=='LAC')&(df.points<df.opoints)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(28, 14)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df[(df.dateof>'2015-12-25')&(df.team=='LAC')&(df.points>df.opoints)]), len(df[(df.dateof>'2015-12-25')&(df.team=='LAC')&(df.points<df.opoints)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>blank</th>\n",
       "      <th>blank1</th>\n",
       "      <th>dateof</th>\n",
       "      <th>team</th>\n",
       "      <th>opp</th>\n",
       "      <th>points</th>\n",
       "      <th>fg</th>\n",
       "      <th>fgatt</th>\n",
       "      <th>ft</th>\n",
       "      <th>ftatt</th>\n",
       "      <th>fg3</th>\n",
       "      <th>fg3att</th>\n",
       "      <th>offrebounds</th>\n",
       "      <th>defrebounds</th>\n",
       "      <th>totalrebounds</th>\n",
       "      <th>assists</th>\n",
       "      <th>blocks</th>\n",
       "      <th>fouls</th>\n",
       "      <th>steals</th>\n",
       "      <th>turnovers</th>\n",
       "      <th>opoints</th>\n",
       "      <th>ofg</th>\n",
       "      <th>ofgatt</th>\n",
       "      <th>oft</th>\n",
       "      <th>oftatt</th>\n",
       "      <th>ofg3</th>\n",
       "      <th>ofg3att</th>\n",
       "      <th>ooffrebounds</th>\n",
       "      <th>odefrebounds</th>\n",
       "      <th>ototalrebounds</th>\n",
       "      <th>oassists</th>\n",
       "      <th>oblocks</th>\n",
       "      <th>ofouls</th>\n",
       "      <th>osteals</th>\n",
       "      <th>oturnovers</th>\n",
       "      <th>side</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>ATL</td>\n",
       "      <td>DET</td>\n",
       "      <td>94</td>\n",
       "      <td>37</td>\n",
       "      <td>82</td>\n",
       "      <td>12</td>\n",
       "      <td>15</td>\n",
       "      <td>8</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>33</td>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>15</td>\n",
       "      <td>106</td>\n",
       "      <td>37</td>\n",
       "      <td>96</td>\n",
       "      <td>20</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>29</td>\n",
       "      <td>23</td>\n",
       "      <td>36</td>\n",
       "      <td>59</td>\n",
       "      <td>23</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>CHI</td>\n",
       "      <td>CLE</td>\n",
       "      <td>97</td>\n",
       "      <td>37</td>\n",
       "      <td>87</td>\n",
       "      <td>16</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>40</td>\n",
       "      <td>47</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>13</td>\n",
       "      <td>95</td>\n",
       "      <td>38</td>\n",
       "      <td>94</td>\n",
       "      <td>10</td>\n",
       "      <td>17</td>\n",
       "      <td>9</td>\n",
       "      <td>29</td>\n",
       "      <td>11</td>\n",
       "      <td>39</td>\n",
       "      <td>50</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>5</td>\n",
       "      <td>11</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>CLE</td>\n",
       "      <td>CHI</td>\n",
       "      <td>95</td>\n",
       "      <td>38</td>\n",
       "      <td>94</td>\n",
       "      <td>10</td>\n",
       "      <td>17</td>\n",
       "      <td>9</td>\n",
       "      <td>29</td>\n",
       "      <td>11</td>\n",
       "      <td>39</td>\n",
       "      <td>50</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>5</td>\n",
       "      <td>11</td>\n",
       "      <td>97</td>\n",
       "      <td>37</td>\n",
       "      <td>87</td>\n",
       "      <td>16</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>40</td>\n",
       "      <td>47</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>13</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>DET</td>\n",
       "      <td>ATL</td>\n",
       "      <td>106</td>\n",
       "      <td>37</td>\n",
       "      <td>96</td>\n",
       "      <td>20</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>29</td>\n",
       "      <td>23</td>\n",
       "      <td>36</td>\n",
       "      <td>59</td>\n",
       "      <td>23</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>94</td>\n",
       "      <td>37</td>\n",
       "      <td>82</td>\n",
       "      <td>12</td>\n",
       "      <td>15</td>\n",
       "      <td>8</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>33</td>\n",
       "      <td>40</td>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>15</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>GS</td>\n",
       "      <td>NO</td>\n",
       "      <td>111</td>\n",
       "      <td>41</td>\n",
       "      <td>96</td>\n",
       "      <td>20</td>\n",
       "      <td>22</td>\n",
       "      <td>9</td>\n",
       "      <td>30</td>\n",
       "      <td>21</td>\n",
       "      <td>35</td>\n",
       "      <td>56</td>\n",
       "      <td>29</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>8</td>\n",
       "      <td>20</td>\n",
       "      <td>95</td>\n",
       "      <td>35</td>\n",
       "      <td>83</td>\n",
       "      <td>19</td>\n",
       "      <td>27</td>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>25</td>\n",
       "      <td>33</td>\n",
       "      <td>21</td>\n",
       "      <td>3</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>19</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-27</td>\n",
       "      <td>NO</td>\n",
       "      <td>GS</td>\n",
       "      <td>95</td>\n",
       "      <td>35</td>\n",
       "      <td>83</td>\n",
       "      <td>19</td>\n",
       "      <td>27</td>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>25</td>\n",
       "      <td>33</td>\n",
       "      <td>21</td>\n",
       "      <td>3</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>19</td>\n",
       "      <td>111</td>\n",
       "      <td>41</td>\n",
       "      <td>96</td>\n",
       "      <td>20</td>\n",
       "      <td>22</td>\n",
       "      <td>9</td>\n",
       "      <td>30</td>\n",
       "      <td>21</td>\n",
       "      <td>35</td>\n",
       "      <td>56</td>\n",
       "      <td>29</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>8</td>\n",
       "      <td>20</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>BKN</td>\n",
       "      <td>CHI</td>\n",
       "      <td>100</td>\n",
       "      <td>39</td>\n",
       "      <td>93</td>\n",
       "      <td>22</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>16</td>\n",
       "      <td>29</td>\n",
       "      <td>45</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>115</td>\n",
       "      <td>42</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "      <td>20</td>\n",
       "      <td>14</td>\n",
       "      <td>28</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>24</td>\n",
       "      <td>9</td>\n",
       "      <td>20</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>BOS</td>\n",
       "      <td>PHI</td>\n",
       "      <td>112</td>\n",
       "      <td>39</td>\n",
       "      <td>85</td>\n",
       "      <td>26</td>\n",
       "      <td>27</td>\n",
       "      <td>8</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>31</td>\n",
       "      <td>41</td>\n",
       "      <td>31</td>\n",
       "      <td>7</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>17</td>\n",
       "      <td>95</td>\n",
       "      <td>34</td>\n",
       "      <td>84</td>\n",
       "      <td>20</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>22</td>\n",
       "      <td>15</td>\n",
       "      <td>32</td>\n",
       "      <td>47</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>22</td>\n",
       "      <td>11</td>\n",
       "      <td>24</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>CHA</td>\n",
       "      <td>MIA</td>\n",
       "      <td>94</td>\n",
       "      <td>33</td>\n",
       "      <td>84</td>\n",
       "      <td>22</td>\n",
       "      <td>29</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>43</td>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>104</td>\n",
       "      <td>36</td>\n",
       "      <td>73</td>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>12</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>41</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>CHI</td>\n",
       "      <td>BKN</td>\n",
       "      <td>115</td>\n",
       "      <td>42</td>\n",
       "      <td>78</td>\n",
       "      <td>17</td>\n",
       "      <td>20</td>\n",
       "      <td>14</td>\n",
       "      <td>28</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>24</td>\n",
       "      <td>9</td>\n",
       "      <td>20</td>\n",
       "      <td>100</td>\n",
       "      <td>39</td>\n",
       "      <td>93</td>\n",
       "      <td>22</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>16</td>\n",
       "      <td>29</td>\n",
       "      <td>45</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>CLE</td>\n",
       "      <td>MEM</td>\n",
       "      <td>106</td>\n",
       "      <td>41</td>\n",
       "      <td>84</td>\n",
       "      <td>11</td>\n",
       "      <td>17</td>\n",
       "      <td>13</td>\n",
       "      <td>29</td>\n",
       "      <td>12</td>\n",
       "      <td>42</td>\n",
       "      <td>54</td>\n",
       "      <td>29</td>\n",
       "      <td>2</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>76</td>\n",
       "      <td>29</td>\n",
       "      <td>82</td>\n",
       "      <td>16</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>29</td>\n",
       "      <td>40</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>DAL</td>\n",
       "      <td>PHO</td>\n",
       "      <td>111</td>\n",
       "      <td>40</td>\n",
       "      <td>85</td>\n",
       "      <td>21</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>21</td>\n",
       "      <td>6</td>\n",
       "      <td>42</td>\n",
       "      <td>48</td>\n",
       "      <td>24</td>\n",
       "      <td>3</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>95</td>\n",
       "      <td>34</td>\n",
       "      <td>87</td>\n",
       "      <td>21</td>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>13</td>\n",
       "      <td>40</td>\n",
       "      <td>53</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>30</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>DEN</td>\n",
       "      <td>HOU</td>\n",
       "      <td>105</td>\n",
       "      <td>40</td>\n",
       "      <td>79</td>\n",
       "      <td>12</td>\n",
       "      <td>18</td>\n",
       "      <td>13</td>\n",
       "      <td>27</td>\n",
       "      <td>9</td>\n",
       "      <td>40</td>\n",
       "      <td>49</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>21</td>\n",
       "      <td>85</td>\n",
       "      <td>30</td>\n",
       "      <td>87</td>\n",
       "      <td>17</td>\n",
       "      <td>26</td>\n",
       "      <td>8</td>\n",
       "      <td>35</td>\n",
       "      <td>15</td>\n",
       "      <td>29</td>\n",
       "      <td>44</td>\n",
       "      <td>17</td>\n",
       "      <td>8</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>DET</td>\n",
       "      <td>UTA</td>\n",
       "      <td>92</td>\n",
       "      <td>30</td>\n",
       "      <td>74</td>\n",
       "      <td>25</td>\n",
       "      <td>34</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>8</td>\n",
       "      <td>35</td>\n",
       "      <td>43</td>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>87</td>\n",
       "      <td>35</td>\n",
       "      <td>75</td>\n",
       "      <td>15</td>\n",
       "      <td>21</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>4</td>\n",
       "      <td>34</td>\n",
       "      <td>38</td>\n",
       "      <td>15</td>\n",
       "      <td>5</td>\n",
       "      <td>25</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>HOU</td>\n",
       "      <td>DEN</td>\n",
       "      <td>85</td>\n",
       "      <td>30</td>\n",
       "      <td>87</td>\n",
       "      <td>17</td>\n",
       "      <td>26</td>\n",
       "      <td>8</td>\n",
       "      <td>35</td>\n",
       "      <td>15</td>\n",
       "      <td>29</td>\n",
       "      <td>44</td>\n",
       "      <td>17</td>\n",
       "      <td>8</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>105</td>\n",
       "      <td>40</td>\n",
       "      <td>79</td>\n",
       "      <td>12</td>\n",
       "      <td>18</td>\n",
       "      <td>13</td>\n",
       "      <td>27</td>\n",
       "      <td>9</td>\n",
       "      <td>40</td>\n",
       "      <td>49</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>21</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>IND</td>\n",
       "      <td>TOR</td>\n",
       "      <td>99</td>\n",
       "      <td>32</td>\n",
       "      <td>86</td>\n",
       "      <td>26</td>\n",
       "      <td>31</td>\n",
       "      <td>9</td>\n",
       "      <td>23</td>\n",
       "      <td>8</td>\n",
       "      <td>32</td>\n",
       "      <td>40</td>\n",
       "      <td>23</td>\n",
       "      <td>3</td>\n",
       "      <td>30</td>\n",
       "      <td>14</td>\n",
       "      <td>13</td>\n",
       "      <td>106</td>\n",
       "      <td>36</td>\n",
       "      <td>80</td>\n",
       "      <td>27</td>\n",
       "      <td>39</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>9</td>\n",
       "      <td>41</td>\n",
       "      <td>50</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "      <td>24</td>\n",
       "      <td>8</td>\n",
       "      <td>21</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>LAC</td>\n",
       "      <td>SAC</td>\n",
       "      <td>111</td>\n",
       "      <td>42</td>\n",
       "      <td>80</td>\n",
       "      <td>21</td>\n",
       "      <td>31</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>36</td>\n",
       "      <td>42</td>\n",
       "      <td>20</td>\n",
       "      <td>9</td>\n",
       "      <td>19</td>\n",
       "      <td>8</td>\n",
       "      <td>15</td>\n",
       "      <td>104</td>\n",
       "      <td>41</td>\n",
       "      <td>94</td>\n",
       "      <td>11</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>24</td>\n",
       "      <td>12</td>\n",
       "      <td>37</td>\n",
       "      <td>49</td>\n",
       "      <td>24</td>\n",
       "      <td>3</td>\n",
       "      <td>27</td>\n",
       "      <td>8</td>\n",
       "      <td>18</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>LAL</td>\n",
       "      <td>MIN</td>\n",
       "      <td>111</td>\n",
       "      <td>35</td>\n",
       "      <td>93</td>\n",
       "      <td>32</td>\n",
       "      <td>35</td>\n",
       "      <td>9</td>\n",
       "      <td>35</td>\n",
       "      <td>15</td>\n",
       "      <td>36</td>\n",
       "      <td>51</td>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>29</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>112</td>\n",
       "      <td>38</td>\n",
       "      <td>83</td>\n",
       "      <td>31</td>\n",
       "      <td>37</td>\n",
       "      <td>5</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>33</td>\n",
       "      <td>39</td>\n",
       "      <td>24</td>\n",
       "      <td>4</td>\n",
       "      <td>26</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>MEM</td>\n",
       "      <td>CLE</td>\n",
       "      <td>76</td>\n",
       "      <td>29</td>\n",
       "      <td>82</td>\n",
       "      <td>16</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>29</td>\n",
       "      <td>40</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>106</td>\n",
       "      <td>41</td>\n",
       "      <td>84</td>\n",
       "      <td>11</td>\n",
       "      <td>17</td>\n",
       "      <td>13</td>\n",
       "      <td>29</td>\n",
       "      <td>12</td>\n",
       "      <td>42</td>\n",
       "      <td>54</td>\n",
       "      <td>29</td>\n",
       "      <td>2</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>MIA</td>\n",
       "      <td>CHA</td>\n",
       "      <td>104</td>\n",
       "      <td>36</td>\n",
       "      <td>73</td>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>12</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>41</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>94</td>\n",
       "      <td>33</td>\n",
       "      <td>84</td>\n",
       "      <td>22</td>\n",
       "      <td>29</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>43</td>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>MIL</td>\n",
       "      <td>NY</td>\n",
       "      <td>97</td>\n",
       "      <td>30</td>\n",
       "      <td>86</td>\n",
       "      <td>28</td>\n",
       "      <td>31</td>\n",
       "      <td>9</td>\n",
       "      <td>18</td>\n",
       "      <td>18</td>\n",
       "      <td>29</td>\n",
       "      <td>47</td>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>122</td>\n",
       "      <td>42</td>\n",
       "      <td>93</td>\n",
       "      <td>29</td>\n",
       "      <td>35</td>\n",
       "      <td>9</td>\n",
       "      <td>23</td>\n",
       "      <td>19</td>\n",
       "      <td>30</td>\n",
       "      <td>49</td>\n",
       "      <td>24</td>\n",
       "      <td>7</td>\n",
       "      <td>28</td>\n",
       "      <td>11</td>\n",
       "      <td>11</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>MIN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>112</td>\n",
       "      <td>38</td>\n",
       "      <td>83</td>\n",
       "      <td>31</td>\n",
       "      <td>37</td>\n",
       "      <td>5</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>33</td>\n",
       "      <td>39</td>\n",
       "      <td>24</td>\n",
       "      <td>4</td>\n",
       "      <td>26</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>111</td>\n",
       "      <td>35</td>\n",
       "      <td>93</td>\n",
       "      <td>32</td>\n",
       "      <td>35</td>\n",
       "      <td>9</td>\n",
       "      <td>35</td>\n",
       "      <td>15</td>\n",
       "      <td>36</td>\n",
       "      <td>51</td>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>29</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>NO</td>\n",
       "      <td>POR</td>\n",
       "      <td>94</td>\n",
       "      <td>36</td>\n",
       "      <td>91</td>\n",
       "      <td>11</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>33</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "      <td>7</td>\n",
       "      <td>11</td>\n",
       "      <td>112</td>\n",
       "      <td>44</td>\n",
       "      <td>88</td>\n",
       "      <td>12</td>\n",
       "      <td>14</td>\n",
       "      <td>12</td>\n",
       "      <td>32</td>\n",
       "      <td>6</td>\n",
       "      <td>45</td>\n",
       "      <td>51</td>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "      <td>21</td>\n",
       "      <td>7</td>\n",
       "      <td>12</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>NY</td>\n",
       "      <td>MIL</td>\n",
       "      <td>122</td>\n",
       "      <td>42</td>\n",
       "      <td>93</td>\n",
       "      <td>29</td>\n",
       "      <td>35</td>\n",
       "      <td>9</td>\n",
       "      <td>23</td>\n",
       "      <td>19</td>\n",
       "      <td>30</td>\n",
       "      <td>49</td>\n",
       "      <td>24</td>\n",
       "      <td>7</td>\n",
       "      <td>28</td>\n",
       "      <td>11</td>\n",
       "      <td>11</td>\n",
       "      <td>97</td>\n",
       "      <td>30</td>\n",
       "      <td>86</td>\n",
       "      <td>28</td>\n",
       "      <td>31</td>\n",
       "      <td>9</td>\n",
       "      <td>18</td>\n",
       "      <td>18</td>\n",
       "      <td>29</td>\n",
       "      <td>47</td>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>OKC</td>\n",
       "      <td>SA</td>\n",
       "      <td>112</td>\n",
       "      <td>42</td>\n",
       "      <td>86</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>11</td>\n",
       "      <td>34</td>\n",
       "      <td>45</td>\n",
       "      <td>21</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>106</td>\n",
       "      <td>45</td>\n",
       "      <td>93</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>36</td>\n",
       "      <td>22</td>\n",
       "      <td>9</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>ORL</td>\n",
       "      <td>WAS</td>\n",
       "      <td>87</td>\n",
       "      <td>37</td>\n",
       "      <td>100</td>\n",
       "      <td>8</td>\n",
       "      <td>12</td>\n",
       "      <td>5</td>\n",
       "      <td>26</td>\n",
       "      <td>17</td>\n",
       "      <td>39</td>\n",
       "      <td>56</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>22</td>\n",
       "      <td>9</td>\n",
       "      <td>16</td>\n",
       "      <td>88</td>\n",
       "      <td>33</td>\n",
       "      <td>84</td>\n",
       "      <td>15</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>28</td>\n",
       "      <td>15</td>\n",
       "      <td>34</td>\n",
       "      <td>49</td>\n",
       "      <td>17</td>\n",
       "      <td>9</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "      <td>18</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>PHI</td>\n",
       "      <td>BOS</td>\n",
       "      <td>95</td>\n",
       "      <td>34</td>\n",
       "      <td>84</td>\n",
       "      <td>20</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>22</td>\n",
       "      <td>15</td>\n",
       "      <td>32</td>\n",
       "      <td>47</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>22</td>\n",
       "      <td>11</td>\n",
       "      <td>24</td>\n",
       "      <td>112</td>\n",
       "      <td>39</td>\n",
       "      <td>85</td>\n",
       "      <td>26</td>\n",
       "      <td>27</td>\n",
       "      <td>8</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>31</td>\n",
       "      <td>41</td>\n",
       "      <td>31</td>\n",
       "      <td>7</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>17</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>PHO</td>\n",
       "      <td>DAL</td>\n",
       "      <td>95</td>\n",
       "      <td>34</td>\n",
       "      <td>87</td>\n",
       "      <td>21</td>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>13</td>\n",
       "      <td>40</td>\n",
       "      <td>53</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>30</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>111</td>\n",
       "      <td>40</td>\n",
       "      <td>85</td>\n",
       "      <td>21</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>21</td>\n",
       "      <td>6</td>\n",
       "      <td>42</td>\n",
       "      <td>48</td>\n",
       "      <td>24</td>\n",
       "      <td>3</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>POR</td>\n",
       "      <td>NO</td>\n",
       "      <td>112</td>\n",
       "      <td>44</td>\n",
       "      <td>88</td>\n",
       "      <td>12</td>\n",
       "      <td>14</td>\n",
       "      <td>12</td>\n",
       "      <td>32</td>\n",
       "      <td>6</td>\n",
       "      <td>45</td>\n",
       "      <td>51</td>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "      <td>21</td>\n",
       "      <td>7</td>\n",
       "      <td>12</td>\n",
       "      <td>94</td>\n",
       "      <td>36</td>\n",
       "      <td>91</td>\n",
       "      <td>11</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>33</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "      <td>7</td>\n",
       "      <td>11</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2015-10-28</td>\n",
       "      <td>SA</td>\n",
       "      <td>OKC</td>\n",
       "      <td>106</td>\n",
       "      <td>45</td>\n",
       "      <td>93</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>36</td>\n",
       "      <td>22</td>\n",
       "      <td>9</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>112</td>\n",
       "      <td>42</td>\n",
       "      <td>86</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>11</td>\n",
       "      <td>34</td>\n",
       "      <td>45</td>\n",
       "      <td>21</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2192</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>BOS</td>\n",
       "      <td>LAC</td>\n",
       "      <td>90</td>\n",
       "      <td>31</td>\n",
       "      <td>89</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>18</td>\n",
       "      <td>31</td>\n",
       "      <td>49</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>7</td>\n",
       "      <td>16</td>\n",
       "      <td>114</td>\n",
       "      <td>44</td>\n",
       "      <td>84</td>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>45</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>23</td>\n",
       "      <td>13</td>\n",
       "      <td>15</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2193</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>CHI</td>\n",
       "      <td>ATL</td>\n",
       "      <td>100</td>\n",
       "      <td>40</td>\n",
       "      <td>105</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>9</td>\n",
       "      <td>22</td>\n",
       "      <td>18</td>\n",
       "      <td>40</td>\n",
       "      <td>58</td>\n",
       "      <td>22</td>\n",
       "      <td>5</td>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>102</td>\n",
       "      <td>36</td>\n",
       "      <td>85</td>\n",
       "      <td>25</td>\n",
       "      <td>28</td>\n",
       "      <td>5</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>40</td>\n",
       "      <td>47</td>\n",
       "      <td>22</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2194</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>DAL</td>\n",
       "      <td>DEN</td>\n",
       "      <td>97</td>\n",
       "      <td>36</td>\n",
       "      <td>88</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>9</td>\n",
       "      <td>25</td>\n",
       "      <td>34</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>20</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "      <td>88</td>\n",
       "      <td>31</td>\n",
       "      <td>70</td>\n",
       "      <td>17</td>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>24</td>\n",
       "      <td>6</td>\n",
       "      <td>38</td>\n",
       "      <td>44</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>21</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2195</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>DEN</td>\n",
       "      <td>DAL</td>\n",
       "      <td>88</td>\n",
       "      <td>31</td>\n",
       "      <td>70</td>\n",
       "      <td>17</td>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>24</td>\n",
       "      <td>6</td>\n",
       "      <td>38</td>\n",
       "      <td>44</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>21</td>\n",
       "      <td>97</td>\n",
       "      <td>36</td>\n",
       "      <td>88</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>9</td>\n",
       "      <td>25</td>\n",
       "      <td>34</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>20</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2196</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>LAC</td>\n",
       "      <td>BOS</td>\n",
       "      <td>114</td>\n",
       "      <td>44</td>\n",
       "      <td>84</td>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>45</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>23</td>\n",
       "      <td>13</td>\n",
       "      <td>15</td>\n",
       "      <td>90</td>\n",
       "      <td>31</td>\n",
       "      <td>89</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>18</td>\n",
       "      <td>31</td>\n",
       "      <td>49</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>7</td>\n",
       "      <td>16</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2197</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>LAL</td>\n",
       "      <td>UTA</td>\n",
       "      <td>75</td>\n",
       "      <td>26</td>\n",
       "      <td>85</td>\n",
       "      <td>16</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>20</td>\n",
       "      <td>7</td>\n",
       "      <td>30</td>\n",
       "      <td>37</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>123</td>\n",
       "      <td>46</td>\n",
       "      <td>89</td>\n",
       "      <td>14</td>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>32</td>\n",
       "      <td>13</td>\n",
       "      <td>44</td>\n",
       "      <td>57</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2198</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>MEM</td>\n",
       "      <td>SA</td>\n",
       "      <td>87</td>\n",
       "      <td>33</td>\n",
       "      <td>83</td>\n",
       "      <td>15</td>\n",
       "      <td>24</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>26</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>4</td>\n",
       "      <td>22</td>\n",
       "      <td>8</td>\n",
       "      <td>14</td>\n",
       "      <td>101</td>\n",
       "      <td>37</td>\n",
       "      <td>72</td>\n",
       "      <td>22</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>33</td>\n",
       "      <td>43</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>9</td>\n",
       "      <td>15</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2199</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>MIA</td>\n",
       "      <td>BKN</td>\n",
       "      <td>110</td>\n",
       "      <td>48</td>\n",
       "      <td>84</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>5</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>32</td>\n",
       "      <td>25</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>99</td>\n",
       "      <td>41</td>\n",
       "      <td>77</td>\n",
       "      <td>14</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>26</td>\n",
       "      <td>36</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>8</td>\n",
       "      <td>20</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2200</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>MIN</td>\n",
       "      <td>PHO</td>\n",
       "      <td>121</td>\n",
       "      <td>41</td>\n",
       "      <td>81</td>\n",
       "      <td>32</td>\n",
       "      <td>40</td>\n",
       "      <td>7</td>\n",
       "      <td>26</td>\n",
       "      <td>11</td>\n",
       "      <td>30</td>\n",
       "      <td>41</td>\n",
       "      <td>22</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>18</td>\n",
       "      <td>116</td>\n",
       "      <td>41</td>\n",
       "      <td>84</td>\n",
       "      <td>19</td>\n",
       "      <td>23</td>\n",
       "      <td>15</td>\n",
       "      <td>33</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>36</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>9</td>\n",
       "      <td>21</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2201</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>NO</td>\n",
       "      <td>NY</td>\n",
       "      <td>99</td>\n",
       "      <td>32</td>\n",
       "      <td>75</td>\n",
       "      <td>27</td>\n",
       "      <td>37</td>\n",
       "      <td>8</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>41</td>\n",
       "      <td>47</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>91</td>\n",
       "      <td>36</td>\n",
       "      <td>89</td>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>31</td>\n",
       "      <td>6</td>\n",
       "      <td>36</td>\n",
       "      <td>42</td>\n",
       "      <td>26</td>\n",
       "      <td>6</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>14</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2202</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>NY</td>\n",
       "      <td>NO</td>\n",
       "      <td>91</td>\n",
       "      <td>36</td>\n",
       "      <td>89</td>\n",
       "      <td>9</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>31</td>\n",
       "      <td>6</td>\n",
       "      <td>36</td>\n",
       "      <td>42</td>\n",
       "      <td>26</td>\n",
       "      <td>6</td>\n",
       "      <td>26</td>\n",
       "      <td>9</td>\n",
       "      <td>14</td>\n",
       "      <td>99</td>\n",
       "      <td>32</td>\n",
       "      <td>75</td>\n",
       "      <td>27</td>\n",
       "      <td>37</td>\n",
       "      <td>8</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>41</td>\n",
       "      <td>47</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>16</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2203</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>OKC</td>\n",
       "      <td>TOR</td>\n",
       "      <td>119</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>26</td>\n",
       "      <td>32</td>\n",
       "      <td>11</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>41</td>\n",
       "      <td>53</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>100</td>\n",
       "      <td>38</td>\n",
       "      <td>93</td>\n",
       "      <td>16</td>\n",
       "      <td>23</td>\n",
       "      <td>8</td>\n",
       "      <td>24</td>\n",
       "      <td>12</td>\n",
       "      <td>28</td>\n",
       "      <td>40</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>4</td>\n",
       "      <td>11</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2204</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>PHO</td>\n",
       "      <td>MIN</td>\n",
       "      <td>116</td>\n",
       "      <td>41</td>\n",
       "      <td>84</td>\n",
       "      <td>19</td>\n",
       "      <td>23</td>\n",
       "      <td>15</td>\n",
       "      <td>33</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>36</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>9</td>\n",
       "      <td>21</td>\n",
       "      <td>121</td>\n",
       "      <td>41</td>\n",
       "      <td>81</td>\n",
       "      <td>32</td>\n",
       "      <td>40</td>\n",
       "      <td>7</td>\n",
       "      <td>26</td>\n",
       "      <td>11</td>\n",
       "      <td>30</td>\n",
       "      <td>41</td>\n",
       "      <td>22</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>18</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2205</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>POR</td>\n",
       "      <td>SAC</td>\n",
       "      <td>105</td>\n",
       "      <td>38</td>\n",
       "      <td>80</td>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>37</td>\n",
       "      <td>42</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>93</td>\n",
       "      <td>37</td>\n",
       "      <td>89</td>\n",
       "      <td>12</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>43</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>20</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2206</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>SA</td>\n",
       "      <td>MEM</td>\n",
       "      <td>101</td>\n",
       "      <td>37</td>\n",
       "      <td>72</td>\n",
       "      <td>22</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>33</td>\n",
       "      <td>43</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>9</td>\n",
       "      <td>15</td>\n",
       "      <td>87</td>\n",
       "      <td>33</td>\n",
       "      <td>83</td>\n",
       "      <td>15</td>\n",
       "      <td>24</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>26</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>4</td>\n",
       "      <td>22</td>\n",
       "      <td>8</td>\n",
       "      <td>14</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2207</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>SAC</td>\n",
       "      <td>POR</td>\n",
       "      <td>93</td>\n",
       "      <td>37</td>\n",
       "      <td>89</td>\n",
       "      <td>12</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>15</td>\n",
       "      <td>11</td>\n",
       "      <td>32</td>\n",
       "      <td>43</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>20</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>105</td>\n",
       "      <td>38</td>\n",
       "      <td>80</td>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>37</td>\n",
       "      <td>42</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>23</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2208</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>TOR</td>\n",
       "      <td>OKC</td>\n",
       "      <td>100</td>\n",
       "      <td>38</td>\n",
       "      <td>93</td>\n",
       "      <td>16</td>\n",
       "      <td>23</td>\n",
       "      <td>8</td>\n",
       "      <td>24</td>\n",
       "      <td>12</td>\n",
       "      <td>28</td>\n",
       "      <td>40</td>\n",
       "      <td>19</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>4</td>\n",
       "      <td>11</td>\n",
       "      <td>119</td>\n",
       "      <td>41</td>\n",
       "      <td>86</td>\n",
       "      <td>26</td>\n",
       "      <td>32</td>\n",
       "      <td>11</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>41</td>\n",
       "      <td>53</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2209</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-28</td>\n",
       "      <td>UTA</td>\n",
       "      <td>LAL</td>\n",
       "      <td>123</td>\n",
       "      <td>46</td>\n",
       "      <td>89</td>\n",
       "      <td>14</td>\n",
       "      <td>19</td>\n",
       "      <td>17</td>\n",
       "      <td>32</td>\n",
       "      <td>13</td>\n",
       "      <td>44</td>\n",
       "      <td>57</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>75</td>\n",
       "      <td>26</td>\n",
       "      <td>85</td>\n",
       "      <td>16</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>20</td>\n",
       "      <td>7</td>\n",
       "      <td>30</td>\n",
       "      <td>37</td>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2210</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>BKN</td>\n",
       "      <td>ORL</td>\n",
       "      <td>105</td>\n",
       "      <td>37</td>\n",
       "      <td>79</td>\n",
       "      <td>26</td>\n",
       "      <td>39</td>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "      <td>14</td>\n",
       "      <td>25</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>139</td>\n",
       "      <td>56</td>\n",
       "      <td>91</td>\n",
       "      <td>13</td>\n",
       "      <td>19</td>\n",
       "      <td>14</td>\n",
       "      <td>27</td>\n",
       "      <td>5</td>\n",
       "      <td>30</td>\n",
       "      <td>35</td>\n",
       "      <td>40</td>\n",
       "      <td>5</td>\n",
       "      <td>29</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2211</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>CHA</td>\n",
       "      <td>PHI</td>\n",
       "      <td>100</td>\n",
       "      <td>38</td>\n",
       "      <td>87</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>56</td>\n",
       "      <td>65</td>\n",
       "      <td>26</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>85</td>\n",
       "      <td>30</td>\n",
       "      <td>96</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "      <td>44</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>45</td>\n",
       "      <td>20</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2212</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>CHI</td>\n",
       "      <td>IND</td>\n",
       "      <td>98</td>\n",
       "      <td>37</td>\n",
       "      <td>87</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>29</td>\n",
       "      <td>41</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>17</td>\n",
       "      <td>96</td>\n",
       "      <td>39</td>\n",
       "      <td>90</td>\n",
       "      <td>15</td>\n",
       "      <td>17</td>\n",
       "      <td>3</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>31</td>\n",
       "      <td>44</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2213</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>CLE</td>\n",
       "      <td>HOU</td>\n",
       "      <td>100</td>\n",
       "      <td>31</td>\n",
       "      <td>86</td>\n",
       "      <td>24</td>\n",
       "      <td>28</td>\n",
       "      <td>14</td>\n",
       "      <td>40</td>\n",
       "      <td>10</td>\n",
       "      <td>28</td>\n",
       "      <td>38</td>\n",
       "      <td>21</td>\n",
       "      <td>5</td>\n",
       "      <td>31</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>106</td>\n",
       "      <td>38</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>42</td>\n",
       "      <td>9</td>\n",
       "      <td>25</td>\n",
       "      <td>14</td>\n",
       "      <td>41</td>\n",
       "      <td>55</td>\n",
       "      <td>23</td>\n",
       "      <td>5</td>\n",
       "      <td>24</td>\n",
       "      <td>7</td>\n",
       "      <td>15</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2214</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>DET</td>\n",
       "      <td>OKC</td>\n",
       "      <td>88</td>\n",
       "      <td>33</td>\n",
       "      <td>87</td>\n",
       "      <td>18</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>16</td>\n",
       "      <td>37</td>\n",
       "      <td>53</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>82</td>\n",
       "      <td>31</td>\n",
       "      <td>82</td>\n",
       "      <td>14</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>21</td>\n",
       "      <td>14</td>\n",
       "      <td>31</td>\n",
       "      <td>45</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2215</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>GS</td>\n",
       "      <td>WAS</td>\n",
       "      <td>102</td>\n",
       "      <td>38</td>\n",
       "      <td>87</td>\n",
       "      <td>15</td>\n",
       "      <td>23</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>48</td>\n",
       "      <td>55</td>\n",
       "      <td>27</td>\n",
       "      <td>6</td>\n",
       "      <td>23</td>\n",
       "      <td>11</td>\n",
       "      <td>16</td>\n",
       "      <td>94</td>\n",
       "      <td>36</td>\n",
       "      <td>86</td>\n",
       "      <td>17</td>\n",
       "      <td>27</td>\n",
       "      <td>5</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>41</td>\n",
       "      <td>48</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>17</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2216</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>HOU</td>\n",
       "      <td>CLE</td>\n",
       "      <td>106</td>\n",
       "      <td>38</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>42</td>\n",
       "      <td>9</td>\n",
       "      <td>25</td>\n",
       "      <td>14</td>\n",
       "      <td>41</td>\n",
       "      <td>55</td>\n",
       "      <td>23</td>\n",
       "      <td>5</td>\n",
       "      <td>24</td>\n",
       "      <td>7</td>\n",
       "      <td>15</td>\n",
       "      <td>100</td>\n",
       "      <td>31</td>\n",
       "      <td>86</td>\n",
       "      <td>24</td>\n",
       "      <td>28</td>\n",
       "      <td>14</td>\n",
       "      <td>40</td>\n",
       "      <td>10</td>\n",
       "      <td>28</td>\n",
       "      <td>38</td>\n",
       "      <td>21</td>\n",
       "      <td>5</td>\n",
       "      <td>31</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2217</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>IND</td>\n",
       "      <td>CHI</td>\n",
       "      <td>96</td>\n",
       "      <td>39</td>\n",
       "      <td>90</td>\n",
       "      <td>15</td>\n",
       "      <td>17</td>\n",
       "      <td>3</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>31</td>\n",
       "      <td>44</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>98</td>\n",
       "      <td>37</td>\n",
       "      <td>87</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>26</td>\n",
       "      <td>12</td>\n",
       "      <td>29</td>\n",
       "      <td>41</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>17</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2218</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>OKC</td>\n",
       "      <td>DET</td>\n",
       "      <td>82</td>\n",
       "      <td>31</td>\n",
       "      <td>82</td>\n",
       "      <td>14</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>21</td>\n",
       "      <td>14</td>\n",
       "      <td>31</td>\n",
       "      <td>45</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "      <td>88</td>\n",
       "      <td>33</td>\n",
       "      <td>87</td>\n",
       "      <td>18</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>16</td>\n",
       "      <td>37</td>\n",
       "      <td>53</td>\n",
       "      <td>20</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2219</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>ORL</td>\n",
       "      <td>BKN</td>\n",
       "      <td>139</td>\n",
       "      <td>56</td>\n",
       "      <td>91</td>\n",
       "      <td>13</td>\n",
       "      <td>19</td>\n",
       "      <td>14</td>\n",
       "      <td>27</td>\n",
       "      <td>5</td>\n",
       "      <td>30</td>\n",
       "      <td>35</td>\n",
       "      <td>40</td>\n",
       "      <td>5</td>\n",
       "      <td>29</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>105</td>\n",
       "      <td>37</td>\n",
       "      <td>79</td>\n",
       "      <td>26</td>\n",
       "      <td>39</td>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "      <td>14</td>\n",
       "      <td>25</td>\n",
       "      <td>39</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2220</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>85</td>\n",
       "      <td>30</td>\n",
       "      <td>96</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "      <td>44</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>45</td>\n",
       "      <td>20</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>100</td>\n",
       "      <td>38</td>\n",
       "      <td>87</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>56</td>\n",
       "      <td>65</td>\n",
       "      <td>26</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>home</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2221</th>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>2016-03-29</td>\n",
       "      <td>WAS</td>\n",
       "      <td>GS</td>\n",
       "      <td>94</td>\n",
       "      <td>36</td>\n",
       "      <td>86</td>\n",
       "      <td>17</td>\n",
       "      <td>27</td>\n",
       "      <td>5</td>\n",
       "      <td>23</td>\n",
       "      <td>7</td>\n",
       "      <td>41</td>\n",
       "      <td>48</td>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>17</td>\n",
       "      <td>102</td>\n",
       "      <td>38</td>\n",
       "      <td>87</td>\n",
       "      <td>15</td>\n",
       "      <td>23</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>48</td>\n",
       "      <td>55</td>\n",
       "      <td>27</td>\n",
       "      <td>6</td>\n",
       "      <td>23</td>\n",
       "      <td>11</td>\n",
       "      <td>16</td>\n",
       "      <td>away</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2222 rows × 36 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     blank blank1      dateof team  opp  points  fg  fgatt  ft  ftatt  fg3  \\\n",
       "0                  2015-10-27  ATL  DET      94  37     82  12     15    8   \n",
       "1                  2015-10-27  CHI  CLE      97  37     87  16     23    7   \n",
       "2                  2015-10-27  CLE  CHI      95  38     94  10     17    9   \n",
       "3                  2015-10-27  DET  ATL     106  37     96  20     26   12   \n",
       "4                  2015-10-27   GS   NO     111  41     96  20     22    9   \n",
       "5                  2015-10-27   NO   GS      95  35     83  19     27    6   \n",
       "6                  2015-10-28  BKN  CHI     100  39     93  22     28    0   \n",
       "7                  2015-10-28  BOS  PHI     112  39     85  26     27    8   \n",
       "8                  2015-10-28  CHA  MIA      94  33     84  22     29    6   \n",
       "9                  2015-10-28  CHI  BKN     115  42     78  17     20   14   \n",
       "10                 2015-10-28  CLE  MEM     106  41     84  11     17   13   \n",
       "11                 2015-10-28  DAL  PHO     111  40     85  21     31   10   \n",
       "12                 2015-10-28  DEN  HOU     105  40     79  12     18   13   \n",
       "13                 2015-10-28  DET  UTA      92  30     74  25     34    7   \n",
       "14                 2015-10-28  HOU  DEN      85  30     87  17     26    8   \n",
       "15                 2015-10-28  IND  TOR      99  32     86  26     31    9   \n",
       "16                 2015-10-28  LAC  SAC     111  42     80  21     31    6   \n",
       "17                 2015-10-28  LAL  MIN     111  35     93  32     35    9   \n",
       "18                 2015-10-28  MEM  CLE      76  29     82  16     22    2   \n",
       "19                 2015-10-28  MIA  CHA     104  36     73  20     21   12   \n",
       "20                 2015-10-28  MIL   NY      97  30     86  28     31    9   \n",
       "21                 2015-10-28  MIN  LAL     112  38     83  31     37    5   \n",
       "22                 2015-10-28   NO  POR      94  36     91  11     18   11   \n",
       "23                 2015-10-28   NY  MIL     122  42     93  29     35    9   \n",
       "24                 2015-10-28  OKC   SA     112  42     86  21     22    7   \n",
       "25                 2015-10-28  ORL  WAS      87  37    100   8     12    5   \n",
       "26                 2015-10-28  PHI  BOS      95  34     84  20     23    7   \n",
       "27                 2015-10-28  PHO  DAL      95  34     87  21     33    6   \n",
       "28                 2015-10-28  POR   NO     112  44     88  12     14   12   \n",
       "29                 2015-10-28   SA  OKC     106  45     93  11     13    5   \n",
       "...    ...    ...         ...  ...  ...     ...  ..    ...  ..    ...  ...   \n",
       "2192               2016-03-28  BOS  LAC      90  31     89  21     27    7   \n",
       "2193               2016-03-28  CHI  ATL     100  40    105  11     15    9   \n",
       "2194               2016-03-28  DAL  DEN      97  36     88  14     15   11   \n",
       "2195               2016-03-28  DEN  DAL      88  31     70  17     19    9   \n",
       "2196               2016-03-28  LAC  BOS     114  44     84  15     18   11   \n",
       "2197               2016-03-28  LAL  UTA      75  26     85  16     22    7   \n",
       "2198               2016-03-28  MEM   SA      87  33     83  15     24    6   \n",
       "2199               2016-03-28  MIA  BKN     110  48     84   9     12    5   \n",
       "2200               2016-03-28  MIN  PHO     121  41     81  32     40    7   \n",
       "2201               2016-03-28   NO   NY      99  32     75  27     37    8   \n",
       "2202               2016-03-28   NY   NO      91  36     89   9     13   10   \n",
       "2203               2016-03-28  OKC  TOR     119  41     86  26     32   11   \n",
       "2204               2016-03-28  PHO  MIN     116  41     84  19     23   15   \n",
       "2205               2016-03-28  POR  SAC     105  38     80  15     18   14   \n",
       "2206               2016-03-28   SA  MEM     101  37     72  22     30    5   \n",
       "2207               2016-03-28  SAC  POR      93  37     89  12     19    7   \n",
       "2208               2016-03-28  TOR  OKC     100  38     93  16     23    8   \n",
       "2209               2016-03-28  UTA  LAL     123  46     89  14     19   17   \n",
       "2210               2016-03-29  BKN  ORL     105  37     79  26     39    5   \n",
       "2211               2016-03-29  CHA  PHI     100  38     87  17     18    7   \n",
       "2212               2016-03-29  CHI  IND      98  37     87  14     16   10   \n",
       "2213               2016-03-29  CLE  HOU     100  31     86  24     28   14   \n",
       "2214               2016-03-29  DET  OKC      88  33     87  18     20    4   \n",
       "2215               2016-03-29   GS  WAS     102  38     87  15     23   11   \n",
       "2216               2016-03-29  HOU  CLE     106  38     79  21     42    9   \n",
       "2217               2016-03-29  IND  CHI      96  39     90  15     17    3   \n",
       "2218               2016-03-29  OKC  DET      82  31     82  14     22    6   \n",
       "2219               2016-03-29  ORL  BKN     139  56     91  13     19   14   \n",
       "2220               2016-03-29  PHI  CHA      85  30     96   9     10   16   \n",
       "2221               2016-03-29  WAS   GS      94  36     86  17     27    5   \n",
       "\n",
       "      fg3att  offrebounds  defrebounds  totalrebounds  assists  blocks  fouls  \\\n",
       "0         27            7           33             40       22       4     25   \n",
       "1         19            7           40             47       13      10     22   \n",
       "2         29           11           39             50       26       7     21   \n",
       "3         29           23           36             59       23       3     15   \n",
       "4         30           21           35             56       29       7     29   \n",
       "5         18            8           25             33       21       3     26   \n",
       "6          9           16           29             45       19       5     18   \n",
       "7         24           10           31             41       31       7     23   \n",
       "8         24           11           32             43       16       1     16   \n",
       "9         28            5           34             39       20       3     24   \n",
       "10        29           12           42             54       29       2     25   \n",
       "11        21            6           42             48       24       3     25   \n",
       "12        27            9           40             49       26      10     26   \n",
       "13        19            8           35             43       16       4     20   \n",
       "14        35           15           29             44       17       8     19   \n",
       "15        23            8           32             40       23       3     30   \n",
       "16        19            6           36             42       20       9     19   \n",
       "17        35           15           36             51       18       4     29   \n",
       "18        16           11           29             40       15       3     18   \n",
       "19        20            2           39             41       23       7     25   \n",
       "20        18           18           29             47       17       4     27   \n",
       "21        20            6           33             39       24       4     26   \n",
       "22        33            5           34             39       19       2     17   \n",
       "23        23           19           30             49       24       7     28   \n",
       "24        19           11           34             45       21       4     19   \n",
       "25        26           17           39             56       20       6     22   \n",
       "26        22           15           32             47       12       6     22   \n",
       "27        24           13           40             53       15       3     30   \n",
       "28        32            6           45             51       22       4     21   \n",
       "29        15            7           29             36       22       9     18   \n",
       "...      ...          ...          ...            ...      ...     ...    ...   \n",
       "2192      19           18           31             49       14       4     17   \n",
       "2193      22           18           40             58       22       5     17   \n",
       "2194      32            9           25             34       23       6     20   \n",
       "2195      24            6           38             44       20       4     20   \n",
       "2196      25            9           36             45       29       5     23   \n",
       "2197      20            7           30             37       11       6     19   \n",
       "2198      19           13           26             39       19       4     22   \n",
       "2199      16            7           25             32       25       4     14   \n",
       "2200      26           11           30             41       22       3     18   \n",
       "2201      19            6           41             47       18       3     16   \n",
       "2202      31            6           36             42       26       6     26   \n",
       "2203      26           12           41             53       29       5     22   \n",
       "2204      33            7           29             36       22       2     34   \n",
       "2205      29            5           37             42       25      10     23   \n",
       "2206      15           10           33             43       23       7     21   \n",
       "2207      15           11           32             43       20       2     20   \n",
       "2208      24           12           28             40       19       7     21   \n",
       "2209      32           13           44             57       26       7     18   \n",
       "2210      14           14           25             39       19       5     18   \n",
       "2211      25            9           56             65       26       6      7   \n",
       "2212      26           12           29             41       22       6     19   \n",
       "2213      40           10           28             38       21       5     31   \n",
       "2214      19           16           37             53       20       4     18   \n",
       "2215      25            7           48             55       27       6     23   \n",
       "2216      25           14           41             55       23       5     24   \n",
       "2217      19           13           31             44       20       6     16   \n",
       "2218      21           14           31             45       16       7     21   \n",
       "2219      27            5           30             35       40       5     29   \n",
       "2220      44            9           36             45       20       5     18   \n",
       "2221      23            7           41             48       26       7     19   \n",
       "\n",
       "      steals  turnovers  opoints  ofg  ofgatt  oft  oftatt  ofg3  ofg3att  \\\n",
       "0          9         15      106   37      96   20      26    12       29   \n",
       "1          6         13       95   38      94   10      17     9       29   \n",
       "2          5         11       97   37      87   16      23     7       19   \n",
       "3          5         15       94   37      82   12      15     8       27   \n",
       "4          8         20       95   35      83   19      27     6       18   \n",
       "5          9         19      111   41      96   20      22     9       30   \n",
       "6         11         13      115   42      78   17      20    14       28   \n",
       "7         10         17       95   34      84   20      23     7       22   \n",
       "8          4          9      104   36      73   20      21    12       20   \n",
       "9          9         20      100   39      93   22      28     0        9   \n",
       "10         7         19       76   29      82   16      22     2       16   \n",
       "11         7          8       95   34      87   21      33     6       24   \n",
       "12         9         21       85   30      87   17      26     8       35   \n",
       "13         2         12       87   35      75   15      21     2       12   \n",
       "14        13         17      105   40      79   12      18    13       27   \n",
       "15        14         13      106   36      80   27      39     7       18   \n",
       "16         8         15      104   41      94   11      18    11       24   \n",
       "17         2         14      112   38      83   31      37     5       20   \n",
       "18         8         16      106   41      84   11      17    13       29   \n",
       "19         5         13       94   33      84   22      29     6       24   \n",
       "20         7         18      122   42      93   29      35     9       23   \n",
       "21         3          8      111   35      93   32      35     9       35   \n",
       "22         7         11      112   44      88   12      14    12       32   \n",
       "23        11         11       97   30      86   28      31     9       18   \n",
       "24         7         19      106   45      93   11      13     5       15   \n",
       "25         9         16       88   33      84   15      25     7       28   \n",
       "26        11         24      112   39      85   26      27     8       24   \n",
       "27         3         18      111   40      85   21      31    10       21   \n",
       "28         7         12       94   36      91   11      18    11       33   \n",
       "29        11         13      112   42      86   21      22     7       19   \n",
       "...      ...        ...      ...  ...     ...  ...     ...   ...      ...   \n",
       "2192       7         16      114   44      84   15      18    11       25   \n",
       "2193       4          9      102   36      85   25      28     5       22   \n",
       "2194      14          4       88   31      70   17      19     9       24   \n",
       "2195       3         21       97   36      88   14      15    11       32   \n",
       "2196      13         15       90   31      89   21      27     7       19   \n",
       "2197       5          9      123   46      89   14      19    17       32   \n",
       "2198       8         14      101   37      72   22      30     5       15   \n",
       "2199      11         13       99   41      77   14      18     3       11   \n",
       "2200      10         18      116   41      84   19      23    15       33   \n",
       "2201      11         13       91   36      89    9      13    10       31   \n",
       "2202       9         14       99   32      75   27      37     8       19   \n",
       "2203       7         10      100   38      93   16      23     8       24   \n",
       "2204       9         21      121   41      81   32      40     7       26   \n",
       "2205       6         19       93   37      89   12      19     7       15   \n",
       "2206       9         15       87   33      83   15      24     6       19   \n",
       "2207      11         15      105   38      80   15      18    14       29   \n",
       "2208       4         11      119   41      86   26      32    11       26   \n",
       "2209       4          7       75   26      85   16      22     7       20   \n",
       "2210       7         18      139   56      91   13      19    14       27   \n",
       "2211       6         16       85   30      96    9      10    16       44   \n",
       "2212       5         17       96   39      90   15      17     3       19   \n",
       "2213       5         13      106   38      79   21      42     9       25   \n",
       "2214       6         16       82   31      82   14      22     6       21   \n",
       "2215      11         16       94   36      86   17      27     5       23   \n",
       "2216       7         15      100   31      86   24      28    14       40   \n",
       "2217       9         12       98   37      87   14      16    10       26   \n",
       "2218      10         19       88   33      87   18      20     4       19   \n",
       "2219      11         10      105   37      79   26      39     5       14   \n",
       "2220       8         10      100   38      87   17      18     7       25   \n",
       "2221       6         17      102   38      87   15      23    11       25   \n",
       "\n",
       "      ooffrebounds  odefrebounds  ototalrebounds  oassists  oblocks  ofouls  \\\n",
       "0               23            36              59        23        3      15   \n",
       "1               11            39              50        26        7      21   \n",
       "2                7            40              47        13       10      22   \n",
       "3                7            33              40        22        4      25   \n",
       "4                8            25              33        21        3      26   \n",
       "5               21            35              56        29        7      29   \n",
       "6                5            34              39        20        3      24   \n",
       "7               15            32              47        12        6      22   \n",
       "8                2            39              41        23        7      25   \n",
       "9               16            29              45        19        5      18   \n",
       "10              11            29              40        15        3      18   \n",
       "11              13            40              53        15        3      30   \n",
       "12              15            29              44        17        8      19   \n",
       "13               4            34              38        15        5      25   \n",
       "14               9            40              49        26       10      26   \n",
       "15               9            41              50        19        2      24   \n",
       "16              12            37              49        24        3      27   \n",
       "17               6            33              39        24        4      26   \n",
       "18              12            42              54        29        2      25   \n",
       "19              11            32              43        16        1      16   \n",
       "20              19            30              49        24        7      28   \n",
       "21              15            36              51        18        4      29   \n",
       "22               6            45              51        22        4      21   \n",
       "23              18            29              47        17        4      27   \n",
       "24               7            29              36        22        9      18   \n",
       "25              15            34              49        17        9      14   \n",
       "26              10            31              41        31        7      23   \n",
       "27               6            42              48        24        3      25   \n",
       "28               5            34              39        19        2      17   \n",
       "29              11            34              45        21        4      19   \n",
       "...            ...           ...             ...       ...      ...     ...   \n",
       "2192             9            36              45        29        5      23   \n",
       "2193             7            40              47        22       12      13   \n",
       "2194             6            38              44        20        4      20   \n",
       "2195             9            25              34        23        6      20   \n",
       "2196            18            31              49        14        4      17   \n",
       "2197            13            44              57        26        7      18   \n",
       "2198            10            33              43        23        7      21   \n",
       "2199            10            26              36        20        2      10   \n",
       "2200             7            29              36        22        2      34   \n",
       "2201             6            36              42        26        6      26   \n",
       "2202             6            41              47        18        3      16   \n",
       "2203            12            28              40        19        7      21   \n",
       "2204            11            30              41        22        3      18   \n",
       "2205            11            32              43        20        2      20   \n",
       "2206            13            26              39        19        4      22   \n",
       "2207             5            37              42        25       10      23   \n",
       "2208            12            41              53        29        5      22   \n",
       "2209             7            30              37        11        6      19   \n",
       "2210             5            30              35        40        5      29   \n",
       "2211             9            36              45        20        5      18   \n",
       "2212            13            31              44        20        6      16   \n",
       "2213            14            41              55        23        5      24   \n",
       "2214            14            31              45        16        7      21   \n",
       "2215             7            41              48        26        7      19   \n",
       "2216            10            28              38        21        5      31   \n",
       "2217            12            29              41        22        6      19   \n",
       "2218            16            37              53        20        4      18   \n",
       "2219            14            25              39        19        5      18   \n",
       "2220             9            56              65        26        6       7   \n",
       "2221             7            48              55        27        6      23   \n",
       "\n",
       "      osteals  oturnovers  side  \n",
       "0           5          15  home  \n",
       "1           5          11  home  \n",
       "2           6          13  away  \n",
       "3           9          15  away  \n",
       "4           9          19  home  \n",
       "5           8          20  away  \n",
       "6           9          20  home  \n",
       "7          11          24  home  \n",
       "8           5          13  away  \n",
       "9          11          13  away  \n",
       "10          8          16  away  \n",
       "11          3          18  away  \n",
       "12         13          17  away  \n",
       "13          4          12  home  \n",
       "14          9          21  home  \n",
       "15          8          21  away  \n",
       "16          8          18  away  \n",
       "17          3           8  home  \n",
       "18          7          19  home  \n",
       "19          4           9  home  \n",
       "20         11          11  home  \n",
       "21          2          14  away  \n",
       "22          7          12  away  \n",
       "23          7          18  away  \n",
       "24         11          13  home  \n",
       "25          8          18  home  \n",
       "26         10          17  away  \n",
       "27          7           8  home  \n",
       "28          7          11  home  \n",
       "29          7          19  away  \n",
       "...       ...         ...   ...  \n",
       "2192       13          15  away  \n",
       "2193        5           8  home  \n",
       "2194        3          21  away  \n",
       "2195       14           4  home  \n",
       "2196        7          16  home  \n",
       "2197        4           7  away  \n",
       "2198        9          15  home  \n",
       "2199        8          20  home  \n",
       "2200        9          21  home  \n",
       "2201        9          14  home  \n",
       "2202       11          13  away  \n",
       "2203        4          11  away  \n",
       "2204       10          18  away  \n",
       "2205       11          15  home  \n",
       "2206        8          14  away  \n",
       "2207        6          19  away  \n",
       "2208        7          10  home  \n",
       "2209        5           9  home  \n",
       "2210       11          10  away  \n",
       "2211        8          10  away  \n",
       "2212        9          12  away  \n",
       "2213        7          15  home  \n",
       "2214       10          19  home  \n",
       "2215        6          17  home  \n",
       "2216        5          13  away  \n",
       "2217        5          17  home  \n",
       "2218        6          16  away  \n",
       "2219        7          18  home  \n",
       "2220        6          16  home  \n",
       "2221       11          16  away  \n",
       "\n",
       "[2222 rows x 36 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df['poss_calc'] = df['fgatt'] + df['turnovers'] + (0.475*df['ftatt']) - df['offrebounds']\n",
    "df['oposs_calc'] = df['ofgatt'] + df['oturnovers'] + (0.475*df['oftatt']) - df['ooffrebounds']\n",
    "df['possessions'] = (df['poss_calc'] + df['oposs_calc'])/2\n",
    "df['efgp'] = (df['fg'] + (0.5 * df['fg3'])) / df['fgatt']\n",
    "df['oefgp'] = (df['ofg'] + (0.5 * df['ofg3'])) / df['ofgatt']\n",
    "df['ftrate'] = df['ft'] / df['fgatt']\n",
    "df['oftrate'] = df['oft'] / df['ofgatt']\n",
    "df['torate'] = df['turnovers'] / (df['fgatt'] + (0.44 * df['ftatt']) + df['turnovers'])\n",
    "df['otorate'] = df['oturnovers'] / (df['ofgatt'] + (0.44 * df['oftatt']) + df['oturnovers'])\n",
    "df['offrebound_p'] = df['offrebounds'] / (df['offrebounds'] + df['odefrebounds'])\n",
    "df['ooffrebound_p'] = df['ooffrebounds'] / (df['ooffrebounds'] + df['defrebounds'])\n",
    "\n",
    "\n",
    "# df['possessions'] = df[['poss_calc', 'oposs_calc']].mean(axis=1)\n",
    "df['avg_possessions'] = df.groupby(df['team'])['possessions'].apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_possessions'] = df.groupby(df['opp'])['possessions'].apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_poss_comp'] = a\n",
    "(df['avg_possessions'] + df['oavg_possessions'])/2\n",
    "df['poss_dev'] = df['possessions'] - df['avg_poss_comp']\n",
    "\n",
    "df['avg_to'] = df['turnovers'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_to'] = df['turnovers'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_forced_to'] = df['oturnovers'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_forced_to'] = df['oturnovers'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['comp_to'] = (df['avg_to']+df['oavg_forced_to'])/2\n",
    "df['comp_forced_to'] = (df['oavg_to']+df['avg_forced_to'])/2\n",
    "df['off_dev_to'] = df['turnovers'] - df['comp_to']\n",
    "df['def_dev_to'] = df['oturnovers'] - df['comp_forced_to']\n",
    "df['avg_off_dev_to'] = df['off_dev_to'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_def_dev_to'] = df['def_dev_to'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_opp_off_to_dev'] = df['off_dev_to'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_opp_def_to_dev'] = df['def_dev_to'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "\n",
    "df['ftatt_per_game'] = df['ftatt'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['opp_def_ftatt_per_game'] = df['oftatt'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['opp_off_ftatt_per_game'] = df['ftatt'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['def_ftatt_per_game'] = df['oftatt'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_ft_comp'] = df[['ftatt_per_game', 'opp_def_ftatt_per_game']].mean(axis=1)\n",
    "df['avg_def_ft_comp'] = df[['opp_off_ftatt_per_game','def_ftatt_per_game']].mean(axis=1)\n",
    "df['off_dev_ft'] = df['ftatt'] - df['avg_ft_comp']\n",
    "df['def_dev_ft'] = df['oftatt'] - df['avg_def_ft_comp']\n",
    "df['avg_off_ft_dev'] = df['off_dev_ft'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_def_ft_dev'] = df['def_dev_ft'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_off_ft_dev'] = df['off_dev_ft'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_def_ft_dev'] = df['def_dev_ft'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['ftpercentage'] = df['ft'] / df['ftatt']\n",
    "df['avgftpercentage'] = df['ftpercentage'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "\n",
    "df['2sMade'] = df['fg'] - df['fg3']\n",
    "df['2sAtt'] = df['fgatt'] - df['fg3att']\n",
    "df['o2sMade'] = df['ofg'] - df['ofg3']\n",
    "df['o2sAtt'] = df['ofgatt'] - df['ofg3att']\n",
    "df['percent3s'] = df['fg3att'] / df['fgatt']\n",
    "# df['fgp'] = df['2sMade'] / df['2sAtt']\n",
    "df['avg_2s_game'] = df['2sMade'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['2sAtt'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['odef_avg_2s_game'] = df['o2sMade'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['o2sAtt'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['oavg_2s_game'] = df['2sMade'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['2sAtt'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['def_2s_game'] = df['o2sMade'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['o2sAtt'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_fg_comp'] = (df['avg_2s_game'] + df['odef_avg_2s_game'])/2\n",
    "df['avg_def_fg_comp'] = (df['oavg_2s_game'] + df['def_2s_game'])/2\n",
    "df['off_dev_fg'] = (df['2sMade'] / df['2sAtt']) - df['avg_fg_comp']\n",
    "df['def_dev_fg'] = (df['o2sMade'] / df['o2sAtt']) - df['avg_def_fg_comp']\n",
    "\n",
    "df['fg3_game'] = df['fg3']/df['fg3att']\n",
    "df['ofg3_game'] = df['ofg3']/df['ofg3att']\n",
    "df['avg_3_game'] = df['fg3'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['fg3att'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['odef_avg_3_game'] = df['ofg3'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['ofg3att'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['o_avg_3_game'] = df['fg3'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['fg3att'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['def_avg_3_game'] = df['ofg3'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['ofg3att'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_3_comp'] = (df['avg_3_game'] + df['odef_avg_3_game'])/2\n",
    "df['avg_def_3_comp'] = (df['o_avg_3_game'] + df['def_avg_3_game'])/2\n",
    "df['off_dev_fg3'] = (df['fg3']/df['fg3att'])-df['avg_3_comp']\n",
    "df['def_dev_fg3'] = (df['ofg3']/df['ofg3att'])-df['avg_def_3_comp']\n",
    "\n",
    "df['missedshots'] = df['fgatt'] - df['fg']\n",
    "df['omissedshots'] = df['ofgatt'] - df['ofg']\n",
    "df['offrebound_percent'] = df['offrebounds']/df['missedshots']\n",
    "df['ooffrebound_percent'] = df['ooffrebounds']/df['omissedshots']\n",
    "df['offrebound_percent'] = df['offrebounds'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['missedshots'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['opp_def_offrebound_percent'] = df['ooffrebounds'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['omissedshots'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['def_offrebound_percent'] = df['ooffrebounds'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))/df['omissedshots'].groupby(df['team']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['ooffrebound_percent'] = df['offrebounds'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))/df['missedshots'].groupby(df['opp']).apply(lambda x: pd.expanding_mean(x))\n",
    "df['avg_off_opp_def'] = (df['offrebound_percent'] + df['opp_def_offrebound_percent'])/2\n",
    "df['avg_def_opp_off'] = (df['def_offrebound_percent'] + df['ooffrebound_percent'])/2\n",
    "df['off_rebound_dev'] = (df['offrebounds']/df['missedshots']) - df['avg_off_opp_def']\n",
    "df['opp_def_off_rebound_dev'] = (df['ooffrebounds']/df['omissedshots']) - df['avg_def_opp_off']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "class NBA(object):\n",
    "\n",
    "    def __init__(self, team, opp, totalshots_before_offreb=None, proj_fg_percentage=None, \n",
    "                 proj_fg3_percentage=None, proj_fg3=None, proj_fg=None, proj_ftatt=None,\n",
    "                 ft_percentage=None, proj_poss=None, proj_to=None, proj_fg3att=None,\n",
    "                 proj_fgatt=None, proj_offreb=None, fg_from_offreb=None, proj_ft=None,\n",
    "                 rolling=False, side=False, method='mean'):\n",
    "        self.team = team\n",
    "        self.opp = opp\n",
    "        self.rolling = rolling\n",
    "        self.side = side\n",
    "        self.method = method\n",
    "        self.proj_ftatt = NBA.get_proj_ftatt(self, rolling=rolling, side=side, method=method)\n",
    "        self.ft_percentage = NBA.get_ft_percentage(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_poss = NBA.get_proj_poss(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_to = NBA.get_proj_to(self, rolling=rolling, side=side, method=method)\n",
    "        self.totalshots_before_offreb = NBA.total_shots_before_offrebounds(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fg_percentage = NBA.get_proj_fg_percentage(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fgatt = NBA.get_proj_fgatt(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fg3att = NBA.get_proj_fg3att(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fg3_percentage = NBA.get_proj_fg3_percentage(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fg3 = NBA.get_proj_fg3(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_fg = NBA.get_proj_fg(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_offreb = NBA.get_proj_offrebound(self, rolling=rolling, side=side, method=method)\n",
    "        self.fg_from_offreb = NBA.get_proj_fg_from_offrebounds(self, rolling=rolling, side=side, method=method)\n",
    "        self.proj_ft = NBA.get_proj_ft(self, rolling=rolling, method=method)\n",
    "\n",
    "    # projected possessions\n",
    "    def get_proj_poss(self, rolling=False, side=False, method='mean'):\n",
    "        avg_poss = get_mean(self.team, 'possessions', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        oavg_poss = get_mean(self.opp, 'possessions', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        comp_poss = (avg_poss + oavg_poss)/2\n",
    "        avg_poss_dev = get_mean(self.team, 'poss_dev', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        oavg_poss_dev = get_mean(self.opp, 'poss_dev', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        poss_impact = avg_poss_dev + oavg_poss_dev\n",
    "        proj_poss = poss_impact + comp_poss\n",
    "        return proj_poss\n",
    "\n",
    "    # projected turnovers\n",
    "    def get_proj_to(self, rolling=False, side=False, method='mean'):\n",
    "        comp_to = get_mean(self.team, 'comp_to', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_off_to_dev = get_mean(self.team, 'avg_off_dev_to', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_def_to_dev = get_mean(self.team, 'avg_def_dev_to', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_opp_off_dev_to = get_mean(self.opp, 'avg_off_dev_to', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        avg_opp_def_dev_to = get_mean(self.opp, 'avg_def_dev_to', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        to_impact = avg_off_to_dev + avg_opp_def_dev_to\n",
    "        proj_to = comp_to + to_impact\n",
    "        return proj_to\n",
    "\n",
    "    def get_proj_ftatt(self, rolling=False, side=False, method='mean'):\n",
    "        avg_off_ftatt_dev = get_mean(self.team, 'off_dev_ft', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_def_ftatt_dev = get_mean(self.team, 'def_dev_ft', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        oavg_off_ftatt_dev = get_mean(self.opp, 'off_dev_ft', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        oavg_def_ftatt_dev = get_mean(self.opp, 'def_dev_ft', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        \n",
    "        avg_ft_pergame = get_mean(self.team, 'ftatt', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        oavg_def_ft_pergame = get_mean(self.opp, 'ftatt', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        \n",
    "        comp_ftatt = (avg_ft_pergame + oavg_def_ft_pergame)/2\n",
    "        ft_impact = (avg_off_ftatt_dev + oavg_def_ftatt_dev)\n",
    "        proj_ftatt = comp_ftatt + ft_impact\n",
    "        return proj_ftatt\n",
    "    \n",
    "    def get_ft_percentage(self, rolling=False, side=False, method='mean'):\n",
    "        ftp = df[df.team==self.team]['ftpercentage'].mean()\n",
    "        return ftp\n",
    "    \n",
    "    def get_proj_ft(self, rolling=False, side=False, method='mean'):\n",
    "        ft_made = self.proj_ftatt * self.ft_percentage\n",
    "        return ft_made\n",
    "\n",
    "\n",
    "    def total_shots_before_offrebounds(self, rolling=False, side=False, method='mean'):\n",
    "        tsbor = self.proj_poss - self.proj_to - (0.475*self.proj_ftatt)\n",
    "        return tsbor\n",
    "    \n",
    "    def get_proj_fg_percentage(self, rolling=False, side=False, method='mean'):\n",
    "        avg_off_dev_fg = get_mean(self.team, 'off_dev_fg', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_def_dev_fg = get_mean(self.opp, 'def_dev_fg', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        fg_impact = avg_off_dev_fg + avg_def_dev_fg\n",
    "        proj_fg_percentage = df[df.team==self.team]['avg_fg_comp'].mean() + fg_impact\n",
    "        return proj_fg_percentage\n",
    "        \n",
    "    def get_proj_fg3_percentage(self, rolling=False, side=False, method='mean'):\n",
    "        fg3_game = get_mean(self.team, 'avg_3_game', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        odef_fg3_game = get_mean(self.opp, 'odef_avg_3_game', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        opp_off_fg3_game = get_mean(self.opp, 'avg_3_game', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        opp_fg3_game = get_mean(self.team, 'odef_avg_3_game', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        fg3_comp = (fg3_game + odef_fg3_game)/2\n",
    "        def_fg3_comp = (opp_off_fg3_game + opp_fg3_game)/2\n",
    "        avg_off_fg3_dev = get_mean(self.team, 'off_dev_fg3', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_def_fg3_dev = get_mean(self.team, 'def_dev_fg3', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        oavg_off_fg3_dev = get_mean(self.opp, 'off_dev_fg3', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        oavg_def_fg3_dev = get_mean(self.opp, 'def_dev_fg3', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        fg3_impact = (avg_off_fg3_dev + oavg_def_fg3_dev)\n",
    "        proj_fg3_percentage = fg3_comp + fg3_impact\n",
    "        return proj_fg3_percentage\n",
    "    \n",
    "    def get_proj_fg3att(self, rolling=False, side=False, method='mean'):\n",
    "        percent3s = get_mean(self.team, 'percent3s', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        fg3att = self.totalshots_before_offreb * percent3s\n",
    "        return fg3att\n",
    "    \n",
    "    def get_proj_fgatt(self, rolling=False, side=False, method='mean'):\n",
    "        percent3s = get_mean(self.team, 'percent3s', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        fgatt = (1 - percent3s) * self.totalshots_before_offreb\n",
    "        return fgatt\n",
    "    \n",
    "    def get_proj_fg3(self, rolling=False, side=False, method='mean'):\n",
    "        proj_fg3 = self.proj_fg3_percentage * self.proj_fg3att\n",
    "        return proj_fg3\n",
    "    \n",
    "    def get_proj_fg(self, rolling=False, side=False, method='mean'):\n",
    "        proj_fg = self.proj_fg_percentage * self.proj_fgatt\n",
    "        return proj_fg\n",
    "\n",
    "    def get_proj_offrebound(self, rolling=False, side=False, method='mean'):\n",
    "        offreb_percent = get_mean(self.team, 'offrebound_percent', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        opp_def_offrebound_percent = get_mean(self.opp, 'ooffrebound_percent', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        def_offreb_percent = get_mean(self.team, 'def_offrebound_percent', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        ooffreb_percent = get_mean(self.opp, 'ooffrebound_percent', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        \n",
    "        avg_offreb_dev = get_mean(self.team, 'off_rebound_dev', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        avg_def_offreb_dev = get_mean(self.team, 'opp_def_off_rebound_dev', rolling=rolling, side=side, method=method, location=\"home\")\n",
    "        opp_avg_offreb_def = get_mean(self.opp, 'off_rebound_dev', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        opp_avg_def_offreb_dev = get_mean(self.opp, 'opp_def_off_rebound_dev', rolling=rolling, side=side, method=method, location=\"away\")\n",
    "        \n",
    "        offreb_impact = avg_offreb_dev + opp_avg_def_offreb_dev\n",
    "        proj_offreb_percent = get_mean(self.team, 'avg_off_opp_def', rolling=rolling, side=side, method=method, location=\"home\") + offreb_impact\n",
    "        \n",
    "        proj_missed_shots = self.totalshots_before_offreb - (self.proj_fg3 + self.proj_fg)\n",
    "        proj_offreb = proj_offreb_percent * proj_missed_shots\n",
    "        return proj_offreb\n",
    "    \n",
    "    def get_proj_fg_from_offrebounds(self, rolling=False, side=False, method='mean'):\n",
    "        fg_from_offreb = self.proj_fg_percentage * self.proj_offreb\n",
    "        return fg_from_offreb\n",
    "    \n",
    "\n",
    "    def get_proj_score(self, rolling=False, side=False, method='mean'):\n",
    "        proj_score = (self.fg_from_offreb*2) + (self.proj_fg*2) + (self.proj_fg3*3) + self.proj_ft\n",
    "        return proj_score\n",
    "    \n",
    "def get_mean(team, stat, rolling=False, side=False, location=None, method='mean'):\n",
    "    \n",
    "    def montecarlo(floor, ceiling, bias):\n",
    "        mc = random.uniform(floor, ceiling) + bias\n",
    "        return mc\n",
    "    \n",
    "    def middle(method='mean'):\n",
    "        if rolling:\n",
    "            mean =  pd.rolling_mean(df[df.team==team][stat], 15).tail(1) if method == 'mean' else pd.rolling_median(df[df.team==team][stat], 15).tail(1)\n",
    "        elif side:\n",
    "            mean = df[(df['team']==team)&(df['side']==location)][stat].mean() if method == 'mean' else df[(df['team']==team)&(df['side']==location)][stat].median()\n",
    "        else:\n",
    "            mean = df[df['team']==team][stat].mean() if method == 'mean' else df[df['team']==team][stat].median()\n",
    "        return mean\n",
    "    \n",
    "    mean = middle(method=method)\n",
    "    floor = df[df.team==team][stat].min()\n",
    "    ceiling = df[df.team==team][stat].max()\n",
    "    std = df[df.team==team][stat].std()\n",
    "    bias = (mean - (floor + ceiling)/2)\n",
    "    \n",
    "    results = []\n",
    "    x = 0\n",
    "    while x < 100:\n",
    "        result = montecarlo(floor, ceiling, bias)\n",
    "        results.append(result)\n",
    "        x += 1\n",
    "    mean = sum(results)/len(results)\n",
    "        \n",
    "    return float(mean)\n",
    "\n",
    "\n",
    "def get_spread(team, opp, rolling=False, side=False, method='mean'):\n",
    "    denom = len(filter(None, [1, rolling, side]))\n",
    "    team_master = NBA(team, opp).get_proj_score(method=method, rolling=False, side=False)\n",
    "    team_last15 = NBA(team, opp).get_proj_score(rolling=True, side=False, method=method) if rolling else 0\n",
    "    team_location = NBA(team, opp).get_proj_score(side=True, rolling=False, method=method) if side else 0\n",
    "    team_score = round( 2 * ((team_master + team_last15 + team_location)/denom) ) / 2\n",
    "    opp_master = NBA(opp, team).get_proj_score(method=method, rolling=False, side=False)\n",
    "    opp_last15 = NBA(opp, team).get_proj_score(rolling=True, side=False, method=method) if rolling else 0\n",
    "    opp_location = NBA(opp, team).get_proj_score(side=True, rolling=False, method=method) if side else 0\n",
    "    opp_score = round( 2 * ((opp_master + opp_last15 + opp_location)/denom) ) / 2\n",
    "    winner = team if team_score > opp_score else opp\n",
    "    spread = -abs(team_score - opp_score)\n",
    "    return [round(team_score), round(opp_score), opp, team, winner, spread]\n",
    "\n",
    "def convert_nbacode_to_cbscode(nbacode):\n",
    "    cbscodes = ['ATL', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GS', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NY', 'OKC', 'ORL', 'PHI', 'PHO', 'POR', 'SA', 'SAC', 'TOR', 'UTA', 'WAS', 'BKN', 'NO']\n",
    "    nbacodes = ['ATL', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GSW','HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NYK','OKC', 'ORL', 'PHI', 'PHX', 'POR', 'SAS','SAC', 'TOR', 'UTA', 'WAS', 'BKN', 'NOP']\n",
    "    for n,code in enumerate(nbacodes):\n",
    "        if code == nbacode:\n",
    "            nbacode = cbscodes[n]\n",
    "    return nbacode\n",
    "\n",
    "def get_todays_games():\n",
    "    today = datetime.now()\n",
    "    today = today.strftime('%Y-%m-%d')\n",
    "    print today\n",
    "    date = today#datetime.now()\n",
    "    date = datetime.strptime(today, \"%Y-%m-%d\")\n",
    "    datestr = date.strftime('%Y%m%d')\n",
    "    datecsv = date.strftime('%d/%m/%Y')\n",
    "    url = \"http://data.nba.com/data/1h/json/cms/noseason/scoreboard/\"+datestr+\"/games.json#TZHBTsMwDIbP5SlMhdRWjIQhDmjLKiHgwoFOggvHLEnXVG1aEldQTXt3mnQTnGI7v7/Yf9jlc/H08bl9gQrbJr9g8xGxSnE5nRFrFXIQFbdO4SYesLx5iMOFw7FRPop2nRzh4KOo5XavzQpu1z49eh09Cxk9QZlvmBnC6h7BWbGJK8TerSgV0tSOiKYbZNlwq4joWspr/kMbvXO0/hqUHekdWZLlKSGtNqR2cT69FYD/2Dn4QSiFRyGUc4CVgtf34g26Xa0EwrfGCmJfKUIh9vKrVHZiaJXBjNhp5jEtByNQdybN4BCIkybxayQZ8ZalCeutyhO4DnTi0Gqz1+WY/qEXMBipSm2UXMB9NkkTRkNXtg7MY7aeDTsvwejs1OSc/5Zf\"\n",
    "    print url\n",
    "    r = requests.get(url)\n",
    "    response = json.loads(r.content)\n",
    "    games = response['sports_content']['games']['game']\n",
    "\n",
    "    gamespread = []\n",
    "    for game in games:\n",
    "        date = today\n",
    "        home = game['home']['city'] + \" \" + game['home']['nickname']\n",
    "        away = game['visitor']['city'] + \" \" + game['visitor']['nickname']\n",
    "        homecode = game['home']['abbreviation']\n",
    "        awaycode = game['visitor']['abbreviation']\n",
    "        homecode = convert_nbacode_to_cbscode(homecode)\n",
    "        awaycode = convert_nbacode_to_cbscode(awaycode)\n",
    "        gamespread.append([homecode, awaycode, date])\n",
    "    return gamespread\n",
    "\n",
    "def run_simulation(method='mean'):\n",
    "    spreads = []\n",
    "    x = 0\n",
    "    while x < 100:\n",
    "        projectedspreads = []\n",
    "        for team, opp, date in games:\n",
    "            s = get_spread(team, opp)\n",
    "            projectedspreads.append(s + [date])\n",
    "        spreads.append(projectedspreads)\n",
    "        x+=1\n",
    "        \n",
    "    sdf = pd.DataFrame()\n",
    "    sdf = sdf.append([item for sublist in spreads for item in sublist])\n",
    "    sdf.columns = ['homescore', 'awayscore', 'away','home','projectedwinner','spread', 'dateof']\n",
    "    sdf['ou'] = sdf['homescore'] + sdf['awayscore']\n",
    "    matchups = sdf[['home', 'away', 'projectedwinner']].drop_duplicates().values.tolist()\n",
    "\n",
    "    results = []\n",
    "    for home, away, projwinner in matchups:\n",
    "        homescore = float(sdf[sdf.home==home]['homescore'].head(1))\n",
    "        awayscore = float(sdf[sdf.home==home]['awayscore'].head(1))\n",
    "        ou = float(sdf[(sdf.home==home)&(sdf.away==away)]['ou'].head(1))\n",
    "        home_pwin = len(sdf[sdf.projectedwinner==home])\n",
    "        away_pwin = len(sdf[sdf.projectedwinner==away])\n",
    "        proj_winner = away if away_pwin > home_pwin else home\n",
    "        pwinning = away_pwin if away_pwin > home_pwin else home_pwin\n",
    "        spread = sdf[sdf.projectedwinner==away].spread.median() if away_pwin > home_pwin else sdf[sdf.projectedwinner==home].spread.median()\n",
    "        spread = round( 2 * spread ) / 2\n",
    "        cover = len(sdf[ (sdf.spread<=spread) & (sdf.projectedwinner==proj_winner)])\n",
    "        ncover = len(sdf[ (sdf.spread>spread) & (sdf.projectedwinner==proj_winner)])\n",
    "        pcover = round(float(cover)/(cover+ncover)*100, 2)\n",
    "\n",
    "        results.append([home, away, homescore, awayscore, proj_winner, spread, pcover, pwinning, ou, method, date])\n",
    "\n",
    "    spreads = pd.DataFrame(results)\n",
    "    spreads.columns = ['home', 'away', 'homescore', 'awayscore', 'projectedwinner', 'spread', 'pcover', 'pwin', 'overunder', 'method', 'dateof']\n",
    "    spreads = spreads.drop_duplicates(subset=['home', 'away', 'projectedwinner', 'spread', 'pcover', 'pwin'])\n",
    "    # spreads.to_sql('nbaspreads', con=engine, if_exists='append', index=True)\n",
    "    return spreads"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## cluster teams for last15. some teams play better teams during that time and vice versa"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2016-03-05\n",
      "http://data.nba.com/data/1h/json/cms/noseason/scoreboard/20160305/games.json#TZHBTsMwDIbP5SlMhdRWjIQhDmjLKiHgwoFOggvHLEnXVG1aEldQTXt3mnQTnGI7v7/Yf9jlc/H08bl9gQrbJr9g8xGxSnE5nRFrFXIQFbdO4SYesLx5iMOFw7FRPop2nRzh4KOo5XavzQpu1z49eh09Cxk9QZlvmBnC6h7BWbGJK8TerSgV0tSOiKYbZNlwq4joWspr/kMbvXO0/hqUHekdWZLlKSGtNqR2cT69FYD/2Dn4QSiFRyGUc4CVgtf34g26Xa0EwrfGCmJfKUIh9vKrVHZiaJXBjNhp5jEtByNQdybN4BCIkybxayQZ8ZalCeutyhO4DnTi0Gqz1+WY/qEXMBipSm2UXMB9NkkTRkNXtg7MY7aeDTsvwejs1OSc/5Zf\n"
     ]
    }
   ],
   "source": [
    "games = get_todays_games()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 506,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# spreadsmedian = run_simulation(method='median')\n",
    "spreadsmean = run_simulation(method='mean')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 508,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>vegas spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>67.19</td>\n",
       "      <td>64</td>\n",
       "      <td>u215.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-10.0</td>\n",
       "      <td>36.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u208.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>84.75</td>\n",
       "      <td>59</td>\n",
       "      <td>u217.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>97.67</td>\n",
       "      <td>43</td>\n",
       "      <td>u193.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>HOU</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>100.00</td>\n",
       "      <td>42</td>\n",
       "      <td>u222.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>52.50</td>\n",
       "      <td>80</td>\n",
       "      <td>u215-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>IND</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>68.33</td>\n",
       "      <td>60</td>\n",
       "      <td>u206-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>56.79</td>\n",
       "      <td>81</td>\n",
       "      <td>u219.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>SA</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>51.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u201-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-8.5</td>\n",
       "      <td>89.01</td>\n",
       "      <td>91</td>\n",
       "      <td>u212.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>16.67</td>\n",
       "      <td>24</td>\n",
       "      <td>u218-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   home away projectedwinner  vegas spread  pcover  pwin    overunder method\n",
       "0   ORL  CHI             ORL          -4.5   67.19    64  u215.5-110    mean\n",
       "1   PHI  CHA             CHA         -10.0   36.00   100  u208.5-110    mean\n",
       "2   BOS  POR             BOS          -6.0   84.75    59  u217.5-110    mean\n",
       "3   TOR  UTA             TOR          -5.0   97.67    43  u193.5-110    mean\n",
       "4   HOU   NO             HOU          -6.0  100.00    42  u222.5-110    mean\n",
       "5   MEM  SAC             MEM          -3.5   52.50    80    u215-110    mean\n",
       "6   MIL  IND             IND          -3.0   68.33    60    u206-110    mean\n",
       "7   MIN  WAS             WAS          -3.5   56.79    81  u219.5-110    mean\n",
       "8    SA  DET              SA         -11.0   51.00   100    u201-110    mean\n",
       "9   DEN  LAL             DEN          -8.5   89.01    91  u212.5-110    mean\n",
       "10  LAC  OKC             LAC          -1.0   16.67    24    u218-110    mean"
      ]
     },
     "execution_count": 508,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vspreads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>projwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>homeou</th>\n",
       "      <th>dateof</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CHI</td>\n",
       "      <td>HOU</td>\n",
       "      <td>HOU</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>u215.5-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CLE</td>\n",
       "      <td>BOS</td>\n",
       "      <td>CLE</td>\n",
       "      <td>-7</td>\n",
       "      <td>u210.5-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>LAC</td>\n",
       "      <td>ATL</td>\n",
       "      <td>LAC</td>\n",
       "      <td>-5</td>\n",
       "      <td>u201-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>MIN</td>\n",
       "      <td>BKN</td>\n",
       "      <td>MIN</td>\n",
       "      <td>-5</td>\n",
       "      <td>u213.5-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NO</td>\n",
       "      <td>UTA</td>\n",
       "      <td>NO</td>\n",
       "      <td>-1</td>\n",
       "      <td>u198-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>NY</td>\n",
       "      <td>DET</td>\n",
       "      <td>DET</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>u199.5-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>SA</td>\n",
       "      <td>SAC</td>\n",
       "      <td>SA</td>\n",
       "      <td>-12.5</td>\n",
       "      <td>u208.5-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>WAS</td>\n",
       "      <td>IND</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>u208-110</td>\n",
       "      <td>2016-03-05</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  home away projwinner  spread       homeou      dateof\n",
       "0  CHI  HOU        HOU   -1.5   u215.5-110   2016-03-05\n",
       "1  CLE  BOS        CLE     -7   u210.5-110   2016-03-05\n",
       "2  LAC  ATL        LAC     -5     u201-110   2016-03-05\n",
       "3  MIN  BKN        MIN     -5   u213.5-110   2016-03-05\n",
       "4   NO  UTA         NO     -1     u198-110   2016-03-05\n",
       "5   NY  DET        DET   -5.5   u199.5-110   2016-03-05\n",
       "6   SA  SAC         SA  -12.5   u208.5-110   2016-03-05\n",
       "7  WAS  IND        WAS   -2.5     u208-110   2016-03-05"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "today = datetime.now()\n",
    "date = today.strftime('%Y-%m-%d')\n",
    "sql1 = \"\"\"select distinct on (home, away) home, away, projwinner, spread, homeou, dateof::date \n",
    "            from nbaodds1516 \n",
    "            where dateof >= '{date}'\n",
    "            order by home, away, dateof::timestamp desc;\"\"\".format(date=date)\n",
    "\n",
    "oddsdf = pd.read_sql_query(sql1, engine)\n",
    "oddsdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sql2 = \"\"\"select *\n",
    "            from nbaspreads1516\n",
    "            where dateof = '{date}'\n",
    "            and method = 'median';\"\"\".format(date=date)\n",
    "medianspreadsdf = pd.read_sql_query(sql2, engine)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>away</th>\n",
       "      <th>awayscore</th>\n",
       "      <th>dateof</th>\n",
       "      <th>home</th>\n",
       "      <th>homeou</th>\n",
       "      <th>homescore</th>\n",
       "      <th>index</th>\n",
       "      <th>method</th>\n",
       "      <th>notes</th>\n",
       "      <th>overunder</th>\n",
       "      <th>pcover</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>projwinner</th>\n",
       "      <th>pwin</th>\n",
       "      <th>spread</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>BOS</td>\n",
       "      <td>104</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>CLE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>107</td>\n",
       "      <td>0</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>211</td>\n",
       "      <td>51.67</td>\n",
       "      <td>CLE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>60</td>\n",
       "      <td>-4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>DET</td>\n",
       "      <td>95</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>NY</td>\n",
       "      <td>NaN</td>\n",
       "      <td>98</td>\n",
       "      <td>1</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>193</td>\n",
       "      <td>56.45</td>\n",
       "      <td>DET</td>\n",
       "      <td>NaN</td>\n",
       "      <td>62</td>\n",
       "      <td>-2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>IND</td>\n",
       "      <td>101</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>WAS</td>\n",
       "      <td>NaN</td>\n",
       "      <td>98</td>\n",
       "      <td>2</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>199</td>\n",
       "      <td>54.17</td>\n",
       "      <td>IND</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72</td>\n",
       "      <td>-3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>UTA</td>\n",
       "      <td>99</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>NO</td>\n",
       "      <td>NaN</td>\n",
       "      <td>98</td>\n",
       "      <td>3</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>197</td>\n",
       "      <td>62.50</td>\n",
       "      <td>UTA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>80</td>\n",
       "      <td>-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>BKN</td>\n",
       "      <td>102</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>MIN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>102</td>\n",
       "      <td>4</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>204</td>\n",
       "      <td>54.10</td>\n",
       "      <td>MIN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>61</td>\n",
       "      <td>-2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>HOU</td>\n",
       "      <td>104</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>CHI</td>\n",
       "      <td>NaN</td>\n",
       "      <td>105</td>\n",
       "      <td>5</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>209</td>\n",
       "      <td>52.00</td>\n",
       "      <td>HOU</td>\n",
       "      <td>NaN</td>\n",
       "      <td>75</td>\n",
       "      <td>-3.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>SAC</td>\n",
       "      <td>98</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>SA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>105</td>\n",
       "      <td>6</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>203</td>\n",
       "      <td>56.00</td>\n",
       "      <td>SA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>100</td>\n",
       "      <td>-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>ATL</td>\n",
       "      <td>102</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>LAC</td>\n",
       "      <td>NaN</td>\n",
       "      <td>100</td>\n",
       "      <td>7</td>\n",
       "      <td>median</td>\n",
       "      <td>None</td>\n",
       "      <td>202</td>\n",
       "      <td>50.98</td>\n",
       "      <td>ATL</td>\n",
       "      <td>NaN</td>\n",
       "      <td>51</td>\n",
       "      <td>-3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>CHI</td>\n",
       "      <td>u215.5-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HOU</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>BOS</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>CLE</td>\n",
       "      <td>u210.5-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CLE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ATL</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>LAC</td>\n",
       "      <td>u201-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LAC</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>BKN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>MIN</td>\n",
       "      <td>u213.5-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>MIN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>UTA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>NO</td>\n",
       "      <td>u198-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NO</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>DET</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>NY</td>\n",
       "      <td>u199.5-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>DET</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>SAC</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>SA</td>\n",
       "      <td>u208.5-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-12.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>IND</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2016-03-05</td>\n",
       "      <td>WAS</td>\n",
       "      <td>u208-110</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  away  awayscore      dateof home       homeou  homescore  index  method  \\\n",
       "0  BOS        104  2016-03-05  CLE          NaN        107      0  median   \n",
       "1  DET         95  2016-03-05   NY          NaN         98      1  median   \n",
       "2  IND        101  2016-03-05  WAS          NaN         98      2  median   \n",
       "3  UTA         99  2016-03-05   NO          NaN         98      3  median   \n",
       "4  BKN        102  2016-03-05  MIN          NaN        102      4  median   \n",
       "5  HOU        104  2016-03-05  CHI          NaN        105      5  median   \n",
       "6  SAC         98  2016-03-05   SA          NaN        105      6  median   \n",
       "7  ATL        102  2016-03-05  LAC          NaN        100      7  median   \n",
       "0  HOU        NaN  2016-03-05  CHI  u215.5-110         NaN    NaN     NaN   \n",
       "1  BOS        NaN  2016-03-05  CLE  u210.5-110         NaN    NaN     NaN   \n",
       "2  ATL        NaN  2016-03-05  LAC    u201-110         NaN    NaN     NaN   \n",
       "3  BKN        NaN  2016-03-05  MIN  u213.5-110         NaN    NaN     NaN   \n",
       "4  UTA        NaN  2016-03-05   NO    u198-110         NaN    NaN     NaN   \n",
       "5  DET        NaN  2016-03-05   NY  u199.5-110         NaN    NaN     NaN   \n",
       "6  SAC        NaN  2016-03-05   SA  u208.5-110         NaN    NaN     NaN   \n",
       "7  IND        NaN  2016-03-05  WAS    u208-110         NaN    NaN     NaN   \n",
       "\n",
       "  notes  overunder  pcover projectedwinner projwinner  pwin  spread  \n",
       "0  None        211   51.67             CLE        NaN    60      -4  \n",
       "1  None        193   56.45             DET        NaN    62    -2.5  \n",
       "2  None        199   54.17             IND        NaN    72      -3  \n",
       "3  None        197   62.50             UTA        NaN    80      -2  \n",
       "4  None        204   54.10             MIN        NaN    61    -2.5  \n",
       "5  None        209   52.00             HOU        NaN    75    -3.5  \n",
       "6  None        203   56.00              SA        NaN   100     -11  \n",
       "7  None        202   50.98             ATL        NaN    51      -3  \n",
       "0   NaN        NaN     NaN             NaN        HOU   NaN   -1.5   \n",
       "1   NaN        NaN     NaN             NaN        CLE   NaN     -7   \n",
       "2   NaN        NaN     NaN             NaN        LAC   NaN     -5   \n",
       "3   NaN        NaN     NaN             NaN        MIN   NaN     -5   \n",
       "4   NaN        NaN     NaN             NaN         NO   NaN     -1   \n",
       "5   NaN        NaN     NaN             NaN        DET   NaN   -5.5   \n",
       "6   NaN        NaN     NaN             NaN         SA   NaN  -12.5   \n",
       "7   NaN        NaN     NaN             NaN        WAS   NaN   -2.5   "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "medianspreadsdf.append(oddsdf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 493,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>homescore</th>\n",
       "      <th>awayscore</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "      <th>dateof</th>\n",
       "      <th>notes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>97</td>\n",
       "      <td>105</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>55.74</td>\n",
       "      <td>61</td>\n",
       "      <td>202</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>93</td>\n",
       "      <td>110</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-11.5</td>\n",
       "      <td>50.00</td>\n",
       "      <td>100</td>\n",
       "      <td>203</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>100</td>\n",
       "      <td>107</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>50.00</td>\n",
       "      <td>62</td>\n",
       "      <td>207</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>91</td>\n",
       "      <td>94</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>50.98</td>\n",
       "      <td>51</td>\n",
       "      <td>185</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>109</td>\n",
       "      <td>106</td>\n",
       "      <td>NO</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>61.67</td>\n",
       "      <td>60</td>\n",
       "      <td>215</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>102</td>\n",
       "      <td>101</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>53.66</td>\n",
       "      <td>82</td>\n",
       "      <td>203</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>98</td>\n",
       "      <td>100</td>\n",
       "      <td>IND</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>55.74</td>\n",
       "      <td>61</td>\n",
       "      <td>198</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>100</td>\n",
       "      <td>102</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>64.79</td>\n",
       "      <td>71</td>\n",
       "      <td>202</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>8</td>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>99</td>\n",
       "      <td>95</td>\n",
       "      <td>SA</td>\n",
       "      <td>-10.5</td>\n",
       "      <td>54.00</td>\n",
       "      <td>100</td>\n",
       "      <td>194</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9</td>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>107</td>\n",
       "      <td>102</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>50.00</td>\n",
       "      <td>92</td>\n",
       "      <td>209</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>10</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>105</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>52.56</td>\n",
       "      <td>78</td>\n",
       "      <td>212</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    index home away  homescore  awayscore projectedwinner  spread  pcover  \\\n",
       "0       0  ORL  CHI         97        105             ORL    -3.5   55.74   \n",
       "1       1  PHI  CHA         93        110             CHA   -11.5   50.00   \n",
       "2       2  BOS  POR        100        107             BOS    -3.0   50.00   \n",
       "3       3  TOR  UTA         91         94             TOR    -2.0   50.98   \n",
       "4       4  HOU   NO        109        106              NO    -2.0   61.67   \n",
       "5       5  MEM  SAC        102        101             MEM    -3.5   53.66   \n",
       "6       6  MIL  IND         98        100             IND    -2.0   55.74   \n",
       "7       7  MIN  WAS        100        102             WAS    -3.5   64.79   \n",
       "8       8   SA  DET         99         95              SA   -10.5   54.00   \n",
       "9       9  DEN  LAL        107        102             DEN    -5.5   50.00   \n",
       "10     10  LAC  OKC        105        107             OKC    -3.0   52.56   \n",
       "\n",
       "    pwin  overunder method      dateof notes  \n",
       "0     61        202   mean  2016-03-02  None  \n",
       "1    100        203   mean  2016-03-02  None  \n",
       "2     62        207   mean  2016-03-02  None  \n",
       "3     51        185   mean  2016-03-02  None  \n",
       "4     60        215   mean  2016-03-02  None  \n",
       "5     82        203   mean  2016-03-02  None  \n",
       "6     61        198   mean  2016-03-02  None  \n",
       "7     71        202   mean  2016-03-02  None  \n",
       "8    100        194   mean  2016-03-02  None  \n",
       "9     92        209   mean  2016-03-02  None  \n",
       "10    78        212   mean  2016-03-02  None  "
      ]
     },
     "execution_count": 493,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meanspreadsdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 485,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>vegas spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>39.06</td>\n",
       "      <td>64</td>\n",
       "      <td>u215.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-10.0</td>\n",
       "      <td>71.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u208.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>20.34</td>\n",
       "      <td>59</td>\n",
       "      <td>u217.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>6.98</td>\n",
       "      <td>43</td>\n",
       "      <td>u193.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>HOU</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>4.76</td>\n",
       "      <td>42</td>\n",
       "      <td>u222.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>57.50</td>\n",
       "      <td>80</td>\n",
       "      <td>u215-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>IND</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>40.00</td>\n",
       "      <td>60</td>\n",
       "      <td>u206-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>49.38</td>\n",
       "      <td>81</td>\n",
       "      <td>u219.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>SA</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>55.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u201-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-8.5</td>\n",
       "      <td>16.48</td>\n",
       "      <td>91</td>\n",
       "      <td>u212.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>87.50</td>\n",
       "      <td>24</td>\n",
       "      <td>u218-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   home away projectedwinner  vegas spread  pcover  pwin    overunder method\n",
       "0   ORL  CHI             ORL          -4.5   39.06    64  u215.5-110    mean\n",
       "1   PHI  CHA             CHA         -10.0   71.00   100  u208.5-110    mean\n",
       "2   BOS  POR             BOS          -6.0   20.34    59  u217.5-110    mean\n",
       "3   TOR  UTA             TOR          -5.0    6.98    43  u193.5-110    mean\n",
       "4   HOU   NO             HOU          -6.0    4.76    42  u222.5-110    mean\n",
       "5   MEM  SAC             MEM          -3.5   57.50    80    u215-110    mean\n",
       "6   MIL  IND             IND          -3.0   40.00    60    u206-110    mean\n",
       "7   MIN  WAS             WAS          -3.5   49.38    81  u219.5-110    mean\n",
       "8    SA  DET              SA         -11.0   55.00   100    u201-110    mean\n",
       "9   DEN  LAL             DEN          -8.5   16.48    91  u212.5-110    mean\n",
       "10  LAC  OKC             LAC          -1.0   87.50    24    u218-110    mean"
      ]
     },
     "execution_count": 485,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vspreads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 457,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{u'away': u'CHI',\n",
       " u'awayou': u'o214.5-110 ',\n",
       " u'dateof': 1456934466962,\n",
       " u'home': u'ORL',\n",
       " u'homeou': u'u214.5-110 ',\n",
       " u'index': 0,\n",
       " u'projwinner': u'ORL',\n",
       " u'spread': u'-4.5 '}"
      ]
     },
     "execution_count": 457,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "json.loads(oddsdf.to_json(orient='index'))['0']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 466,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>homescore</th>\n",
       "      <th>awayscore</th>\n",
       "      <th>away</th>\n",
       "      <th>home</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>dateof</th>\n",
       "      <th>ou</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>101</td>\n",
       "      <td>104</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>105</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>104</td>\n",
       "      <td>110</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>76</th>\n",
       "      <td>104</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>87</th>\n",
       "      <td>105</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>103</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>109</th>\n",
       "      <td>103</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>120</th>\n",
       "      <td>102</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>104</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>103</td>\n",
       "      <td>104</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>103</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>164</th>\n",
       "      <td>104</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>100</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>186</th>\n",
       "      <td>108</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>217</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>219</th>\n",
       "      <td>106</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>230</th>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>241</th>\n",
       "      <td>105</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>252</th>\n",
       "      <td>105</td>\n",
       "      <td>110</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>263</th>\n",
       "      <td>107</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>274</th>\n",
       "      <td>100</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>285</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>103</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>307</th>\n",
       "      <td>105</td>\n",
       "      <td>110</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>318</th>\n",
       "      <td>102</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>329</th>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>340</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>351</th>\n",
       "      <td>100</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-7.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>106</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>373</th>\n",
       "      <td>103</td>\n",
       "      <td>111</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>670</th>\n",
       "      <td>106</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>681</th>\n",
       "      <td>105</td>\n",
       "      <td>112</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-7.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>217</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>703</th>\n",
       "      <td>108</td>\n",
       "      <td>113</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>221</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>714</th>\n",
       "      <td>97</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-11.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>725</th>\n",
       "      <td>103</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>736</th>\n",
       "      <td>103</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>758</th>\n",
       "      <td>105</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>769</th>\n",
       "      <td>104</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>780</th>\n",
       "      <td>102</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>802</th>\n",
       "      <td>106</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>824</th>\n",
       "      <td>102</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>835</th>\n",
       "      <td>101</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>846</th>\n",
       "      <td>103</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-6.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>868</th>\n",
       "      <td>107</td>\n",
       "      <td>112</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>105</td>\n",
       "      <td>113</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>912</th>\n",
       "      <td>105</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>923</th>\n",
       "      <td>104</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>945</th>\n",
       "      <td>104</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>956</th>\n",
       "      <td>105</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>967</th>\n",
       "      <td>104</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>978</th>\n",
       "      <td>110</td>\n",
       "      <td>112</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>989</th>\n",
       "      <td>107</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000</th>\n",
       "      <td>105</td>\n",
       "      <td>109</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1022</th>\n",
       "      <td>102</td>\n",
       "      <td>105</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1033</th>\n",
       "      <td>107</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1044</th>\n",
       "      <td>104</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1055</th>\n",
       "      <td>108</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1077</th>\n",
       "      <td>104</td>\n",
       "      <td>108</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1088</th>\n",
       "      <td>100</td>\n",
       "      <td>106</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1099</th>\n",
       "      <td>103</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>76 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      homescore  awayscore away home projectedwinner  spread      dateof   ou\n",
       "21          101        104  OKC  LAC             OKC    -3.0  2016-03-02  205\n",
       "32          105        105  OKC  LAC             OKC    -0.0  2016-03-02  210\n",
       "54          104        110  OKC  LAC             OKC    -6.0  2016-03-02  214\n",
       "76          104        106  OKC  LAC             OKC    -2.0  2016-03-02  210\n",
       "87          105        106  OKC  LAC             OKC    -1.0  2016-03-02  211\n",
       "98          103        108  OKC  LAC             OKC    -5.5  2016-03-02  211\n",
       "109         103        106  OKC  LAC             OKC    -3.0  2016-03-02  209\n",
       "120         102        105  OKC  LAC             OKC    -2.5  2016-03-02  207\n",
       "131         104        107  OKC  LAC             OKC    -3.0  2016-03-02  211\n",
       "142         103        104  OKC  LAC             OKC    -1.0  2016-03-02  207\n",
       "153         103        106  OKC  LAC             OKC    -3.0  2016-03-02  209\n",
       "164         104        108  OKC  LAC             OKC    -4.0  2016-03-02  212\n",
       "175         100        107  OKC  LAC             OKC    -6.5  2016-03-02  207\n",
       "186         108        109  OKC  LAC             OKC    -1.0  2016-03-02  217\n",
       "197         106        109  OKC  LAC             OKC    -2.5  2016-03-02  215\n",
       "219         106        108  OKC  LAC             OKC    -1.5  2016-03-02  214\n",
       "230         103        107  OKC  LAC             OKC    -4.0  2016-03-02  210\n",
       "241         105        109  OKC  LAC             OKC    -4.5  2016-03-02  214\n",
       "252         105        110  OKC  LAC             OKC    -4.5  2016-03-02  215\n",
       "263         107        107  OKC  LAC             OKC    -0.5  2016-03-02  214\n",
       "274         100        107  OKC  LAC             OKC    -7.0  2016-03-02  207\n",
       "285         106        109  OKC  LAC             OKC    -2.5  2016-03-02  215\n",
       "296         103        105  OKC  LAC             OKC    -2.0  2016-03-02  208\n",
       "307         105        110  OKC  LAC             OKC    -5.0  2016-03-02  215\n",
       "318         102        107  OKC  LAC             OKC    -5.0  2016-03-02  209\n",
       "329         103        107  OKC  LAC             OKC    -3.5  2016-03-02  210\n",
       "340         106        109  OKC  LAC             OKC    -3.0  2016-03-02  215\n",
       "351         100        108  OKC  LAC             OKC    -7.5  2016-03-02  208\n",
       "362         106        107  OKC  LAC             OKC    -0.5  2016-03-02  213\n",
       "373         103        111  OKC  LAC             OKC    -8.0  2016-03-02  214\n",
       "...         ...        ...  ...  ...             ...     ...         ...  ...\n",
       "670         106        108  OKC  LAC             OKC    -1.5  2016-03-02  214\n",
       "681         105        112  OKC  LAC             OKC    -7.5  2016-03-02  217\n",
       "703         108        113  OKC  LAC             OKC    -5.5  2016-03-02  221\n",
       "714          97        109  OKC  LAC             OKC   -11.5  2016-03-02  206\n",
       "725         103        109  OKC  LAC             OKC    -6.0  2016-03-02  212\n",
       "736         103        108  OKC  LAC             OKC    -5.5  2016-03-02  211\n",
       "758         105        108  OKC  LAC             OKC    -3.0  2016-03-02  213\n",
       "769         104        106  OKC  LAC             OKC    -2.5  2016-03-02  210\n",
       "780         102        108  OKC  LAC             OKC    -6.0  2016-03-02  210\n",
       "802         106        107  OKC  LAC             OKC    -1.5  2016-03-02  213\n",
       "824         102        108  OKC  LAC             OKC    -6.0  2016-03-02  210\n",
       "835         101        107  OKC  LAC             OKC    -6.0  2016-03-02  208\n",
       "846         103        109  OKC  LAC             OKC    -6.5  2016-03-02  212\n",
       "868         107        112  OKC  LAC             OKC    -4.5  2016-03-02  219\n",
       "879         105        113  OKC  LAC             OKC    -8.0  2016-03-02  218\n",
       "912         105        108  OKC  LAC             OKC    -3.0  2016-03-02  213\n",
       "923         104        105  OKC  LAC             OKC    -1.0  2016-03-02  209\n",
       "945         104        106  OKC  LAC             OKC    -2.0  2016-03-02  210\n",
       "956         105        105  OKC  LAC             OKC    -0.5  2016-03-02  210\n",
       "967         104        105  OKC  LAC             OKC    -1.0  2016-03-02  209\n",
       "978         110        112  OKC  LAC             OKC    -2.0  2016-03-02  222\n",
       "989         107        109  OKC  LAC             OKC    -1.5  2016-03-02  216\n",
       "1000        105        109  OKC  LAC             OKC    -4.0  2016-03-02  214\n",
       "1022        102        105  OKC  LAC             OKC    -3.5  2016-03-02  207\n",
       "1033        107        107  OKC  LAC             OKC    -0.0  2016-03-02  214\n",
       "1044        104        106  OKC  LAC             OKC    -1.5  2016-03-02  210\n",
       "1055        108        108  OKC  LAC             OKC    -0.0  2016-03-02  216\n",
       "1077        104        108  OKC  LAC             OKC    -4.5  2016-03-02  212\n",
       "1088        100        106  OKC  LAC             OKC    -5.5  2016-03-02  206\n",
       "1099        103        107  OKC  LAC             OKC    -4.0  2016-03-02  210\n",
       "\n",
       "[76 rows x 8 columns]"
      ]
     },
     "execution_count": 466,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sdf[sdf.projectedwinner=='OKC']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 516,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "25 39 ORL CHI ORL CHI\n",
      "71 29 PHI CHA CHA CHA\n",
      "12 47 BOS POR BOS POR\n",
      "3 40 TOR UTA TOR TOR\n",
      "2 40 HOU NO HOU NO\n",
      "46 34 MEM SAC MEM MEM\n",
      "24 36 MIL IND IND IND\n",
      "40 41 MIN WAS WAS WAS\n",
      "55 45 SA DET SA SA\n",
      "15 76 DEN LAL DEN DEN\n",
      "21 3 LAC OKC LAC LAC\n",
      "25 39 ORL CHI ORL ORL\n",
      "12 47 BOS POR BOS BOS\n",
      "3 40 TOR UTA TOR UTA\n",
      "2 40 HOU NO HOU HOU\n",
      "46 34 MEM SAC MEM SAC\n",
      "15 76 DEN LAL DEN LAL\n",
      "21 3 LAC OKC LAC OKC\n",
      "24 36 MIL IND IND MIL\n",
      "40 41 MIN WAS WAS MIN\n"
     ]
    }
   ],
   "source": [
    "sdf = pd.DataFrame()\n",
    "sdf = sdf.append([item for sublist in totals for item in sublist])\n",
    "sdf.columns = ['homescore', 'awayscore', 'away','home','projectedwinner','spread', 'dateof']\n",
    "sdf['ou'] = sdf['homescore'] + sdf['awayscore']\n",
    "matchups = sdf[['home', 'away', 'projectedwinner']].drop_duplicates().values.tolist()\n",
    "\n",
    "method = 'mean'\n",
    "results = []\n",
    "for home, away, projwinner in matchups:\n",
    "    homescore = float(sdf[sdf.home==home]['homescore'].tail(1))\n",
    "    awayscore = float(sdf[sdf.home==home]['awayscore'].tail(1))\n",
    "    ou = float(sdf[(sdf.home==home)&(sdf.away==away)]['ou'].tail(1))\n",
    "    home_pwin = len(sdf[sdf.projectedwinner==home])\n",
    "    away_pwin = len(sdf[sdf.projectedwinner==away])\n",
    "    proj_winner = away if away_pwin > home_pwin else home\n",
    "    pwinning = away_pwin if away_pwin > home_pwin else home_pwin\n",
    "    spread = sdf[sdf.projectedwinner==away].spread.median() if away_pwin > home_pwin else sdf[sdf.projectedwinner==home].spread.median()\n",
    "    spread = round( 2 * spread ) / 2\n",
    "    cover = len(sdf[ (sdf.spread<=spread) & (sdf.projectedwinner==proj_winner)])\n",
    "    ncover = len(sdf[ (sdf.spread>spread) & (sdf.projectedwinner==proj_winner)])\n",
    "    pcover = round(float(cover)/(cover+ncover)*100, 2)\n",
    "    \n",
    "    results.append([home, away, homescore, awayscore, proj_winner, spread, pcover, pwinning, ou, method])\n",
    "    \n",
    "ourspreads = pd.DataFrame(results)\n",
    "ourspreads.columns = ['home', 'away', 'homescore', 'awayscore', 'projectedwinner', 'spread', 'pcover', 'pwin', 'overunder', 'method']\n",
    "ourspreads = ourspreads.drop_duplicates(subset=['home', 'away', 'projectedwinner', 'spread', 'pcover', 'pwin'])\n",
    "# outspreads.to_sql('nbaspreads1516', con=engine, if_exists='append', index=True)\n",
    "\n",
    "# sdf = pd.DataFrame()\n",
    "# sdf = sdf.append([item for sublist in totals for item in sublist])\n",
    "# sdf.columns = ['homescore', 'awayscore', 'away','home','projectedwinner','spread', 'dateof']\n",
    "# sdf['ou'] = sdf['homescore'] + sdf['awayscore']\n",
    "# matchups = sdf[['home', 'away', 'projectedwinner']].drop_duplicates().values.tolist()\n",
    "\n",
    "method = 'mean'\n",
    "results = []\n",
    "for home, away, projwinner in matchups:\n",
    "    ou = oddsdf[(oddsdf.home==home)&(oddsdf.away==away)].homeou.values[0]\n",
    "    vegas_projwinner = oddsdf[(oddsdf.home==home)&(oddsdf.away==away)].projwinner.tail(1).values[0]\n",
    "    home_pwin = len(sdf[(sdf.projectedwinner==vegas_projwinner)&(vegas_projwinner==home)])\n",
    "    away_pwin = len(sdf[(sdf.projectedwinner==vegas_projwinner)&(vegas_projwinner==away)])\n",
    "    proj_winner = away if away_pwin > home_pwin else home\n",
    "    pwinning = away_pwin if away_pwin > home_pwin else home_pwin\n",
    "    vegas_spread = oddsdf[oddsdf.projwinner==home].spread.tail(1).values[0] if vegas_projwinner == home else oddsdf[oddsdf.projwinner==away].spread.tail(1).values[0]\n",
    "    vegas_spread = float(vegas_spread)\n",
    "    cover = len(sdf[ (sdf.spread<=vegas_spread) & (sdf.projectedwinner==vegas_projwinner)])\n",
    "    ncover = len(sdf[ (sdf.spread>vegas_spread) & (sdf.projectedwinner==vegas_projwinner)])\n",
    "    print cover, ncover, home, away, vegas_projwinner, projwinner\n",
    "    pcover = round(float(cover)/(cover+ncover)*100, 2)\n",
    "    \n",
    "    results.append([home, away, vegas_projwinner, vegas_spread, pcover, pwinning, ou, method])\n",
    "    \n",
    "vspreads = pd.DataFrame(results)\n",
    "vspreads.columns = ['home', 'away', 'projectedwinner', 'vegas spread', 'pcover', 'pwin', 'overunder', 'method']\n",
    "vspreads = vspreads.drop_duplicates(subset=['home', 'away', 'projectedwinner', 'pcover', 'pwin'])\n",
    "\n",
    "# ourspreads['pcover'], ourspreads['pwin'] = vspreads['pcover'], vspreads['pwin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 517,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>vegas spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>39.06</td>\n",
       "      <td>64</td>\n",
       "      <td>u215.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-10.0</td>\n",
       "      <td>71.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u208.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>20.34</td>\n",
       "      <td>59</td>\n",
       "      <td>u217.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>6.98</td>\n",
       "      <td>43</td>\n",
       "      <td>u193.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>HOU</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>4.76</td>\n",
       "      <td>42</td>\n",
       "      <td>u222.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>57.50</td>\n",
       "      <td>80</td>\n",
       "      <td>u215-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>IND</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>40.00</td>\n",
       "      <td>60</td>\n",
       "      <td>u206-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>49.38</td>\n",
       "      <td>81</td>\n",
       "      <td>u219.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>SA</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>55.00</td>\n",
       "      <td>100</td>\n",
       "      <td>u201-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-8.5</td>\n",
       "      <td>16.48</td>\n",
       "      <td>91</td>\n",
       "      <td>u212.5-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>87.50</td>\n",
       "      <td>24</td>\n",
       "      <td>u218-110</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   home away projectedwinner  vegas spread  pcover  pwin    overunder method\n",
       "0   ORL  CHI             ORL          -4.5   39.06    64  u215.5-110    mean\n",
       "1   PHI  CHA             CHA         -10.0   71.00   100  u208.5-110    mean\n",
       "2   BOS  POR             BOS          -6.0   20.34    59  u217.5-110    mean\n",
       "3   TOR  UTA             TOR          -5.0    6.98    43  u193.5-110    mean\n",
       "4   HOU   NO             HOU          -6.0    4.76    42  u222.5-110    mean\n",
       "5   MEM  SAC             MEM          -3.5   57.50    80    u215-110    mean\n",
       "6   MIL  IND             IND          -3.0   40.00    60    u206-110    mean\n",
       "7   MIN  WAS             WAS          -3.5   49.38    81  u219.5-110    mean\n",
       "8    SA  DET              SA         -11.0   55.00   100    u201-110    mean\n",
       "9   DEN  LAL             DEN          -8.5   16.48    91  u212.5-110    mean\n",
       "10  LAC  OKC             LAC          -1.0   87.50    24    u218-110    mean"
      ]
     },
     "execution_count": 517,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vspreads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 503,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>homescore</th>\n",
       "      <th>awayscore</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "      <th>dateof</th>\n",
       "      <th>notes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>97</td>\n",
       "      <td>105</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>55.74</td>\n",
       "      <td>61</td>\n",
       "      <td>202</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>93</td>\n",
       "      <td>110</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-11.5</td>\n",
       "      <td>50.00</td>\n",
       "      <td>100</td>\n",
       "      <td>203</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>100</td>\n",
       "      <td>107</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>50.00</td>\n",
       "      <td>62</td>\n",
       "      <td>207</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>91</td>\n",
       "      <td>94</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>50.98</td>\n",
       "      <td>51</td>\n",
       "      <td>185</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>109</td>\n",
       "      <td>106</td>\n",
       "      <td>NO</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>61.67</td>\n",
       "      <td>60</td>\n",
       "      <td>215</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>102</td>\n",
       "      <td>101</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>53.66</td>\n",
       "      <td>82</td>\n",
       "      <td>203</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>98</td>\n",
       "      <td>100</td>\n",
       "      <td>IND</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>55.74</td>\n",
       "      <td>61</td>\n",
       "      <td>198</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>100</td>\n",
       "      <td>102</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>64.79</td>\n",
       "      <td>71</td>\n",
       "      <td>202</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>8</td>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>99</td>\n",
       "      <td>95</td>\n",
       "      <td>SA</td>\n",
       "      <td>-10.5</td>\n",
       "      <td>54.00</td>\n",
       "      <td>100</td>\n",
       "      <td>194</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9</td>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>107</td>\n",
       "      <td>102</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>50.00</td>\n",
       "      <td>92</td>\n",
       "      <td>209</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>10</td>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>105</td>\n",
       "      <td>107</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>52.56</td>\n",
       "      <td>78</td>\n",
       "      <td>212</td>\n",
       "      <td>mean</td>\n",
       "      <td>2016-03-02</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    index home away  homescore  awayscore projectedwinner  spread  pcover  \\\n",
       "0       0  ORL  CHI         97        105             ORL    -3.5   55.74   \n",
       "1       1  PHI  CHA         93        110             CHA   -11.5   50.00   \n",
       "2       2  BOS  POR        100        107             BOS    -3.0   50.00   \n",
       "3       3  TOR  UTA         91         94             TOR    -2.0   50.98   \n",
       "4       4  HOU   NO        109        106              NO    -2.0   61.67   \n",
       "5       5  MEM  SAC        102        101             MEM    -3.5   53.66   \n",
       "6       6  MIL  IND         98        100             IND    -2.0   55.74   \n",
       "7       7  MIN  WAS        100        102             WAS    -3.5   64.79   \n",
       "8       8   SA  DET         99         95              SA   -10.5   54.00   \n",
       "9       9  DEN  LAL        107        102             DEN    -5.5   50.00   \n",
       "10     10  LAC  OKC        105        107             OKC    -3.0   52.56   \n",
       "\n",
       "    pwin  overunder method      dateof notes  \n",
       "0     61        202   mean  2016-03-02  None  \n",
       "1    100        203   mean  2016-03-02  None  \n",
       "2     62        207   mean  2016-03-02  None  \n",
       "3     51        185   mean  2016-03-02  None  \n",
       "4     60        215   mean  2016-03-02  None  \n",
       "5     82        203   mean  2016-03-02  None  \n",
       "6     61        198   mean  2016-03-02  None  \n",
       "7     71        202   mean  2016-03-02  None  \n",
       "8    100        194   mean  2016-03-02  None  \n",
       "9     92        209   mean  2016-03-02  None  \n",
       "10    78        212   mean  2016-03-02  None  "
      ]
     },
     "execution_count": 503,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meanspreadsdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-3.5\n",
      "-8.5\n",
      "-5.0\n",
      "-6.0\n",
      "-5.5\n",
      "-5.5\n",
      "-2.5\n",
      "-3.5\n",
      "-10.5\n",
      "-6.5\n",
      "-1.0\n",
      "-3.5\n",
      "-5.0\n",
      "-6.0\n",
      "-5.5\n",
      "-5.5\n",
      "-6.5\n",
      "-1.0\n",
      "-2.5\n",
      "-3.5\n"
     ]
    }
   ],
   "source": [
    "sdf = pd.DataFrame()\n",
    "sdf = sdf.append([item for sublist in totals for item in sublist])\n",
    "sdf.columns = ['homescore', 'awayscore', 'away','home','projectedwinner','spread', 'dateof']\n",
    "sdf['ou'] = sdf['homescore'] + sdf['awayscore']\n",
    "matchups = sdf[['home', 'away', 'projectedwinner']].drop_duplicates().values.tolist()\n",
    "\n",
    "method = 'mean'\n",
    "results = []\n",
    "for home, away, projwinner in matchups:\n",
    "    homescore = float(sdf[sdf.home==home]['homescore'].head(1))\n",
    "    awayscore = float(sdf[sdf.home==home]['awayscore'].head(1))\n",
    "    ou = float(sdf[(sdf.home==home)&(sdf.away==away)]['ou'].head(1))\n",
    "    home_pwin = len(sdf[sdf.projectedwinner==home])\n",
    "    away_pwin = len(sdf[sdf.projectedwinner==away])\n",
    "    proj_winner = away if away_pwin > home_pwin else home\n",
    "    pwinning = away_pwin if away_pwin > home_pwin else home_pwin\n",
    "    \n",
    "    vegas_projwinner = oddsdf[(oddsdf.home==home)&(oddsdf.away==away)].projwinner.tail(1).values[0]\n",
    "    vegas_spread = oddsdf[oddsdf.projwinner==home].spread.tail(1).values[0] if vegas_projwinner == home else oddsdf[oddsdf.projwinner==away].spread.tail(1).values[0]\n",
    "    vegas_spread = float(vegas_spread)\n",
    "    print vegas_spread\n",
    "    spread = sdf[sdf.projectedwinner==away].spread.median() if away_pwin > home_pwin else sdf[sdf.projectedwinner==home].spread.median()\n",
    "    spread = round( 2 * spread ) / 2\n",
    "    cover = len(sdf[ (sdf.spread<=vegas_spread) & (sdf.projectedwinner==proj_winner)])\n",
    "    ncover = len(sdf[ (sdf.spread>vegas_spread) & (sdf.projectedwinner==proj_winner)])\n",
    "    pcover = round(float(cover)/(cover+ncover)*100, 2)\n",
    "    \n",
    "    results.append([home, away, homescore, awayscore, proj_winner, spread, vegas_spread, pcover, pwinning, ou, method])\n",
    "    \n",
    "spreads = pd.DataFrame(results)\n",
    "spreads.columns = ['home', 'away', 'homescore', 'awayscore', 'projectedwinner', 'spread', 'vegas spread', 'pcover', 'pwin', 'overunder', 'method']\n",
    "spreads = spreads.drop_duplicates(subset=['home', 'away', 'projectedwinner', 'spread', 'pcover', 'pwin'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>homescore</th>\n",
       "      <th>awayscore</th>\n",
       "      <th>projectedwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>vegas spread</th>\n",
       "      <th>pcover</th>\n",
       "      <th>pwin</th>\n",
       "      <th>overunder</th>\n",
       "      <th>method</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>99</td>\n",
       "      <td>103</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>51.56</td>\n",
       "      <td>64</td>\n",
       "      <td>202</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>97</td>\n",
       "      <td>111</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-11.5</td>\n",
       "      <td>-8.5</td>\n",
       "      <td>83.00</td>\n",
       "      <td>100</td>\n",
       "      <td>208</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>102</td>\n",
       "      <td>105</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>30.51</td>\n",
       "      <td>59</td>\n",
       "      <td>207</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>97</td>\n",
       "      <td>94</td>\n",
       "      <td>UTA</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>10.53</td>\n",
       "      <td>57</td>\n",
       "      <td>191</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>104</td>\n",
       "      <td>111</td>\n",
       "      <td>NO</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>12.07</td>\n",
       "      <td>58</td>\n",
       "      <td>215</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>106</td>\n",
       "      <td>101</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>25.00</td>\n",
       "      <td>80</td>\n",
       "      <td>207</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>98</td>\n",
       "      <td>100</td>\n",
       "      <td>IND</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>48.33</td>\n",
       "      <td>60</td>\n",
       "      <td>198</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>102</td>\n",
       "      <td>103</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>-3.5</td>\n",
       "      <td>49.38</td>\n",
       "      <td>81</td>\n",
       "      <td>205</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>105</td>\n",
       "      <td>98</td>\n",
       "      <td>SA</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>-10.5</td>\n",
       "      <td>58.00</td>\n",
       "      <td>100</td>\n",
       "      <td>203</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>104</td>\n",
       "      <td>97</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-5.5</td>\n",
       "      <td>-6.5</td>\n",
       "      <td>38.46</td>\n",
       "      <td>91</td>\n",
       "      <td>201</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>107</td>\n",
       "      <td>104</td>\n",
       "      <td>OKC</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>86.84</td>\n",
       "      <td>76</td>\n",
       "      <td>211</td>\n",
       "      <td>mean</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   home away  homescore  awayscore projectedwinner  spread  vegas spread  \\\n",
       "0   ORL  CHI         99        103             ORL    -3.5          -3.5   \n",
       "1   PHI  CHA         97        111             CHA   -11.5          -8.5   \n",
       "2   BOS  POR        102        105             BOS    -3.0          -5.0   \n",
       "3   TOR  UTA         97         94             UTA    -2.0          -6.0   \n",
       "4   HOU   NO        104        111              NO    -2.0          -5.5   \n",
       "5   MEM  SAC        106        101             MEM    -3.5          -5.5   \n",
       "6   MIL  IND         98        100             IND    -2.0          -2.5   \n",
       "7   MIN  WAS        102        103             WAS    -3.0          -3.5   \n",
       "8    SA  DET        105         98              SA   -11.0         -10.5   \n",
       "9   DEN  LAL        104         97             DEN    -5.5          -6.5   \n",
       "10  LAC  OKC        107        104             OKC    -3.0          -1.0   \n",
       "\n",
       "    pcover  pwin  overunder method  \n",
       "0    51.56    64        202   mean  \n",
       "1    83.00   100        208   mean  \n",
       "2    30.51    59        207   mean  \n",
       "3    10.53    57        191   mean  \n",
       "4    12.07    58        215   mean  \n",
       "5    25.00    80        207   mean  \n",
       "6    48.33    60        198   mean  \n",
       "7    49.38    81        205   mean  \n",
       "8    58.00   100        203   mean  \n",
       "9    38.46    91        201   mean  \n",
       "10   86.84    76        211   mean  "
      ]
     },
     "execution_count": 301,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spreads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "today = datetime.now()\n",
    "today = today.strftime('%Y-%m-%d')\n",
    "\n",
    "url = 'http://www.gamblerspalace.com/lines/basketball/nba'\n",
    "r = requests.get(url)\n",
    "soup = BeautifulSoup(r.content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 402,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "today = datetime.now()\n",
    "# today = today.strftime('%Y-%m-%d')\n",
    "\n",
    "url = 'http://www.gamblerspalace.com/lines/basketball/nba'\n",
    "r = requests.get(url)\n",
    "soup = BeautifulSoup(r.content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 416,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "matchups = []\n",
    "sameday = []\n",
    "for i in soup.find_all(class_=\"linesTable\")[0].find_all('tr'):\n",
    "    if re.search(\"NBA -\", i.text):\n",
    "        sameday.append(i.text)\n",
    "    if len(sameday) == 1:\n",
    "        if i.find_all('tr'):\n",
    "            away = i.find_all('tr')[0].find(class_='team').text\n",
    "            home = i.find_all('tr')[1].find(class_='team').text\n",
    "            away = convertcode(gamblercode=away)\n",
    "            home = convertcode(gamblercode=home)\n",
    "            awayspread = re.sub(\"-[0-9]{3}\", \"\", i.find_all('tr')[0].find(class_='spread').text.encode('utf-8').replace(\"\\xc2\\xbd\", \".5\"))\n",
    "            homespread = re.sub(\"-[0-9]{3}\", \"\", i.find_all('tr')[1].find(class_='spread').text.encode('utf-8').replace(\"\\xc2\\xbd\", \".5\"))\n",
    "            projwinner = away if float(awayspread) < float(homespread) else home\n",
    "            spread = awayspread if projwinner == away else homespread\n",
    "            awayoverunder = i.find_all('tr')[0].find(class_='overunder').text.encode('utf-8').replace(\"\\xc2\\xbd\", \".5\")\n",
    "            homeoverunder = i.find_all('tr')[1].find(class_='overunder').text.encode('utf-8').replace(\"\\xc2\\xbd\", \".5\")\n",
    "            matchups.append([home, away, projwinner, spread, homeoverunder, awayoverunder, today])\n",
    "        \n",
    "oddsdf = pd.DataFrame(matchups)\n",
    "oddsdf.columns = ['home', 'away', 'projwinner', 'spread', 'homeou', 'awayou', 'dateof']\n",
    "\n",
    "# oddsdf.to_sql('nbaodds1516', con=engine, if_exists='replace', index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 417,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>projwinner</th>\n",
       "      <th>spread</th>\n",
       "      <th>homeou</th>\n",
       "      <th>awayou</th>\n",
       "      <th>dateof</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ORL</td>\n",
       "      <td>CHI</td>\n",
       "      <td>ORL</td>\n",
       "      <td>-4.5</td>\n",
       "      <td>u214.5-110</td>\n",
       "      <td>o214.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PHI</td>\n",
       "      <td>CHA</td>\n",
       "      <td>CHA</td>\n",
       "      <td>-9</td>\n",
       "      <td>u207.5-110</td>\n",
       "      <td>o207.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BOS</td>\n",
       "      <td>POR</td>\n",
       "      <td>BOS</td>\n",
       "      <td>-6</td>\n",
       "      <td>u218-110</td>\n",
       "      <td>o218-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>TOR</td>\n",
       "      <td>UTA</td>\n",
       "      <td>TOR</td>\n",
       "      <td>-5</td>\n",
       "      <td>u193.5-110</td>\n",
       "      <td>o193.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>MEM</td>\n",
       "      <td>SAC</td>\n",
       "      <td>MEM</td>\n",
       "      <td>-3</td>\n",
       "      <td>u214-110</td>\n",
       "      <td>o214-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>HOU</td>\n",
       "      <td>NO</td>\n",
       "      <td>HOU</td>\n",
       "      <td>-6</td>\n",
       "      <td>u220.5-110</td>\n",
       "      <td>o220.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>MIN</td>\n",
       "      <td>WAS</td>\n",
       "      <td>WAS</td>\n",
       "      <td>-2.5</td>\n",
       "      <td>u219.5-110</td>\n",
       "      <td>o219.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MIL</td>\n",
       "      <td>IND</td>\n",
       "      <td>IND</td>\n",
       "      <td>-2</td>\n",
       "      <td>u205.5-110</td>\n",
       "      <td>o205.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>SA</td>\n",
       "      <td>DET</td>\n",
       "      <td>SA</td>\n",
       "      <td>-11</td>\n",
       "      <td>u201.5-110</td>\n",
       "      <td>o201.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>DEN</td>\n",
       "      <td>LAL</td>\n",
       "      <td>DEN</td>\n",
       "      <td>-8</td>\n",
       "      <td>u212-110</td>\n",
       "      <td>o212-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>LAC</td>\n",
       "      <td>OKC</td>\n",
       "      <td>LAC</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>u217.5-110</td>\n",
       "      <td>o217.5-110</td>\n",
       "      <td>2016-03-02 14:52:26.784419</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   home away projwinner spread       homeou       awayou  \\\n",
       "0   ORL  CHI        ORL  -4.5   u214.5-110   o214.5-110    \n",
       "1   PHI  CHA        CHA    -9   u207.5-110   o207.5-110    \n",
       "2   BOS  POR        BOS    -6     u218-110     o218-110    \n",
       "3   TOR  UTA        TOR    -5   u193.5-110   o193.5-110    \n",
       "4   MEM  SAC        MEM    -3     u214-110     o214-110    \n",
       "5   HOU   NO        HOU    -6   u220.5-110   o220.5-110    \n",
       "6   MIN  WAS        WAS  -2.5   u219.5-110   o219.5-110    \n",
       "7   MIL  IND        IND    -2   u205.5-110   o205.5-110    \n",
       "8    SA  DET         SA   -11   u201.5-110   o201.5-110    \n",
       "9   DEN  LAL        DEN    -8     u212-110     o212-110    \n",
       "10  LAC  OKC        LAC  -1.5   u217.5-110   o217.5-110    \n",
       "\n",
       "                       dateof  \n",
       "0  2016-03-02 14:52:26.784419  \n",
       "1  2016-03-02 14:52:26.784419  \n",
       "2  2016-03-02 14:52:26.784419  \n",
       "3  2016-03-02 14:52:26.784419  \n",
       "4  2016-03-02 14:52:26.784419  \n",
       "5  2016-03-02 14:52:26.784419  \n",
       "6  2016-03-02 14:52:26.784419  \n",
       "7  2016-03-02 14:52:26.784419  \n",
       "8  2016-03-02 14:52:26.784419  \n",
       "9  2016-03-02 14:52:26.784419  \n",
       "10 2016-03-02 14:52:26.784419  "
      ]
     },
     "execution_count": 417,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oddsdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'10:09AM'"
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "today.strftime('%b %d %Y')\n",
    "today.strftime('%I:%M%p')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def convertcode(nbacode=False, gamblercode=False):\n",
    "    cbscodes = ['ATL', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GS', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NY', 'OKC', 'ORL', 'PHI', 'PHO', 'POR', 'SA', 'SAC', 'TOR', 'UTA', 'WAS', 'BKN', 'NO']\n",
    "    nbacodes = ['ATL', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GSW','HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NYK','OKC', 'ORL', 'PHI', 'PHX', 'POR', 'SAS','SAC', 'TOR', 'UTA', 'WAS', 'BKN', 'NOP']\n",
    "    gamblercodes = ['ATLANTA', 'BOSTON', 'CHARLOTTE', 'CHICAGO', 'CLEVELAND', 'DALLAS', 'DENVER', 'DETROIT', 'GOLDEN STATE', 'HOUSTON', 'INDIANA', 'LA CLIPPERS', 'LA LAKERS', 'MEMPHIS', 'MIAMI', 'MILWAUKEE',\n",
    "                           'MINNESOTA', 'NEW YORK', 'OKLAHOMA CITY', 'ORLANDO', 'PHILADELPHIA', 'PHOENIX', 'PORTLAND', 'SAN ANTONIO', 'SACRAMENTO', 'TORONTO', 'UTAH', 'WASHINGTON', 'BROOKLYN', 'NEW ORLEANS']\n",
    "    if nbacode:\n",
    "        for n,code in enumerate(nbacodes):\n",
    "            if code == nbacode:\n",
    "                ncode = cbscodes[n]\n",
    "    elif gamblercode:\n",
    "        for n, code in enumerate(gamblercodes):\n",
    "            if code == gamblercode:\n",
    "                ncode = cbscodes[n]\n",
    "    return ncode"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'GS'"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "convertcode(gamblercode='GOLDEN STATE')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  },
  "widgets": {
   "state": {},
   "version": "1.1.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}