{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### This is an experiment in using the Kotlin kernel for Jupyter \n",
"Note: this notebook was updated July 2021 to point to newer versions of its dependencies, which had become deprecated and were not allowing the notebook to complete successfully. It was also used for a presentation of Kotlin's Jupyter kernel in March 2021, so the 2020 season data, which didn't exist at the time the initial article was written, was added."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"zsgaf8\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n",
" if(!window.letsPlotCallQueue) {\n",
" window.letsPlotCallQueue = [];\n",
" }; \n",
" window.letsPlotCall = function(f) {\n",
" window.letsPlotCallQueue.push(f);\n",
" };\n",
" (function() {\n",
" var script = document.createElement(\"script\");\n",
" script.type = \"text/javascript\";\n",
" script.src = \"https://cdnjs.cloudflare.com/ajax/libs/lets-plot/2.0.2/lets-plot.min.js\";\n",
" script.onload = function() {\n",
" window.letsPlotCall = function(f) {f();};\n",
" window.letsPlotCallQueue.forEach(function(f) {f();});\n",
" window.letsPlotCallQueue = [];\n",
" \n",
" \n",
" };\n",
" script.onerror = function(event) {\n",
" window.letsPlotCall = function(f) {};\n",
" window.letsPlotCallQueue = [];\n",
" var div = document.createElement(\"div\");\n",
" div.style.color = 'darkred';\n",
" div.textContent = 'Error loading Lets-Plot JS';\n",
" document.getElementById(\"zsgaf8\").appendChild(div);\n",
" };\n",
" var e = document.getElementById(\"zsgaf8\");\n",
" e.appendChild(script);\n",
" })();\n",
" </script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"// two \"supported\" packages, we can skip the full dependency & import boilerplate\n",
"%use lets-plot, krangl "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html><body><table><tr><th style=\"text-align:left\">Rk</th><th style=\"text-align:left\">Year</th><th style=\"text-align:left\">Tms</th><th style=\"text-align:left\">Cmp</th><th style=\"text-align:left\">Att</th><th style=\"text-align:left\">Cmp%</th><th style=\"text-align:left\">Yds</th><th style=\"text-align:left\">TD</th><th style=\"text-align:left\">TD%</th><th style=\"text-align:left\">Int</th><th style=\"text-align:left\">Int%</th><th style=\"text-align:left\">Y/A</th><th style=\"text-align:left\">AY/A</th><th style=\"text-align:left\">Y/C</th><th style=\"text-align:left\">Y/G</th><th style=\"text-align:left\">Rate</th><th style=\"text-align:left\">Sk</th><th style=\"text-align:left\">SkYds</th><th style=\"text-align:left\">NY/A</th><th style=\"text-align:left\">ANY/A</th><th style=\"text-align:left\">Sk%</th></tr><tr><td style=\"text-align:left\" title=\"1\">1</td><td style=\"text-align:left\" title=\"2020\">2020</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11756\">11756</td><td style=\"text-align:left\" title=\"18018\">18018</td><td style=\"text-align:left\" title=\"65.2\">65.2</td><td style=\"text-align:left\" title=\"122957\">122957</td><td style=\"text-align:left\" title=\"871\">871</td><td style=\"text-align:left\" title=\"4.8\">4.8</td><td style=\"text-align:left\" title=\"395\">395</td><td style=\"text-align:left\" title=\"2.2\">2.2</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"11.1\">11.1</td><td style=\"text-align:left\" title=\"240.2\">240.2</td><td style=\"text-align:left\" title=\"93.6\">93.6</td><td style=\"text-align:left\" title=\"1135\">1135</td><td style=\"text-align:left\" title=\"7543\">7543</td><td style=\"text-align:left\" title=\"6.42\">6.42</td><td style=\"text-align:left\" title=\"6.4\">6.4</td><td style=\"text-align:left\" title=\"5.9\">5.9</td></tr><tr><td style=\"text-align:left\" title=\"2\">2</td><td style=\"text-align:left\" title=\"2019\">2019</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11331\">11331</td><td style=\"text-align:left\" title=\"17853\">17853</td><td style=\"text-align:left\" title=\"63.5\">63.5</td><td style=\"text-align:left\" title=\"120301\">120301</td><td style=\"text-align:left\" title=\"797\">797</td><td style=\"text-align:left\" title=\"4.5\">4.5</td><td style=\"text-align:left\" title=\"410\">410</td><td style=\"text-align:left\" title=\"2.3\">2.3</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"7.1\">7.1</td><td style=\"text-align:left\" title=\"11.4\">11.4</td><td style=\"text-align:left\" title=\"235.0\">235.0</td><td style=\"text-align:left\" title=\"90.4\">90.4</td><td style=\"text-align:left\" title=\"1276\">1276</td><td style=\"text-align:left\" title=\"8610\">8610</td><td style=\"text-align:left\" title=\"6.29\">6.29</td><td style=\"text-align:left\" title=\"6.2\">6.2</td><td style=\"text-align:left\" title=\"6.7\">6.7</td></tr><tr><td style=\"text-align:left\" title=\"3\">3</td><td style=\"text-align:left\" title=\"2018\">2018</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11462\">11462</td><td style=\"text-align:left\" title=\"17671\">17671</td><td style=\"text-align:left\" title=\"64.9\">64.9</td><td style=\"text-align:left\" title=\"121737\">121737</td><td style=\"text-align:left\" title=\"847\">847</td><td style=\"text-align:left\" title=\"4.8\">4.8</td><td style=\"text-align:left\" title=\"419\">419</td><td style=\"text-align:left\" title=\"2.4\">2.4</td><td style=\"text-align:left\" title=\"7.4\">7.4</td><td style=\"text-align:left\" title=\"7.3\">7.3</td><td style=\"text-align:left\" title=\"11.4\">11.4</td><td style=\"text-align:left\" title=\"237.8\">237.8</td><td style=\"text-align:left\" title=\"92.9\">92.9</td><td style=\"text-align:left\" title=\"1281\">1281</td><td style=\"text-align:left\" title=\"8530\">8530</td><td style=\"text-align:left\" title=\"6.42\">6.42</td><td style=\"text-align:left\" title=\"6.3\">6.3</td><td style=\"text-align:left\" title=\"6.8\">6.8</td></tr><tr><td style=\"text-align:left\" title=\"4\">4</td><td style=\"text-align:left\" title=\"2017\">2017</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10856\">10856</td><td style=\"text-align:left\" title=\"17488\">17488</td><td style=\"text-align:left\" title=\"62.1\">62.1</td><td style=\"text-align:left\" title=\"114870\">114870</td><td style=\"text-align:left\" title=\"741\">741</td><td style=\"text-align:left\" title=\"4.2\">4.2</td><td style=\"text-align:left\" title=\"430\">430</td><td style=\"text-align:left\" title=\"2.5\">2.5</td><td style=\"text-align:left\" title=\"7.0\">7.0</td><td style=\"text-align:left\" title=\"6.8\">6.8</td><td style=\"text-align:left\" title=\"11.3\">11.3</td><td style=\"text-align:left\" title=\"224.4\">224.4</td><td style=\"text-align:left\" title=\"86.9\">86.9</td><td style=\"text-align:left\" title=\"1195\">1195</td><td style=\"text-align:left\" title=\"7810\">7810</td><td style=\"text-align:left\" title=\"6.15\">6.15</td><td style=\"text-align:left\" title=\"5.9\">5.9</td><td style=\"text-align:left\" title=\"6.4\">6.4</td></tr><tr><td style=\"text-align:left\" title=\"5\">5</td><td style=\"text-align:left\" title=\"2016\">2016</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11526\">11526</td><td style=\"text-align:left\" title=\"18295\">18295</td><td style=\"text-align:left\" title=\"63.0\">63.0</td><td style=\"text-align:left\" title=\"123639\">123639</td><td style=\"text-align:left\" title=\"786\">786</td><td style=\"text-align:left\" title=\"4.3\">4.3</td><td style=\"text-align:left\" title=\"415\">415</td><td style=\"text-align:left\" title=\"2.3\">2.3</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"7.0\">7.0</td><td style=\"text-align:left\" title=\"11.4\">11.4</td><td style=\"text-align:left\" title=\"241.5\">241.5</td><td style=\"text-align:left\" title=\"89.3\">89.3</td><td style=\"text-align:left\" title=\"1118\">1118</td><td style=\"text-align:left\" title=\"7225\">7225</td><td style=\"text-align:left\" title=\"6.37\">6.37</td><td style=\"text-align:left\" title=\"6.2\">6.2</td><td style=\"text-align:left\" title=\"5.8\">5.8</td></tr><tr><td style=\"text-align:left\" title=\"6\">6</td><td style=\"text-align:left\" title=\"2015\">2015</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11527\">11527</td><td style=\"text-align:left\" title=\"18298\">18298</td><td style=\"text-align:left\" title=\"63.0\">63.0</td><td style=\"text-align:left\" title=\"124843\">124843</td><td style=\"text-align:left\" title=\"842\">842</td><td style=\"text-align:left\" title=\"4.6\">4.6</td><td style=\"text-align:left\" title=\"436\">436</td><td style=\"text-align:left\" title=\"2.4\">2.4</td><td style=\"text-align:left\" title=\"7.3\">7.3</td><td style=\"text-align:left\" title=\"7.1\">7.1</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"243.8\">243.8</td><td style=\"text-align:left\" title=\"90.2\">90.2</td><td style=\"text-align:left\" title=\"1187\">1187</td><td style=\"text-align:left\" title=\"7850\">7850</td><td style=\"text-align:left\" title=\"6.41\">6.41</td><td style=\"text-align:left\" title=\"6.3\">6.3</td><td style=\"text-align:left\" title=\"6.1\">6.1</td></tr><tr><td style=\"text-align:left\" title=\"7\">7</td><td style=\"text-align:left\" title=\"2014\">2014</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11200\">11200</td><td style=\"text-align:left\" title=\"17879\">17879</td><td style=\"text-align:left\" title=\"62.6\">62.6</td><td style=\"text-align:left\" title=\"121247\">121247</td><td style=\"text-align:left\" title=\"807\">807</td><td style=\"text-align:left\" title=\"4.5\">4.5</td><td style=\"text-align:left\" title=\"450\">450</td><td style=\"text-align:left\" title=\"2.5\">2.5</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"7.0\">7.0</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"236.8\">236.8</td><td style=\"text-align:left\" title=\"88.9\">88.9</td><td style=\"text-align:left\" title=\"1212\">1212</td><td style=\"text-align:left\" title=\"7651\">7651</td><td style=\"text-align:left\" title=\"6.35\">6.35</td><td style=\"text-align:left\" title=\"6.1\">6.1</td><td style=\"text-align:left\" title=\"6.3\">6.3</td></tr><tr><td style=\"text-align:left\" title=\"8\">8</td><td style=\"text-align:left\" title=\"2013\">2013</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"11102\">11102</td><td style=\"text-align:left\" title=\"18136\">18136</td><td style=\"text-align:left\" title=\"61.2\">61.2</td><td style=\"text-align:left\" title=\"120626\">120626</td><td style=\"text-align:left\" title=\"804\">804</td><td style=\"text-align:left\" title=\"4.4\">4.4</td><td style=\"text-align:left\" title=\"502\">502</td><td style=\"text-align:left\" title=\"2.8\">2.8</td><td style=\"text-align:left\" title=\"7.1\">7.1</td><td style=\"text-align:left\" title=\"6.8\">6.8</td><td style=\"text-align:left\" title=\"11.6\">11.6</td><td style=\"text-align:left\" title=\"235.6\">235.6</td><td style=\"text-align:left\" title=\"86.0\">86.0</td><td style=\"text-align:left\" title=\"1295\">1295</td><td style=\"text-align:left\" title=\"8551\">8551</td><td style=\"text-align:left\" title=\"6.21\">6.21</td><td style=\"text-align:left\" title=\"5.9\">5.9</td><td style=\"text-align:left\" title=\"6.7\">6.7</td></tr><tr><td style=\"text-align:left\" title=\"9\">9</td><td style=\"text-align:left\" title=\"2012\">2012</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10833\">10833</td><td style=\"text-align:left\" title=\"17788\">17788</td><td style=\"text-align:left\" title=\"60.9\">60.9</td><td style=\"text-align:left\" title=\"118418\">118418</td><td style=\"text-align:left\" title=\"757\">757</td><td style=\"text-align:left\" title=\"4.3\">4.3</td><td style=\"text-align:left\" title=\"468\">468</td><td style=\"text-align:left\" title=\"2.6\">2.6</td><td style=\"text-align:left\" title=\"7.1\">7.1</td><td style=\"text-align:left\" title=\"6.7\">6.7</td><td style=\"text-align:left\" title=\"11.6\">11.6</td><td style=\"text-align:left\" title=\"231.3\">231.3</td><td style=\"text-align:left\" title=\"85.6\">85.6</td><td style=\"text-align:left\" title=\"1169\">1169</td><td style=\"text-align:left\" title=\"7533\">7533</td><td style=\"text-align:left\" title=\"6.25\">6.25</td><td style=\"text-align:left\" title=\"5.9\">5.9</td><td style=\"text-align:left\" title=\"6.2\">6.2</td></tr><tr><td style=\"text-align:left\" title=\"10\">10</td><td style=\"text-align:left\" title=\"2011\">2011</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10464\">10464</td><td style=\"text-align:left\" title=\"17410\">17410</td><td style=\"text-align:left\" title=\"60.1\">60.1</td><td style=\"text-align:left\" title=\"117601\">117601</td><td style=\"text-align:left\" title=\"745\">745</td><td style=\"text-align:left\" title=\"4.3\">4.3</td><td style=\"text-align:left\" title=\"506\">506</td><td style=\"text-align:left\" title=\"2.9\">2.9</td><td style=\"text-align:left\" title=\"7.2\">7.2</td><td style=\"text-align:left\" title=\"6.7\">6.7</td><td style=\"text-align:left\" title=\"12.0\">12.0</td><td style=\"text-align:left\" title=\"229.7\">229.7</td><td style=\"text-align:left\" title=\"84.3\">84.3</td><td style=\"text-align:left\" title=\"1188\">1188</td><td style=\"text-align:left\" title=\"7729\">7729</td><td style=\"text-align:left\" title=\"6.32\">6.32</td><td style=\"text-align:left\" title=\"5.9\">5.9</td><td style=\"text-align:left\" title=\"6.4\">6.4</td></tr><tr><td style=\"text-align:left\" title=\"11\">11</td><td style=\"text-align:left\" title=\"2010\">2010</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10491\">10491</td><td style=\"text-align:left\" title=\"17269\">17269</td><td style=\"text-align:left\" title=\"60.8\">60.8</td><td style=\"text-align:left\" title=\"113450\">113450</td><td style=\"text-align:left\" title=\"751\">751</td><td style=\"text-align:left\" title=\"4.3\">4.3</td><td style=\"text-align:left\" title=\"511\">511</td><td style=\"text-align:left\" title=\"3.0\">3.0</td><td style=\"text-align:left\" title=\"7.0\">7.0</td><td style=\"text-align:left\" title=\"6.5\">6.5</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"221.6\">221.6</td><td style=\"text-align:left\" title=\"84.1\">84.1</td><td style=\"text-align:left\" title=\"1130\">1130</td><td style=\"text-align:left\" title=\"7514\">7514</td><td style=\"text-align:left\" title=\"6.17\">6.17</td><td style=\"text-align:left\" title=\"5.7\">5.7</td><td style=\"text-align:left\" title=\"6.1\">6.1</td></tr><tr><td style=\"text-align:left\" title=\"12\">12</td><td style=\"text-align:left\" title=\"2009\">2009</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10372\">10372</td><td style=\"text-align:left\" title=\"17033\">17033</td><td style=\"text-align:left\" title=\"60.9\">60.9</td><td style=\"text-align:left\" title=\"111851\">111851</td><td style=\"text-align:left\" title=\"710\">710</td><td style=\"text-align:left\" title=\"4.2\">4.2</td><td style=\"text-align:left\" title=\"525\">525</td><td style=\"text-align:left\" title=\"3.1\">3.1</td><td style=\"text-align:left\" title=\"7.0\">7.0</td><td style=\"text-align:left\" title=\"6.4\">6.4</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"218.5\">218.5</td><td style=\"text-align:left\" title=\"83.0\">83.0</td><td style=\"text-align:left\" title=\"1101\">1101</td><td style=\"text-align:left\" title=\"7066\">7066</td><td style=\"text-align:left\" title=\"6.17\">6.17</td><td style=\"text-align:left\" title=\"5.6\">5.6</td><td style=\"text-align:left\" title=\"6.1\">6.1</td></tr><tr><td style=\"text-align:left\" title=\"13\">13</td><td style=\"text-align:left\" title=\"2008\">2008</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10081\">10081</td><td style=\"text-align:left\" title=\"16526\">16526</td><td style=\"text-align:left\" title=\"61.0\">61.0</td><td style=\"text-align:left\" title=\"108177\">108177</td><td style=\"text-align:left\" title=\"646\">646</td><td style=\"text-align:left\" title=\"3.9\">3.9</td><td style=\"text-align:left\" title=\"465\">465</td><td style=\"text-align:left\" title=\"2.8\">2.8</td><td style=\"text-align:left\" title=\"6.9\">6.9</td><td style=\"text-align:left\" title=\"6.5\">6.5</td><td style=\"text-align:left\" title=\"11.4\">11.4</td><td style=\"text-align:left\" title=\"211.3\">211.3</td><td style=\"text-align:left\" title=\"83.2\">83.2</td><td style=\"text-align:left\" title=\"1036\">1036</td><td style=\"text-align:left\" title=\"6589\">6589</td><td style=\"text-align:left\" title=\"6.16\">6.16</td><td style=\"text-align:left\" title=\"5.7\">5.7</td><td style=\"text-align:left\" title=\"5.9\">5.9</td></tr><tr><td style=\"text-align:left\" title=\"14\">14</td><td style=\"text-align:left\" title=\"2007\">2007</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10425\">10425</td><td style=\"text-align:left\" title=\"17045\">17045</td><td style=\"text-align:left\" title=\"61.2\">61.2</td><td style=\"text-align:left\" title=\"109722\">109722</td><td style=\"text-align:left\" title=\"720\">720</td><td style=\"text-align:left\" title=\"4.2\">4.2</td><td style=\"text-align:left\" title=\"534\">534</td><td style=\"text-align:left\" title=\"3.1\">3.1</td><td style=\"text-align:left\" title=\"6.9\">6.9</td><td style=\"text-align:left\" title=\"6.3\">6.3</td><td style=\"text-align:left\" title=\"11.2\">11.2</td><td style=\"text-align:left\" title=\"214.3\">214.3</td><td style=\"text-align:left\" title=\"82.6\">82.6</td><td style=\"text-align:left\" title=\"1102\">1102</td><td style=\"text-align:left\" title=\"7152\">7152</td><td style=\"text-align:left\" title=\"6.05\">6.05</td><td style=\"text-align:left\" title=\"5.5\">5.5</td><td style=\"text-align:left\" title=\"6.1\">6.1</td></tr><tr><td style=\"text-align:left\" title=\"15\">15</td><td style=\"text-align:left\" title=\"2006\">2006</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"9796\">9796</td><td style=\"text-align:left\" title=\"16389\">16389</td><td style=\"text-align:left\" title=\"59.8\">59.8</td><td style=\"text-align:left\" title=\"104861\">104861</td><td style=\"text-align:left\" title=\"648\">648</td><td style=\"text-align:left\" title=\"4.0\">4.0</td><td style=\"text-align:left\" title=\"520\">520</td><td style=\"text-align:left\" title=\"3.2\">3.2</td><td style=\"text-align:left\" title=\"6.9\">6.9</td><td style=\"text-align:left\" title=\"6.2\">6.2</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"204.8\">204.8</td><td style=\"text-align:left\" title=\"80.4\">80.4</td><td style=\"text-align:left\" title=\"1164\">1164</td><td style=\"text-align:left\" title=\"7416\">7416</td><td style=\"text-align:left\" title=\"5.97\">5.97</td><td style=\"text-align:left\" title=\"5.4\">5.4</td><td style=\"text-align:left\" title=\"6.6\">6.6</td></tr><tr><td style=\"text-align:left\" title=\"16\">16</td><td style=\"text-align:left\" title=\"2005\">2005</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"9790\">9790</td><td style=\"text-align:left\" title=\"16464\">16464</td><td style=\"text-align:left\" title=\"59.5\">59.5</td><td style=\"text-align:left\" title=\"104168\">104168</td><td style=\"text-align:left\" title=\"644\">644</td><td style=\"text-align:left\" title=\"3.9\">3.9</td><td style=\"text-align:left\" title=\"506\">506</td><td style=\"text-align:left\" title=\"3.1\">3.1</td><td style=\"text-align:left\" title=\"6.8\">6.8</td><td style=\"text-align:left\" title=\"6.2\">6.2</td><td style=\"text-align:left\" title=\"11.4\">11.4</td><td style=\"text-align:left\" title=\"203.5\">203.5</td><td style=\"text-align:left\" title=\"80.1\">80.1</td><td style=\"text-align:left\" title=\"1182\">1182</td><td style=\"text-align:left\" title=\"7553\">7553</td><td style=\"text-align:left\" title=\"5.90\">5.90</td><td style=\"text-align:left\" title=\"5.3\">5.3</td><td style=\"text-align:left\" title=\"6.7\">6.7</td></tr><tr><td style=\"text-align:left\" title=\"17\">17</td><td style=\"text-align:left\" title=\"2004\">2004</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"9772\">9772</td><td style=\"text-align:left\" title=\"16354\">16354</td><td style=\"text-align:left\" title=\"59.8\">59.8</td><td style=\"text-align:left\" title=\"107797\">107797</td><td style=\"text-align:left\" title=\"732\">732</td><td style=\"text-align:left\" title=\"4.5\">4.5</td><td style=\"text-align:left\" title=\"524\">524</td><td style=\"text-align:left\" title=\"3.2\">3.2</td><td style=\"text-align:left\" title=\"7.1\">7.1</td><td style=\"text-align:left\" title=\"6.5\">6.5</td><td style=\"text-align:left\" title=\"11.8\">11.8</td><td style=\"text-align:left\" title=\"210.5\">210.5</td><td style=\"text-align:left\" title=\"82.8\">82.8</td><td style=\"text-align:left\" title=\"1196\">1196</td><td style=\"text-align:left\" title=\"7541\">7541</td><td style=\"text-align:left\" title=\"6.14\">6.14</td><td style=\"text-align:left\" title=\"5.6\">5.6</td><td style=\"text-align:left\" title=\"6.8\">6.8</td></tr><tr><td style=\"text-align:left\" title=\"18\">18</td><td style=\"text-align:left\" title=\"2003\">2003</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"9695\">9695</td><td style=\"text-align:left\" title=\"16493\">16493</td><td style=\"text-align:left\" title=\"58.8\">58.8</td><td style=\"text-align:left\" title=\"102628\">102628</td><td style=\"text-align:left\" title=\"654\">654</td><td style=\"text-align:left\" title=\"4.0\">4.0</td><td style=\"text-align:left\" title=\"538\">538</td><td style=\"text-align:left\" title=\"3.3\">3.3</td><td style=\"text-align:left\" title=\"6.6\">6.6</td><td style=\"text-align:left\" title=\"6.0\">6.0</td><td style=\"text-align:left\" title=\"11.3\">11.3</td><td style=\"text-align:left\" title=\"200.4\">200.4</td><td style=\"text-align:left\" title=\"78.3\">78.3</td><td style=\"text-align:left\" title=\"1092\">1092</td><td style=\"text-align:left\" title=\"6839\">6839</td><td style=\"text-align:left\" title=\"5.84\">5.84</td><td style=\"text-align:left\" title=\"5.2\">5.2</td><td style=\"text-align:left\" title=\"6.2\">6.2</td></tr><tr><td style=\"text-align:left\" title=\"19\">19</td><td style=\"text-align:left\" title=\"2002\">2002</td><td style=\"text-align:left\" title=\"32\">32</td><td style=\"text-align:left\" title=\"10314\">10314</td><td style=\"text-align:left\" title=\"17292\">17292</td><td style=\"text-align:left\" title=\"59.6\">59.6</td><td style=\"text-align:left\" title=\"108661\">108661</td><td style=\"text-align:left\" title=\"694\">694</td><td style=\"text-align:left\" title=\"4.0\">4.0</td><td style=\"text-align:left\" title=\"528\">528</td><td style=\"text-align:left\" title=\"3.1\">3.1</td><td style=\"text-align:left\" title=\"6.7\">6.7</td><td style=\"text-align:left\" title=\"6.1\">6.1</td><td style=\"text-align:left\" title=\"11.3\">11.3</td><td style=\"text-align:left\" title=\"212.2\">212.2</td><td style=\"text-align:left\" title=\"80.4\">80.4</td><td style=\"text-align:left\" title=\"1175\">1175</td><td style=\"text-align:left\" title=\"7540\">7540</td><td style=\"text-align:left\" title=\"5.88\">5.88</td><td style=\"text-align:left\" title=\"5.3\">5.3</td><td style=\"text-align:left\" title=\"6.4\">6.4</td></tr><tr><td style=\"text-align:left\" title=\"20\">20</td><td style=\"text-align:left\" title=\"2001\">2001</td><td style=\"text-align:left\" title=\"31\">31</td><td style=\"text-align:left\" title=\"9542\">9542</td><td style=\"text-align:left\" title=\"16181\">16181</td><td style=\"text-align:left\" title=\"59.0\">59.0</td><td style=\"text-align:left\" title=\"102080\">102080</td><td style=\"text-align:left\" title=\"635\">635</td><td style=\"text-align:left\" title=\"3.9\">3.9</td><td style=\"text-align:left\" title=\"545\">545</td><td style=\"text-align:left\" title=\"3.4\">3.4</td><td style=\"text-align:left\" title=\"6.8\">6.8</td><td style=\"text-align:left\" title=\"6.0\">6.0</td><td style=\"text-align:left\" title=\"11.5\">11.5</td><td style=\"text-align:left\" title=\"205.8\">205.8</td><td style=\"text-align:left\" title=\"78.5\">78.5</td><td style=\"text-align:left\" title=\"1196\">1196</td><td style=\"text-align:left\" title=\"7559\">7559</td><td style=\"text-align:left\" title=\"5.87\">5.87</td><td style=\"text-align:left\" title=\"5.2\">5.2</td><td style=\"text-align:left\" title=\"6.9\">6.9</td></tr></table><p>... only showing top 20 rows</p></body></html>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"// csv is courtesy of pro-football-reference: https://www.pro-football-reference.com/years/NFL/passing.htm\n",
"val dfPassing = DataFrame.readCSV(\"nfl_passing.csv\")\n",
"dfPassing"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{Rk=[Ljava.lang.Integer;@2873d672, Year=[Ljava.lang.Integer;@3bc735b3, Tms=[Ljava.lang.Integer;@577f9109, Cmp=[Ljava.lang.Integer;@4303b7f0, Att=[Ljava.lang.Integer;@757529a4, Cmp%=[Ljava.lang.Double;@779de014, Yds=[Ljava.lang.Integer;@5c41d037, TD=[Ljava.lang.Integer;@2234078, TD%=[Ljava.lang.Double;@5ec77191, Int=[Ljava.lang.Integer;@4642b71d, Int%=[Ljava.lang.Double;@1450078a, Y/A=[Ljava.lang.Double;@c68a5f8, AY/A=[Ljava.lang.Double;@69c6161d, Y/C=[Ljava.lang.Double;@3aefae67, Y/G=[Ljava.lang.Double;@2e1792e7, Rate=[Ljava.lang.Double;@6719a5b8, Sk=[Ljava.lang.String;@3eb631b8, SkYds=[Ljava.lang.String;@796d3c9f, NY/A=[Ljava.lang.String;@6bff19ff, ANY/A=[Ljava.lang.String;@41e1455d, Sk%=[Ljava.lang.String;@4e558728}"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val mapPassing = dfPassing.filter { (it[\"Year\"] lt 2021) AND (it[\"Year\"] gt 1990) }.toMap()\n",
"mapPassing"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"wMKWMm\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" (function() {\n",
" var plotSpec={\n",
"'ggtitle':{\n",
"'text':\"Avg Adjusted Yds/Attempt per NFL regular season\"\n",
"},\n",
"'mapping':{\n",
"'x':\"Year\",\n",
"'y':\"AY/A\"\n",
"},\n",
"'data':{\n",
"'Year':[2020.0,2019.0,2018.0,2017.0,2016.0,2015.0,2014.0,2013.0,2012.0,2011.0,2010.0,2009.0,2008.0,2007.0,2006.0,2005.0,2004.0,2003.0,2002.0,2001.0,2000.0,1999.0,1998.0,1997.0,1996.0,1995.0,1994.0,1993.0,1992.0,1991.0],\n",
"'AY/A':[7.2,7.1,7.3,6.8,7.0,7.1,7.0,6.8,6.7,6.7,6.5,6.4,6.5,6.3,6.2,6.2,6.5,6.0,6.1,6.0,6.1,6.0,6.2,6.1,5.9,6.2,6.1,5.9,5.9,6.0]\n",
"},\n",
"'ggsize':{\n",
"'width':640,\n",
"'height':240\n",
"},\n",
"'kind':\"plot\",\n",
"'scales':[],\n",
"'layers':[{\n",
"'mapping':{\n",
"},\n",
"'stat':\"identity\",\n",
"'data':{\n",
"},\n",
"'position':\"stack\",\n",
"'geom':\"bar\"\n",
"}]\n",
"};\n",
" var plotContainer = document.getElementById(\"wMKWMm\");\n",
" window.letsPlotCall(function() {{\n",
" LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
" }});\n",
" })(); \n",
" </script>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val p = lets_plot(mapPassing) { x = \"Year\"; y = \"AY/A\" } + ggsize(640, 240)\n",
"p + geom_bar(stat=Stat.identity) +\n",
" ggtitle(\"Avg Adjusted Yds/Attempt per NFL regular season\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"oOhxan\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" (function() {\n",
" var plotSpec={\n",
"'ggtitle':{\n",
"'text':\"Total Combined Passer Rating per NFL regular season\"\n",
"},\n",
"'mapping':{\n",
"'x':\"Year\",\n",
"'y':\"Rate\"\n",
"},\n",
"'data':{\n",
"'Year':[2020.0,2019.0,2018.0,2017.0,2016.0,2015.0,2014.0,2013.0,2012.0,2011.0,2010.0,2009.0,2008.0,2007.0,2006.0,2005.0,2004.0,2003.0,2002.0,2001.0,2000.0,1999.0,1998.0,1997.0,1996.0,1995.0,1994.0,1993.0,1992.0,1991.0],\n",
"'Rate':[93.6,90.4,92.9,86.9,89.3,90.2,88.9,86.0,85.6,84.3,84.1,83.0,83.2,82.6,80.4,80.1,82.8,78.3,80.4,78.5,78.1,77.1,78.3,77.2,76.9,79.2,78.4,76.7,75.3,76.2]\n",
"},\n",
"'ggsize':{\n",
"'width':640,\n",
"'height':240\n",
"},\n",
"'kind':\"plot\",\n",
"'scales':[],\n",
"'layers':[{\n",
"'mapping':{\n",
"},\n",
"'stat':\"identity\",\n",
"'data':{\n",
"},\n",
"'position':\"stack\",\n",
"'geom':\"bar\"\n",
"}]\n",
"};\n",
" var plotContainer = document.getElementById(\"oOhxan\");\n",
" window.letsPlotCall(function() {{\n",
" LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
" }});\n",
" })(); \n",
" </script>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val p = lets_plot(mapPassing) { x = \"Year\"; y = \"Rate\" } + ggsize(640, 240)\n",
"p + geom_bar(stat=Stat.identity) +\n",
" ggtitle(\"Total Combined Passer Rating per NFL regular season\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"val dfPassingRanges = dfPassing\n",
" .filter { (it[\"Year\"] lt 2021) AND (it[\"Year\"] gt 1990) }\n",
" .addColumn(\"YearRange\") { it[\"Year\"].map<Double>{ floor(it.minus(1).div(5.0)).times(5).plus(1).toInt() }}\n",
" .addColumn(\"Years\") { it[\"YearRange\"].map<Int>{ \"$it - ${it + 4}\" }}\n",
"\n",
"val mapPassingRanges = dfPassingRanges\n",
" .select({ listOf(\"Year\", \"AY/A\", \"Rate\", \"YearRange\", \"Years\") })\n",
" .groupBy(\"YearRange\", \"Years\")\n",
" .summarize(\n",
" \"mean_AY/A\" to { it[\"AY/A\"].mean(removeNA = true) },\n",
" \"mean_Rate\" to { it[\"Rate\"].mean(removeNA = true) }\n",
" ).toMap()\n",
" \n",
"val xlimits = mapPassingRanges[\"Years\"]?.toSet()?.reversed()?.filterNotNull()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"P3bEky\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" (function() {\n",
" var plotSpec={\n",
"'ggtitle':{\n",
"'text':\"Average Adjusted Yards/Attempt per NFL regular season\"\n",
"},\n",
"'mapping':{\n",
"'x':\"Years\",\n",
"'y':\"mean_AY/A\"\n",
"},\n",
"'data':{\n",
"'mean_AY/A':[7.080000000000001,6.859999999999999,6.38,6.159999999999999,6.06,6.0200000000000005],\n",
"'Years':[\"2016 - 2020\",\"2011 - 2015\",\"2006 - 2010\",\"2001 - 2005\",\"1996 - 2000\",\"1991 - 1995\"]\n",
"},\n",
"'ggsize':{\n",
"'width':720,\n",
"'height':240\n",
"},\n",
"'kind':\"plot\",\n",
"'scales':[{\n",
"'aesthetic':\"x\",\n",
"'limits':[\"1991 - 1995\",\"1996 - 2000\",\"2001 - 2005\",\"2006 - 2010\",\"2011 - 2015\",\"2016 - 2020\"]\n",
"},{\n",
"'aesthetic':\"y\",\n",
"'limits':[4.0,8.0]\n",
"}],\n",
"'layers':[{\n",
"'mapping':{\n",
"},\n",
"'stat':\"identity\",\n",
"'data':{\n",
"},\n",
"'position':\"stack\",\n",
"'geom':\"bar\"\n",
"}]\n",
"};\n",
" var plotContainer = document.getElementById(\"P3bEky\");\n",
" window.letsPlotCall(function() {{\n",
" LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
" }});\n",
" })(); \n",
" </script>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val p = letsPlot(mapPassingRanges) { x = \"Years\"; y = \"mean_AY/A\" } + ggsize(720, 240)\n",
"p + geomBar(stat=Stat.identity) + scaleXDiscrete(limits = xlimits) +\n",
" scaleYContinuous(limits = Pair(4.0, 8.0)) +\n",
" ggtitle(\"Average Adjusted Yards/Attempt per NFL regular season\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"cTIjQs\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" (function() {\n",
" var plotSpec={\n",
"'ggtitle':{\n",
"'text':\"Total Combined Passer Rating per NFL regular season\"\n",
"},\n",
"'mapping':{\n",
"'x':\"Years\",\n",
"'y':\"mean_Rate\"\n",
"},\n",
"'data':{\n",
"'Years':[\"2016 - 2020\",\"2011 - 2015\",\"2006 - 2010\",\"2001 - 2005\",\"1996 - 2000\",\"1991 - 1995\"],\n",
"'mean_Rate':[90.61999999999999,87.00000000000001,82.66,80.02000000000001,77.52000000000001,77.16]\n",
"},\n",
"'ggsize':{\n",
"'width':720,\n",
"'height':240\n",
"},\n",
"'kind':\"plot\",\n",
"'scales':[{\n",
"'aesthetic':\"x\",\n",
"'limits':[\"1991 - 1995\",\"1996 - 2000\",\"2001 - 2005\",\"2006 - 2010\",\"2011 - 2015\",\"2016 - 2020\"]\n",
"}],\n",
"'layers':[{\n",
"'mapping':{\n",
"},\n",
"'stat':\"identity\",\n",
"'data':{\n",
"},\n",
"'position':\"stack\",\n",
"'geom':\"bar\"\n",
"}]\n",
"};\n",
" var plotContainer = document.getElementById(\"cTIjQs\");\n",
" window.letsPlotCall(function() {{\n",
" LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
" }});\n",
" })(); \n",
" </script>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val p = letsPlot(mapPassingRanges) { x = \"Years\"; y = \"mean_Rate\" } + ggsize(720, 240)\n",
"p + geomBar(stat=Stat.identity) + scaleXDiscrete(limits = xlimits) +\n",
" ggtitle(\"Total Combined Passer Rating per NFL regular season\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Kotlin",
"language": "kotlin",
"name": "kotlin"
},
"language_info": {
"codemirror_mode": "text/x-kotlin",
"file_extension": ".kt",
"mimetype": "text/x-kotlin",
"name": "kotlin",
"nbconvert_exporter": "",
"pygments_lexer": "kotlin",
"version": "1.5.30-dev-598"
}
},
"nbformat": 4,
"nbformat_minor": 4
}