From d5c14396dfea9ba2a5acf0b4b5c0ddb2f3a1f0fb Mon Sep 17 00:00:00 2001 From: Erik Hall Date: Wed, 4 Sep 2024 10:10:01 -0500 Subject: [PATCH] Fixing to get latest data --- Data/Weekly_Data.csv | 110 +----------------- Shiny_App/Weekly_Data.csv | 110 +----------------- docs/app.json | 2 +- .../Quarterback_Stats.cpython-311.pyc | Bin 6540 -> 6540 bytes 4 files changed, 3 insertions(+), 219 deletions(-) diff --git a/Data/Weekly_Data.csv b/Data/Weekly_Data.csv index eccbac5..d9883ef 100644 --- a/Data/Weekly_Data.csv +++ b/Data/Weekly_Data.csv @@ -1,111 +1,4 @@ Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI -<<<<<<< Updated upstream -Jayden Daniels,LSU,208.0,40,10,1,10.366855629529665 -Jason Bean,Kansas,175.0,18,3,1,5.876895066699346 -Jalen Milroe,Alabama,172.2,23,12,1,17.289403204983948 -Kaidon Salter,Liberty,176.6,32,12,0,9.994191866699687 -Bo Nix,Oregon,188.3,45,6,1,11.720207865662873 -Carson Beck,Georgia,167.9,24,4,1,18.712372015067803 -Dillon Gabriel,Oklahoma,172.0,30,12,1,9.176017341787714 -Caleb Williams,USC,170.1,30,11,1,4.615088406650977 -Jaxson Dart,Ole Miss,162.4,23,8,1,13.618664478875845 -Preston Stone,SMU,161.3,28,4,0,5.84214389996511 -Kyle McCord,Ohio State,161.6,24,0,1,14.425251856848131 -Brady Cook,Missouri,157.2,21,8,1,14.537935187839166 -J.J. McCarthy,Michigan,167.4,22,3,1,22.809715861921212 -Jordan McCloud,James Madison,165.9,35,8,0,9.52021697521469 -Sam Hartman,Notre Dame,159.5,24,3,1,8.410115867730319 -Jaylen Raynor,Arkansas State,148.2,17,5,0,1.2633107441783211 -John Rhys Plumlee,UCF,150.5,15,5,1,1.5867570994933875 -Michael Penix Jr.,Washington,157.1,36,3,1,18.991581251208515 -Quinn Ewers,Texas,158.6,22,5,1,15.17609549606366 -Jayden Maiava,UNLV,147.1,17,3,0,4.0994034444423395 -Garrett Greene,West Virginia,142.2,16,13,1,4.866312050505482 -Noah Fifita,Arizona,165.9,25,0,1,7.651125083146154 -Drake Maye,North Carolina,149.0,24,9,1,3.7405742702252773 -Rocco Becht,Iowa State,150.7,23,3,1,3.412224845890198 -Jordan Travis,Florida State,154.5,20,7,1,15.084730743979957 -Michael Pratt,Tulane,158.9,22,5,0,7.1783601432621 -DeQuan Finn,Toledo,151.0,22,7,0,5.730027142387663 -D.J. Uiagalelei,Oregon State,145.0,21,6,1,4.797539737626404 -TJ Finley,Texas State,152.4,24,5,0,2.6586504692963713 -Taylen Green,Boise State,135.1,11,9,0,3.5869450546146266 -Seth Henigan,Memphis,153.7,32,5,0,6.826599127360387 -Joey Aguilar,Appalachian State,151.6,33,3,0,4.40800378322824 -Jacob Zeno,UAB,155.6,20,4,0,0.4982213068713721 -Carter Bradley,South Alabama,151.3,19,1,0,2.2580371362218874 -Gunnar Watson,Troy,146.9,27,1,0,7.826732613942279 -Jack Plummer,Louisville,144.4,21,1,1,6.239373009808751 -Diego Pavia,New Mexico State,147.1,26,7,0,2.836980525219623 -Graham Mertz,Florida,157.8,20,4,1,1.3236354908157744 -Tyler Van Dyke,Miami (FL),145.6,19,1,1,2.9374986899880415 -Chandler Rogers,North Texas,150.1,29,4,0,0.8700357040705953 -Spencer Rattler,South Carolina,147.7,19,4,1,1.567319867462205 -Joe Milton,Tennessee,147.3,20,7,1,6.924015154804859 -Garrett Shrader,Syracuse,143.2,13,8,1,1.4671235873131612 -Cameron Ward,Washington State,145.4,25,8,1,1.08002285335208 -Taulia Tagovailoa,Maryland,145.1,25,5,1,3.8337523394431012 -Byrum Brown,South Florida,144.3,26,11,0,2.198026762398749 -Haynes King,Georgia Tech,142.2,27,10,1,2.9778369104723215 -Chevan Cordeiro,San Jose State,142.0,20,3,0,2.5259330389767 -Hank Bachmeier,Louisiana Tech,140.5,10,2,0,0.18326839491414107 -Shedeur Sanders,Colorado,151.7,27,4,1,0.5565154433563065 -Frank Harris,UTSA,140.4,18,4,0,3.8674798266685246 -Andrew Peasley,Wyoming,146.3,20,7,0,5.9667700966950505 -Mitch Griffis,Wake Forest,130.5,9,2,1,0.6365121446101879 -Brayden Fowler-Nicolosi,Colorado State,132.6,22,1,0,0.7147765799018316 -Devin Leary,Kentucky,134.3,25,1,1,2.890390894445097 -Will Howard,Kansas State,140.1,24,9,1,7.096138349512218 -Josh Hoover,TCU,134.8,15,2,1,1.3207194466795082 -Dylan Hopkins,New Mexico,123.9,11,1,0,0.47160619567026185 -Darren Grainger,Georgia State,144.2,20,10,0,2.5210079698675134 -Keyone Jenkins,Florida International,123.8,11,6,0,0.3410787998829191 -Kyron Drones,Virginia Tech,137.3,17,5,1,2.5086646114894773 -Nicholas Vattiato,Middle Tennessee State,139.2,23,2,0,0.5434229990149028 -Kurtis Rourke,Ohio,132.5,11,4,0,3.9398066881460228 -Austin Reed,Western Kentucky,138.3,31,4,0,3.621249122134567 -Mikey Keene,Fresno State,140.3,24,1,0,3.4361849222095247 -Donovan Smith,Houston,135.5,22,6,1,0.550157352780512 -K.J. Jefferson,Arkansas,139.8,19,2,1,0.6321516911199437 -Rocky Lombardi,Northern Illinois,123.0,11,7,0,1.5117196931843082 -Cam Fancher,Marshall,128.8,11,4,0,1.7455596213084952 -Connor Bazelak,Bowling Green State,128.1,12,2,0,2.607189744091304 -Luke Altmyer,Illinois,131.9,13,3,1,1.187424951149368 -Alan Bowman,Oklahoma State,123.0,15,2,1,6.888918542285118 -E.J. Warner,Temple,127.3,23,0,0,0.17452898041140563 -Ashton Daniels,Stanford,123.1,11,3,1,0.3273583693370905 -Emory Jones,Cincinnati,131.3,18,4,1,0.2294779129600558 -Grant Wilson,Old Dominion,127.8,17,4,0,1.5020475127879858 -Davis Brin,Georgia Southern,130.6,24,1,0,1.2488562600912383 -Drew Allar,Penn State,136.9,25,4,1,10.928999023238015 -Thomas Castellanos,Boston College,121.0,15,13,1,2.537310440575589 -Brennan Armstrong,North Carolina State,126.8,11,7,1,5.863543021399888 -Brayden Schager,Hawaii,130.9,26,2,0,0.7736969224426569 -Brendan Sorsby,Indiana,129.9,15,4,1,0.24970215625207043 -Tanner Mordecai,Wisconsin,127.1,9,4,1,2.2740066812177426 -Jase Bauer,Central Michigan,120.1,12,10,0,0.8550394888435654 -Payton Thorne,Auburn,129.1,16,3,1,1.9133410807364093 -Taisun Phommachanh,Massachusetts,120.4,6,2,0,0.24680809601070972 -Hudson Card,Purdue,123.0,15,5,1,0.6897337403828949 -Jalen Mayden,San Diego State,122.5,10,5,0,0.49504636621511416 -Bryson Barnes,Utah,120.5,12,3,1,4.543543890461846 -Billy Wiles,Southern Mississippi,115.4,11,1,0,0.26036280793545585 -Cade Klubnik,Clemson,126.3,19,4,1,6.253112125056837 -Athan Kaliakmanis,Minnesota,115.2,14,2,1,1.786242925913887 -Daniel Richardson,Florida Atlantic,123.9,13,0,0,0.42871330780776784 -Jeff Undercuffler,Akron,111.1,4,1,0,0.038661227093447735 -Trexler Ivey,Charlotte,104.1,4,3,0,0.17562692278734 -Ta'Quan Roberson,Connecticut,118.0,12,2,0,0.2080382436260623 -Jiya Wright,Louisiana-Monroe,112.1,10,2,0,0.06873085042996767 -Austin Smith,Eastern Michigan,112.7,9,2,0,0.8243537825285366 -Behren Morton,Texas Tech,123.9,15,4,1,3.1061623986950173 -Gavin Wimsatt,Rutgers,102.9,9,11,1,3.05209585241222 -Katin Houser,Michigan State,113.5,6,2,1,0.8891105990756197 -Cole Snyder,Buffalo,108.9,13,1,0,0.20703490230947783 -Brendon Lewis,Nevada,100.0,2,4,0,0.06607472943836935 -Alex Flinn,East Carolina,98.5,6,0,0,0.07417301359925038 -Deacon Hill,Iowa,87.4,5,2,1,6.682045091050634 -======= D.J. Uiagalelei,Florida State,116.5,1.0,0.0,1,0.0 Shedeur Sanders,Colorado,219.4,4.0,0.0,1,25.0 Devon Dampier,New Mexico,128.7,4.0,3.0,0,0.0 @@ -221,5 +114,4 @@ Max Johnson,North Carolina,84.0,0.0,1.0,1,25.0 Brayden Fowler-Nicolosi,Colorado State,72.0,0.0,0.0,0,0.0 Ben Finley,Akron,74.7,0.0,0.0,0,0.0 Evan Svoboda,Wyoming,36.9,0.0,0.0,0,0.0 -Parker Awad,New Mexico State,35.9,0.0,0.0,0,25.0 ->>>>>>> Stashed changes +Parker Awad,New Mexico State,33.9,0.0,0.0,0,25.0 diff --git a/Shiny_App/Weekly_Data.csv b/Shiny_App/Weekly_Data.csv index eccbac5..d9883ef 100644 --- a/Shiny_App/Weekly_Data.csv +++ b/Shiny_App/Weekly_Data.csv @@ -1,111 +1,4 @@ Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI -<<<<<<< Updated upstream -Jayden Daniels,LSU,208.0,40,10,1,10.366855629529665 -Jason Bean,Kansas,175.0,18,3,1,5.876895066699346 -Jalen Milroe,Alabama,172.2,23,12,1,17.289403204983948 -Kaidon Salter,Liberty,176.6,32,12,0,9.994191866699687 -Bo Nix,Oregon,188.3,45,6,1,11.720207865662873 -Carson Beck,Georgia,167.9,24,4,1,18.712372015067803 -Dillon Gabriel,Oklahoma,172.0,30,12,1,9.176017341787714 -Caleb Williams,USC,170.1,30,11,1,4.615088406650977 -Jaxson Dart,Ole Miss,162.4,23,8,1,13.618664478875845 -Preston Stone,SMU,161.3,28,4,0,5.84214389996511 -Kyle McCord,Ohio State,161.6,24,0,1,14.425251856848131 -Brady Cook,Missouri,157.2,21,8,1,14.537935187839166 -J.J. McCarthy,Michigan,167.4,22,3,1,22.809715861921212 -Jordan McCloud,James Madison,165.9,35,8,0,9.52021697521469 -Sam Hartman,Notre Dame,159.5,24,3,1,8.410115867730319 -Jaylen Raynor,Arkansas State,148.2,17,5,0,1.2633107441783211 -John Rhys Plumlee,UCF,150.5,15,5,1,1.5867570994933875 -Michael Penix Jr.,Washington,157.1,36,3,1,18.991581251208515 -Quinn Ewers,Texas,158.6,22,5,1,15.17609549606366 -Jayden Maiava,UNLV,147.1,17,3,0,4.0994034444423395 -Garrett Greene,West Virginia,142.2,16,13,1,4.866312050505482 -Noah Fifita,Arizona,165.9,25,0,1,7.651125083146154 -Drake Maye,North Carolina,149.0,24,9,1,3.7405742702252773 -Rocco Becht,Iowa State,150.7,23,3,1,3.412224845890198 -Jordan Travis,Florida State,154.5,20,7,1,15.084730743979957 -Michael Pratt,Tulane,158.9,22,5,0,7.1783601432621 -DeQuan Finn,Toledo,151.0,22,7,0,5.730027142387663 -D.J. Uiagalelei,Oregon State,145.0,21,6,1,4.797539737626404 -TJ Finley,Texas State,152.4,24,5,0,2.6586504692963713 -Taylen Green,Boise State,135.1,11,9,0,3.5869450546146266 -Seth Henigan,Memphis,153.7,32,5,0,6.826599127360387 -Joey Aguilar,Appalachian State,151.6,33,3,0,4.40800378322824 -Jacob Zeno,UAB,155.6,20,4,0,0.4982213068713721 -Carter Bradley,South Alabama,151.3,19,1,0,2.2580371362218874 -Gunnar Watson,Troy,146.9,27,1,0,7.826732613942279 -Jack Plummer,Louisville,144.4,21,1,1,6.239373009808751 -Diego Pavia,New Mexico State,147.1,26,7,0,2.836980525219623 -Graham Mertz,Florida,157.8,20,4,1,1.3236354908157744 -Tyler Van Dyke,Miami (FL),145.6,19,1,1,2.9374986899880415 -Chandler Rogers,North Texas,150.1,29,4,0,0.8700357040705953 -Spencer Rattler,South Carolina,147.7,19,4,1,1.567319867462205 -Joe Milton,Tennessee,147.3,20,7,1,6.924015154804859 -Garrett Shrader,Syracuse,143.2,13,8,1,1.4671235873131612 -Cameron Ward,Washington State,145.4,25,8,1,1.08002285335208 -Taulia Tagovailoa,Maryland,145.1,25,5,1,3.8337523394431012 -Byrum Brown,South Florida,144.3,26,11,0,2.198026762398749 -Haynes King,Georgia Tech,142.2,27,10,1,2.9778369104723215 -Chevan Cordeiro,San Jose State,142.0,20,3,0,2.5259330389767 -Hank Bachmeier,Louisiana Tech,140.5,10,2,0,0.18326839491414107 -Shedeur Sanders,Colorado,151.7,27,4,1,0.5565154433563065 -Frank Harris,UTSA,140.4,18,4,0,3.8674798266685246 -Andrew Peasley,Wyoming,146.3,20,7,0,5.9667700966950505 -Mitch Griffis,Wake Forest,130.5,9,2,1,0.6365121446101879 -Brayden Fowler-Nicolosi,Colorado State,132.6,22,1,0,0.7147765799018316 -Devin Leary,Kentucky,134.3,25,1,1,2.890390894445097 -Will Howard,Kansas State,140.1,24,9,1,7.096138349512218 -Josh Hoover,TCU,134.8,15,2,1,1.3207194466795082 -Dylan Hopkins,New Mexico,123.9,11,1,0,0.47160619567026185 -Darren Grainger,Georgia State,144.2,20,10,0,2.5210079698675134 -Keyone Jenkins,Florida International,123.8,11,6,0,0.3410787998829191 -Kyron Drones,Virginia Tech,137.3,17,5,1,2.5086646114894773 -Nicholas Vattiato,Middle Tennessee State,139.2,23,2,0,0.5434229990149028 -Kurtis Rourke,Ohio,132.5,11,4,0,3.9398066881460228 -Austin Reed,Western Kentucky,138.3,31,4,0,3.621249122134567 -Mikey Keene,Fresno State,140.3,24,1,0,3.4361849222095247 -Donovan Smith,Houston,135.5,22,6,1,0.550157352780512 -K.J. Jefferson,Arkansas,139.8,19,2,1,0.6321516911199437 -Rocky Lombardi,Northern Illinois,123.0,11,7,0,1.5117196931843082 -Cam Fancher,Marshall,128.8,11,4,0,1.7455596213084952 -Connor Bazelak,Bowling Green State,128.1,12,2,0,2.607189744091304 -Luke Altmyer,Illinois,131.9,13,3,1,1.187424951149368 -Alan Bowman,Oklahoma State,123.0,15,2,1,6.888918542285118 -E.J. Warner,Temple,127.3,23,0,0,0.17452898041140563 -Ashton Daniels,Stanford,123.1,11,3,1,0.3273583693370905 -Emory Jones,Cincinnati,131.3,18,4,1,0.2294779129600558 -Grant Wilson,Old Dominion,127.8,17,4,0,1.5020475127879858 -Davis Brin,Georgia Southern,130.6,24,1,0,1.2488562600912383 -Drew Allar,Penn State,136.9,25,4,1,10.928999023238015 -Thomas Castellanos,Boston College,121.0,15,13,1,2.537310440575589 -Brennan Armstrong,North Carolina State,126.8,11,7,1,5.863543021399888 -Brayden Schager,Hawaii,130.9,26,2,0,0.7736969224426569 -Brendan Sorsby,Indiana,129.9,15,4,1,0.24970215625207043 -Tanner Mordecai,Wisconsin,127.1,9,4,1,2.2740066812177426 -Jase Bauer,Central Michigan,120.1,12,10,0,0.8550394888435654 -Payton Thorne,Auburn,129.1,16,3,1,1.9133410807364093 -Taisun Phommachanh,Massachusetts,120.4,6,2,0,0.24680809601070972 -Hudson Card,Purdue,123.0,15,5,1,0.6897337403828949 -Jalen Mayden,San Diego State,122.5,10,5,0,0.49504636621511416 -Bryson Barnes,Utah,120.5,12,3,1,4.543543890461846 -Billy Wiles,Southern Mississippi,115.4,11,1,0,0.26036280793545585 -Cade Klubnik,Clemson,126.3,19,4,1,6.253112125056837 -Athan Kaliakmanis,Minnesota,115.2,14,2,1,1.786242925913887 -Daniel Richardson,Florida Atlantic,123.9,13,0,0,0.42871330780776784 -Jeff Undercuffler,Akron,111.1,4,1,0,0.038661227093447735 -Trexler Ivey,Charlotte,104.1,4,3,0,0.17562692278734 -Ta'Quan Roberson,Connecticut,118.0,12,2,0,0.2080382436260623 -Jiya Wright,Louisiana-Monroe,112.1,10,2,0,0.06873085042996767 -Austin Smith,Eastern Michigan,112.7,9,2,0,0.8243537825285366 -Behren Morton,Texas Tech,123.9,15,4,1,3.1061623986950173 -Gavin Wimsatt,Rutgers,102.9,9,11,1,3.05209585241222 -Katin Houser,Michigan State,113.5,6,2,1,0.8891105990756197 -Cole Snyder,Buffalo,108.9,13,1,0,0.20703490230947783 -Brendon Lewis,Nevada,100.0,2,4,0,0.06607472943836935 -Alex Flinn,East Carolina,98.5,6,0,0,0.07417301359925038 -Deacon Hill,Iowa,87.4,5,2,1,6.682045091050634 -======= D.J. Uiagalelei,Florida State,116.5,1.0,0.0,1,0.0 Shedeur Sanders,Colorado,219.4,4.0,0.0,1,25.0 Devon Dampier,New Mexico,128.7,4.0,3.0,0,0.0 @@ -221,5 +114,4 @@ Max Johnson,North Carolina,84.0,0.0,1.0,1,25.0 Brayden Fowler-Nicolosi,Colorado State,72.0,0.0,0.0,0,0.0 Ben Finley,Akron,74.7,0.0,0.0,0,0.0 Evan Svoboda,Wyoming,36.9,0.0,0.0,0,0.0 -Parker Awad,New Mexico State,35.9,0.0,0.0,0,25.0 ->>>>>>> Stashed changes +Parker Awad,New Mexico State,33.9,0.0,0.0,0,25.0 diff --git a/docs/app.json b/docs/app.json index c766870..28c216f 100644 --- a/docs/app.json +++ b/docs/app.json @@ -1 +1 @@ -[{"name": "app.py", "content": "from shiny import App, ui, render\nimport pandas as pd\nimport numpy as np\nimport pickle\nimport statsmodels.api as sm\nfrom shinywidgets import output_widget, render_widget\nimport plotly.express as px\n\n\nfrom shared import app_dir, model, model_data, predict_data, current_df, current_predict_df, html_top10_string\n\n\n# Part 1: ui ----\napp_ui = ui.page_fluid(\n ui.navset_tab(\n ui.nav(\"Model Details\", \n \n ui.markdown(\n \"\"\"\n # So how does this model work anyway?\n This is a project initially created in the loads of free time that existed in the summer of 2020. And now\n has taken on a collaborative work effort in the creation of the product.\n
\n\n Simply put, the model aims to predict the final standings for the most prestigous indivdual award in \n collegiate football, specifically for quarterbacks. For legal purposes, this project does not explicitly call\n out the name of the award. As a hint, the award is named after the man that coached Georgia Tech to a 222-0 victory\n against Cumberland in 1916. It is worth note that the model focuses on quarterbacks only,\n as it is difficult to come up with a sample of metrics that apply to the different positions across college football.\n
\n\n The model itself is a linear regression with award voting points as a response, and individual and team\n statitistics as the predictors. The model is built with training data from the 2006 to 2018 seasons.\n
\n\n The model is made up of the following 5 predictors;\n
\n \n **Passer Rating** : Passer efficency rating as according to pro-football-reference.com.\n
\n\n **Passing TDs** : Number of passing touchdowns thrown by a quarterback.\n
\n\n **Rushing TDs** : Number of rushing touchdowns ran by a quarterback.\n
\n\n **Power 5 Indicator** : A binary value of 0 or 1. Set equal to 1, \n if the quarterback's team plays in a power 5 conference. Otherwise 0. Notre Dame is the only independent team \n to receive a power 5 label.\n
\n\n **CPI** : A team strength of record metric involving the winning percentages of opponents. More details \n of the metric can be found at www.cpiratings.com/about.html.\n \"\"\"\n )\n ),\n ui.nav(\"Past Model Results\", \n \n ui.input_select(\"model_year\", \"Model Year\", model_data['Year'].tolist()),\n ui.output_table(\"historical_data\")\n ),\n\n ui.nav(\"Current Model Results\", \n ui.output_table(\"current_data\")\n ),\n \n ui.nav(\"What If\", \n \n ui.input_numeric(\"what_if_QBR\", \"Passer Rating\", value=0.0),\n ui.input_numeric(\"what_if_pass_TD\", \"Passing TDs\", value=0),\n ui.input_numeric(\"what_if_rush_TD\", \"Rushing TDs\", value=0),\n ui.input_radio_buttons(\"what_if_power_5\", \"Power 5 Conference\", {1 : \"Yes\", 0: \"No\"}),\n ui.input_numeric(\"what_if_CPI\", \"CPI\", value=0.0),\n ui.output_text(\"what_if_analysis\")\n ),\n ui.nav(\"Scatter\",\n ui.div(\n output_widget(\"my_widget\")\n )\n ),\n ui.nav(\"Top 10\",\n ui.HTML(html_top10_string)\n ) \n )\n)\n\n\n# Part 2: server ----\ndef server(input, output, session):\n\n @output\n @render.table\n def historical_data():\n\n result_df = model_data[model_data['Year'] == int(input.model_year())]\n\n result_df['Actual_Rank'] = result_df['points_won'].rank(ascending = False).astype('int')\n result_df['Predicted_Rank'] = result_df['Prediction'].rank(ascending = False).astype('int')\n\n result_cols = ['Player', 'School', 'Actual_Rank', 'Predicted_Rank', 'Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']\n result_df = result_df[result_cols]\n\n return result_df\n \n @output\n @render.table\n def current_data():\n\n result_df = current_df\n\n result_df = result_df.sort_values(by = 'Projected Voting Points', ascending = False)\n result_df = result_df.reset_index(drop = True)\n result_df['Rank'] = result_df.index + 1\n result_cols = ['Rank', 'Player', 'School', 'Projected Voting Points', 'Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']\n result_df = result_df[result_cols]\n\n return result_df\n \n @output\n @render.text\n def what_if_analysis():\n\n what_if_df = pd.DataFrame({\n 'Passing_Rate' : [float(input.what_if_QBR())],\n 'Passing_TD' : [int(input.what_if_pass_TD())],\n 'Rushing_TD' : [int(input.what_if_rush_TD())],\n 'Power5' : [int(input.what_if_power_5())],\n 'CPI' : [float(input.what_if_CPI())]\n })\n\n what_if_df = sm.tools.add_constant(what_if_df, has_constant='add')\n\n what_if_df['Prediction'] = model.predict(what_if_df)\n\n result = what_if_df.iloc[0]['Prediction']\n result = result.round(2)\n\n return f\"A player with these statistics would have {result} projected voting points.\"\n \n @output\n @render_widget\n def my_widget():\n fig = px.scatter(\n model_data, x=\"Year\", y=\"Prediction\",\n hover_data=['Player']\n )\n return fig\n\n# Combine into a shiny app.\n# Note that the variable must be \"app\".\napp = App(app_ui, server)", "type": "text"}, {"name": "Model_Data.csv", "content": "Player,School,Year,points_won,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI\nTroy Smith,Ohio State,2006,2540,161.9,30,1,1,15.013680174870936\nBrady Quinn,Notre Dame,2006,782,146.7,37,2,1,8.231919146738909\nColt Brennan,Hawaii,2006,202,186.0,58,5,0,6.365435540069685\nTim Tebow,Florida,2007,1957,172.5,32,23,1,7.987912822160973\nColt Brennan,Hawaii,2007,632,159.8,38,8,0,7.5994759572849\nChase Daniel,Missouri,2007,425,147.9,33,4,1,11.748104548755686\nDennis Dixon,Oregon,2007,178,161.2,20,9,1,6.540100800550993\nPat White,West Virginia,2007,150,151.4,14,14,0,11.379512110196254\nMatt Ryan,Boston College,2007,63,127.0,31,2,1,8.768469146897912\nSam Bradford,Oklahoma,2008,1726,180.8,50,5,1,15.05704821146074\nColt McCoy,Texas,2008,1604,173.8,34,11,1,18.946208112380297\nTim Tebow,Florida,2008,1575,172.4,30,12,1,19.409963559776127\nGraham Harrell,Texas Tech,2008,213,160.0,45,6,1,13.05053009399466\nPat White,West Virginia,2008,19,142.3,21,8,0,6.385230641176652\nNate Davis,Ball State,2008,10,157.0,26,5,0,6.050702467936028\nColt McCoy,Texas,2009,1145,147.4,27,3,1,16.18331903502398\nTim Tebow,Florida,2009,390,164.2,21,14,1,18.51486090299109\nKellen Moore,Boise State,2009,100,161.7,39,1,0,14.46082921027991\nCase Keenum,Houston,2009,37,154.8,44,4,0,4.218052997436561\nCam Newton,Auburn,2010,2263,182.0,30,20,1,23.86780983482786\nAndrew Luck,Stanford,2010,1079,170.2,32,3,1,13.946308906421848\nKellen Moore,Boise State,2010,635,182.6,35,1,0,12.802241937566109\nDenard Robinson,Michigan,2010,84,149.6,18,14,1,3.2478886059804224\nRyan Mallett,Arkansas,2010,41,163.6,32,4,1,10.82973394387262\nColin Kaepernick,Nevada,2010,31,150.5,21,20,0,11.384387560083765\nAndy Dalton,TCU,2010,30,166.5,27,6,0,14.944350584507326\nRobert Griffin III,Baylor,2011,1687,189.5,37,10,1,10.316157413813375\nAndrew Luck,Stanford,2011,1407,169.7,37,2,1,9.667409405228565\nMatt Barkley,USC,2011,153,161.2,39,2,1,9.562203977574791\nCase Keenum,Houston,2011,123,174.0,48,3,0,11.420863535280626\nKellen Moore,Boise State,2011,90,175.2,43,0,0,12.265954369362133\nRussell Wilson,Wisconsin,2011,52,191.8,33,6,1,8.281890427937858\nJohnny Manziel,Texas A&M,2012,2029,155.3,26,21,1,15.754760156860875\nCollin Klein,Kansas State,2012,894,149.2,16,23,1,11.817693133497077\nBraxton Miller,Ohio State,2012,144,140.5,15,13,1,15.169148199200322\nJordan Lynch,Northern Illinois,2012,52,144.9,25,19,0,6.92703223246081\nJameis Winston,Florida State,2013,2205,184.8,40,4,1,19.32052650022246\nA.J. McCarron,Alabama,2013,704,167.2,28,0,1,11.90196866646686\nJordan Lynch,Northern Illinois,2013,558,138.4,24,23,0,7.111211920283987\nJohnny Manziel,Texas A&M,2013,421,172.9,37,9,1,8.051361094960829\nBryce Petty,Baylor,2013,127,174.3,32,14,1,11.402244928532845\nDerek Carr,Fresno State,2013,107,156.3,50,2,0,7.156147448813237\nBraxton Miller,Ohio State,2013,91,158.1,24,12,1,10.39338163747249\nMarcus Mariota,Oregon,2014,2534,181.7,42,15,1,16.12744333111277\nTrevone Boykin,TCU,2014,218,145.9,33,8,1,13.076626318134918\nJ.T. Barrett,Ohio State,2014,78,169.8,34,11,1,20.0747422358138\nJameis Winston,Florida State,2014,51,145.5,25,3,1,18.46103191334333\nDak Prescott,Mississippi State,2014,21,151.7,27,14,1,9.456126458240307\nDeshaun Watson,Clemson,2015,1165,156.3,35,12,1,19.16167854243615\nBaker Mayfield,Oklahoma,2015,334,173.3,36,7,1,12.740224517380366\nKeenan Reynolds,Navy,2015,180,162.1,8,24,0,10.128862442591032\nConnor Cook,Michigan State,2015,13,136.6,24,0,1,14.713371407886711\nLamar Jackson,Louisville,2016,2144,148.8,30,21,1,5.608782090662399\nDeshaun Watson,Clemson,2016,1524,151.1,41,9,1,23.78005620893973\nBaker Mayfield,Oklahoma,2016,361,196.4,40,6,1,11.25001891558911\nJake Browning,Washington,2016,182,167.5,43,4,1,12.923870541835983\nBaker Mayfield,Oklahoma,2017,2398,198.9,43,5,1,11.183099131224177\nLamar Jackson,Louisville,2017,793,146.6,27,18,1,3.9226957076095994\nMason Rudolph,Oklahoma State,2017,56,170.6,37,10,1,6.425405376500221\nMcKenzie Milton,UCF,2017,54,179.3,37,8,0,19.08379077956817\nKyler Murray,Oklahoma,2018,2167,199.2,42,12,1,12.942861869472573\nTua Tagovailoa,Alabama,2018,1871,199.4,43,5,1,20.688097541235337\nDwayne Haskins,Ohio State,2018,783,174.1,50,4,1,13.097950650643533\nWill Grier,West Virginia,2018,126,175.5,37,3,1,5.5749718367802\nGardner Minshew,Washington State,2018,122,147.6,38,4,1,10.593990104817577\nMcKenzie Milton,UCF,2018,39,161.0,25,9,0,11.842688493982308\nJoe Burrow,LSU,2019,2608,202.0,60,5,1,27.81090580974389\nJalen Hurts,Oklahoma,2019,762,191.2,32,20,1,11.86131918185052\nJustin Fields,Ohio State,2019,747,181.4,41,10,1,19.03510596761913\nTrevor Lawrence,Clemson,2019,88,166.7,36,9,1,17.71916867557893\n", "type": "text"}, {"name": "Weekly_Data.csv", "content": "Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI\n<<<<<<< Updated upstream\nJayden Daniels,LSU,208.0,40,10,1,10.366855629529665\nJason Bean,Kansas,175.0,18,3,1,5.876895066699346\nJalen Milroe,Alabama,172.2,23,12,1,17.289403204983948\nKaidon Salter,Liberty,176.6,32,12,0,9.994191866699687\nBo Nix,Oregon,188.3,45,6,1,11.720207865662873\nCarson Beck,Georgia,167.9,24,4,1,18.712372015067803\nDillon Gabriel,Oklahoma,172.0,30,12,1,9.176017341787714\nCaleb Williams,USC,170.1,30,11,1,4.615088406650977\nJaxson Dart,Ole Miss,162.4,23,8,1,13.618664478875845\nPreston Stone,SMU,161.3,28,4,0,5.84214389996511\nKyle McCord,Ohio State,161.6,24,0,1,14.425251856848131\nBrady Cook,Missouri,157.2,21,8,1,14.537935187839166\nJ.J. McCarthy,Michigan,167.4,22,3,1,22.809715861921212\nJordan McCloud,James Madison,165.9,35,8,0,9.52021697521469\nSam Hartman,Notre Dame,159.5,24,3,1,8.410115867730319\nJaylen Raynor,Arkansas State,148.2,17,5,0,1.2633107441783211\nJohn Rhys Plumlee,UCF,150.5,15,5,1,1.5867570994933875\nMichael Penix Jr.,Washington,157.1,36,3,1,18.991581251208515\nQuinn Ewers,Texas,158.6,22,5,1,15.17609549606366\nJayden Maiava,UNLV,147.1,17,3,0,4.0994034444423395\nGarrett Greene,West Virginia,142.2,16,13,1,4.866312050505482\nNoah Fifita,Arizona,165.9,25,0,1,7.651125083146154\nDrake Maye,North Carolina,149.0,24,9,1,3.7405742702252773\nRocco Becht,Iowa State,150.7,23,3,1,3.412224845890198\nJordan Travis,Florida State,154.5,20,7,1,15.084730743979957\nMichael Pratt,Tulane,158.9,22,5,0,7.1783601432621\nDeQuan Finn,Toledo,151.0,22,7,0,5.730027142387663\nD.J. Uiagalelei,Oregon State,145.0,21,6,1,4.797539737626404\nTJ Finley,Texas State,152.4,24,5,0,2.6586504692963713\nTaylen Green,Boise State,135.1,11,9,0,3.5869450546146266\nSeth Henigan,Memphis,153.7,32,5,0,6.826599127360387\nJoey Aguilar,Appalachian State,151.6,33,3,0,4.40800378322824\nJacob Zeno,UAB,155.6,20,4,0,0.4982213068713721\nCarter Bradley,South Alabama,151.3,19,1,0,2.2580371362218874\nGunnar Watson,Troy,146.9,27,1,0,7.826732613942279\nJack Plummer,Louisville,144.4,21,1,1,6.239373009808751\nDiego Pavia,New Mexico State,147.1,26,7,0,2.836980525219623\nGraham Mertz,Florida,157.8,20,4,1,1.3236354908157744\nTyler Van Dyke,Miami (FL),145.6,19,1,1,2.9374986899880415\nChandler Rogers,North Texas,150.1,29,4,0,0.8700357040705953\nSpencer Rattler,South Carolina,147.7,19,4,1,1.567319867462205\nJoe Milton,Tennessee,147.3,20,7,1,6.924015154804859\nGarrett Shrader,Syracuse,143.2,13,8,1,1.4671235873131612\nCameron Ward,Washington State,145.4,25,8,1,1.08002285335208\nTaulia Tagovailoa,Maryland,145.1,25,5,1,3.8337523394431012\nByrum Brown,South Florida,144.3,26,11,0,2.198026762398749\nHaynes King,Georgia Tech,142.2,27,10,1,2.9778369104723215\nChevan Cordeiro,San Jose State,142.0,20,3,0,2.5259330389767\nHank Bachmeier,Louisiana Tech,140.5,10,2,0,0.18326839491414107\nShedeur Sanders,Colorado,151.7,27,4,1,0.5565154433563065\nFrank Harris,UTSA,140.4,18,4,0,3.8674798266685246\nAndrew Peasley,Wyoming,146.3,20,7,0,5.9667700966950505\nMitch Griffis,Wake Forest,130.5,9,2,1,0.6365121446101879\nBrayden Fowler-Nicolosi,Colorado State,132.6,22,1,0,0.7147765799018316\nDevin Leary,Kentucky,134.3,25,1,1,2.890390894445097\nWill Howard,Kansas State,140.1,24,9,1,7.096138349512218\nJosh Hoover,TCU,134.8,15,2,1,1.3207194466795082\nDylan Hopkins,New Mexico,123.9,11,1,0,0.47160619567026185\nDarren Grainger,Georgia State,144.2,20,10,0,2.5210079698675134\nKeyone Jenkins,Florida International,123.8,11,6,0,0.3410787998829191\nKyron Drones,Virginia Tech,137.3,17,5,1,2.5086646114894773\nNicholas Vattiato,Middle Tennessee State,139.2,23,2,0,0.5434229990149028\nKurtis Rourke,Ohio,132.5,11,4,0,3.9398066881460228\nAustin Reed,Western Kentucky,138.3,31,4,0,3.621249122134567\nMikey Keene,Fresno State,140.3,24,1,0,3.4361849222095247\nDonovan Smith,Houston,135.5,22,6,1,0.550157352780512\nK.J. Jefferson,Arkansas,139.8,19,2,1,0.6321516911199437\nRocky Lombardi,Northern Illinois,123.0,11,7,0,1.5117196931843082\nCam Fancher,Marshall,128.8,11,4,0,1.7455596213084952\nConnor Bazelak,Bowling Green State,128.1,12,2,0,2.607189744091304\nLuke Altmyer,Illinois,131.9,13,3,1,1.187424951149368\nAlan Bowman,Oklahoma State,123.0,15,2,1,6.888918542285118\nE.J. Warner,Temple,127.3,23,0,0,0.17452898041140563\nAshton Daniels,Stanford,123.1,11,3,1,0.3273583693370905\nEmory Jones,Cincinnati,131.3,18,4,1,0.2294779129600558\nGrant Wilson,Old Dominion,127.8,17,4,0,1.5020475127879858\nDavis Brin,Georgia Southern,130.6,24,1,0,1.2488562600912383\nDrew Allar,Penn State,136.9,25,4,1,10.928999023238015\nThomas Castellanos,Boston College,121.0,15,13,1,2.537310440575589\nBrennan Armstrong,North Carolina State,126.8,11,7,1,5.863543021399888\nBrayden Schager,Hawaii,130.9,26,2,0,0.7736969224426569\nBrendan Sorsby,Indiana,129.9,15,4,1,0.24970215625207043\nTanner Mordecai,Wisconsin,127.1,9,4,1,2.2740066812177426\nJase Bauer,Central Michigan,120.1,12,10,0,0.8550394888435654\nPayton Thorne,Auburn,129.1,16,3,1,1.9133410807364093\nTaisun Phommachanh,Massachusetts,120.4,6,2,0,0.24680809601070972\nHudson Card,Purdue,123.0,15,5,1,0.6897337403828949\nJalen Mayden,San Diego State,122.5,10,5,0,0.49504636621511416\nBryson Barnes,Utah,120.5,12,3,1,4.543543890461846\nBilly Wiles,Southern Mississippi,115.4,11,1,0,0.26036280793545585\nCade Klubnik,Clemson,126.3,19,4,1,6.253112125056837\nAthan Kaliakmanis,Minnesota,115.2,14,2,1,1.786242925913887\nDaniel Richardson,Florida Atlantic,123.9,13,0,0,0.42871330780776784\nJeff Undercuffler,Akron,111.1,4,1,0,0.038661227093447735\nTrexler Ivey,Charlotte,104.1,4,3,0,0.17562692278734\nTa'Quan Roberson,Connecticut,118.0,12,2,0,0.2080382436260623\nJiya Wright,Louisiana-Monroe,112.1,10,2,0,0.06873085042996767\nAustin Smith,Eastern Michigan,112.7,9,2,0,0.8243537825285366\nBehren Morton,Texas Tech,123.9,15,4,1,3.1061623986950173\nGavin Wimsatt,Rutgers,102.9,9,11,1,3.05209585241222\nKatin Houser,Michigan State,113.5,6,2,1,0.8891105990756197\nCole Snyder,Buffalo,108.9,13,1,0,0.20703490230947783\nBrendon Lewis,Nevada,100.0,2,4,0,0.06607472943836935\nAlex Flinn,East Carolina,98.5,6,0,0,0.07417301359925038\nDeacon Hill,Iowa,87.4,5,2,1,6.682045091050634\n=======\nD.J. Uiagalelei,Florida State,116.5,1.0,0.0,1,0.0\nShedeur Sanders,Colorado,219.4,4.0,0.0,1,25.0\nDevon Dampier,New Mexico,128.7,4.0,3.0,0,0.0\nBrayden Schager,Hawaii,110.6,3.0,2.0,0,12.5\nNoah Fifita,Arizona,211.8,4.0,0.0,1,25.0\nHaynes King,Georgia Tech,166.6,2.0,0.0,1,25.0\nJaxson Dart,Ole Miss,272.6,5.0,1.0,1,25.0\nChandler Morris,North Texas,187.2,3.0,2.0,0,25.0\nCameron Ward,Miami (FL),189.3,3.0,0.0,1,25.0\nBrendan Sorsby,Cincinnati,196.0,2.0,2.0,1,25.0\nDillon Gabriel,Oregon,162.3,2.0,0.0,1,25.0\nMiller Moss,USC,172.4,1.0,0.0,1,25.0\nBehren Morton,Texas Tech,186.3,5.0,0.0,1,25.0\nKyle McCord,Syracuse,174.2,4.0,0.0,1,25.0\nJosh Hoover,Texas Christian,153.0,2.0,0.0,1,25.0\nJohn Mateer,Washington State,335.7,5.0,1.0,0,25.0\nJake Retzlaff,BYU,197.1,3.0,0.0,1,25.0\nJoey Labas,Central Michigan,236.0,3.0,0.0,0,25.0\nOwen McCown,UTSA,174.9,3.0,1.0,0,25.0\nEli Holstein,Pitt,165.3,3.0,0.0,1,25.0\nPreston Stone,SMU,150.7,3.0,0.0,1,25.0\nEthan Hampton,Northern Illinois,310.3,5.0,0.0,0,25.0\nPayton Thorne,Auburn,253.6,4.0,1.0,1,25.0\nKyron Drones,Virginia Tech,162.6,2.0,0.0,1,0.0\nGrayson McCall,North Carolina State,151.5,3.0,0.0,1,25.0\nNico Iamaleava,Tennessee,208.1,3.0,0.0,1,25.0\nBilly Edwards Jr.,Maryland,195.3,2.0,0.0,1,25.0\nJake Garcia,East Carolina,155.8,4.0,0.0,0,25.0\nGarrett Nussmeier,LSU,155.1,2.0,0.0,1,0.0\nSeth Henigan,Memphis,181.6,2.0,0.0,0,25.0\nKirk Francis,Tulsa,204.4,4.0,0.0,0,25.0\nEmmett Brown,San Jose State,155.7,3.0,0.0,0,25.0\nAnthony Colandrea,Virginia,211.1,2.0,1.0,1,25.0\nMaalik Murphy,Duke,137.6,2.0,0.0,1,25.0\nBrendon Lewis,Nevada,149.0,4.0,0.0,0,12.5\nMaddux Madsen,Boise State,151.0,1.0,0.0,0,25.0\nCarson Beck,Georgia,160.5,2.0,0.0,1,25.0\nHudson Card,Purdue,240.5,4.0,0.0,1,25.0\nEthan Garbers,UCLA,108.3,1.0,0.0,1,25.0\nRocco Becht,Iowa State,188.6,2.0,1.0,1,25.0\nHank Bachmeier,Wake Forest,178.5,3.0,0.0,1,25.0\nQuinn Ewers,Texas,184.2,3.0,0.0,1,25.0\nSam Leavitt,Arizona State,192.1,2.0,0.0,1,25.0\nCameron Rising,Utah,318.9,5.0,0.0,1,25.0\nCade McNamara,Iowa,167.7,3.0,0.0,1,25.0\nWill Rogers,Washington,170.4,1.0,0.0,1,25.0\nBlake Shapen,Mississippi State,228.2,3.0,1.0,1,25.0\nAlan Bowman,Oklahoma State,155.1,2.0,0.0,1,25.0\nKaidon Salter,Liberty,186.6,2.0,0.0,0,25.0\nCole Snyder,Eastern Michigan,144.8,1.0,1.0,0,25.0\nDylan Raiola,Nebraska,168.9,2.0,0.0,1,25.0\nMikey Keene,Fresno State,114.0,1.0,0.0,0,0.0\nTyler Shough,Louisville,211.2,4.0,0.0,1,25.0\nTaylen Green,Arkansas,181.9,2.0,2.0,1,25.0\nHunter Watson,Sam Houston,154.9,2.0,0.0,0,25.0\nBrady Cook,Missouri,136.9,1.0,1.0,1,25.0\nWill Howard,Ohio State,164.5,3.0,0.0,1,25.0\nBrett Gabbert,Miami (OH),100.2,0.0,0.0,0,0.0\nE.J. Warner,Rice,103.1,1.0,0.0,0,0.0\nDrew Allar,Penn State,229.7,3.0,0.0,1,25.0\nJacob Zeno,UAB,142.7,2.0,0.0,0,25.0\nDanny O'Neil,San Diego State,141.1,2.0,0.0,0,25.0\nLuke Altmyer,Illinois,208.7,4.0,0.0,1,25.0\nNicholas Vattiato,Middle Tennessee State,111.3,1.0,0.0,0,25.0\nBlake Baker,Louisiana Tech,119.5,1.0,0.0,0,25.0\nDavis Bryson,Kennesaw State,122.4,1.0,0.0,0,0.0\nTucker Gleason,Toledo,174.5,3.0,0.0,0,25.0\nBryson Barnes,Utah State,153.5,2.0,1.0,0,25.0\nCJ Ogbonna,Buffalo,154.1,2.0,0.0,0,25.0\nMax Brown,Charlotte,83.4,1.0,0.0,0,0.0\nDeQuan Finn,Baylor,148.8,2.0,1.0,1,25.0\nTyler Van Dyke,Wisconsin,103.1,0.0,1.0,1,25.0\nDiego Pavia,Vanderbilt,216.0,2.0,1.0,1,25.0\nDevin Kargman,Kent State,120.7,2.0,0.0,0,0.0\nParker Navarro,Ohio,104.0,0.0,0.0,0,0.0\nKurtis Rourke,Indiana,139.3,1.0,0.0,1,25.0\nMike Wright,Northwestern,109.8,0.0,1.0,1,25.0\nTaisun Phommachanh,Massachusetts,116.2,0.0,0.0,0,0.0\nTyler Huff,Jacksonville State,148.8,1.0,0.0,0,0.0\nBrock Vandagriff,Kentucky,189.4,3.0,0.0,1,25.0\nConnor Bazelak,Bowling Green,132.3,0.0,0.0,0,25.0\nMax Brosmer,Minnesota,127.9,0.0,1.0,1,0.0\nK.J. Jefferson,UCF,181.3,2.0,1.0,1,25.0\nAshton Daniels,Stanford,91.4,1.0,0.0,1,0.0\nGarrett Greene,West Virginia,101.9,0.0,0.0,1,0.0\nFernando Mendoza,California,143.5,1.0,0.0,1,25.0\nRiley Leonard,Notre Dame,104.2,0.0,0.0,1,25.0\nAvery Johnson,Kansas State,149.8,2.0,0.0,1,25.0\nByrum Brown,South Florida,128.8,0.0,1.0,0,25.0\nJoe Fagnano,Connecticut,136.4,1.0,0.0,0,0.0\nJalon Daniels,Kansas,151.5,1.0,0.0,1,25.0\nAthan Kaliakmanis,Rutgers,155.2,3.0,0.0,1,25.0\nSpencer Petras,Utah State,143.2,1.0,0.0,0,25.0\nCade Klubnik,Clemson,96.3,0.0,0.0,1,0.0\nJackson Arnold,Oklahoma,168.2,4.0,0.0,1,25.0\nHayden Wolff,Western Michigan,121.4,0.0,0.0,0,0.0\nDonovan Smith,Houston,74.5,0.0,0.0,1,0.0\nKeyone Jenkins,Florida International,110.8,1.0,0.0,0,0.0\nForrest Brock,Temple,75.0,0.0,0.0,0,0.0\nDavis Warren,Michigan,104.8,1.0,0.0,1,25.0\nCam Fancher,Florida Atlantic,84.2,1.0,0.0,0,0.0\nSkyler Locklear,UTEP,129.2,1.0,0.0,0,0.0\nAidan Chiles,Michigan State,64.9,0.0,1.0,1,25.0\nLaNorris Sellers,South Carolina,85.1,0.0,1.0,1,25.0\nAustin Simmons,Ole Miss,122.7,1.0,0.0,1,25.0\nThomas Castellanos,Boston College,159.4,2.0,1.0,1,25.0\nConner Weigman,Texas A&M,54.7,0.0,0.0,1,0.0\nTJ Finley,Western Kentucky,70.1,0.0,0.0,0,0.0\nGraham Mertz,Florida,83.2,0.0,0.0,1,0.0\nNick Evers,Connecticut,59.6,0.0,0.0,0,0.0\nJohn Busha,Air Force,85.5,0.0,0.0,0,25.0\nMax Johnson,North Carolina,84.0,0.0,1.0,1,25.0\nBrayden Fowler-Nicolosi,Colorado State,72.0,0.0,0.0,0,0.0\nBen Finley,Akron,74.7,0.0,0.0,0,0.0\nEvan Svoboda,Wyoming,36.9,0.0,0.0,0,0.0\nParker Awad,New Mexico State,35.9,0.0,0.0,0,25.0\n>>>>>>> Stashed changes\n", "type": "text"}, {"name": "heisman_model.pkl", "content": "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AAAeAAAAAAAAACAAAAAAAAAAIwAAAAAAAAASAAAAAAAAACAAAAAAAAAAFQAAAAAAAAAbAAAAAAAAACUAAAAAAAAAJQAAAAAAAAAnAAAAAAAAADAAAAAAAAAAKwAAAAAAAAAhAAAAAAAAABoAAAAAAAAAEAAAAAAAAAAPAAAAAAAAABkAAAAAAAAAKAAAAAAAAAAcAAAAAAAAABgAAAAAAAAAJQAAAAAAAAAgAAAAAAAAADIAAAAAAAAAGAAAAAAAAAAqAAAAAAAAACEAAAAAAAAAIgAAAAAAAAAZAAAAAAAAABsAAAAAAAAAIwAAAAAAAAAkAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAAeAAAAAAAAACkAAAAAAAAAKAAAAAAAAAArAAAAAAAAACsAAAAAAAAAGwAAAAAAAAAlAAAAAAAAACUAAAAAAAAAKgAAAAAAAAArAAAAAAAAADIAAAAAAAAAJQAAAAAAAAAmAAAAAAAAABkAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAUAAAAAAAAAFwAAAAAAAAAIAAAAAAAAAAQAAAAAAAAACQAAAAAAAAAOAAAAAAAAAAIAAAAAAAAABQAAAAAAAAALAAAAAAAAAAwAAAAAAAAABgAAAAAAAAAIAAAAAAAAAAUAAAAAAAAAAwAAAAAAAAAOAAAAAAAAAAEAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAOAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAGAAAAAAAAAAoAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAGAAAAAAAAABUAAAAAAAAAFwAAAAAAAAANAAAAAAAAABMAAAAAAAAABAAAAAAAAAAAAAAAAAAAABcAAAAAAAAACQAAAAAAAAAOAAAAAAAAAAIAAAAAAAAADAAAAAAAAAAPAAAAAAAAAAgAAAAAAAAACwAAAAAAAAADAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAHAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAkAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAEgAAAAAAAAAKAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAFAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAkA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QkAAAAAAAABAQAAAAAAAAElAAAAAAAAAOEAAAAAAAABFQAAAAAAAgEBAAAAAAAAAQUAAAAAAAAA5QAAAAAAAADtAAAAAAACAQUAAAAAAAABCQAAAAAAAACBAAAAAAAAAOEAAAAAAAAA+QAAAAAAAgERAAAAAAAAAREAAAAAAAIBFQAAAAAAAgEVAAAAAAAAAO0AAAAAAAIBCQAAAAAAAgEJAAAAAAAAARUAAAAAAAIBFQAAAAAAAAElAAAAAAACAQkAAAAAAAABDQAAAAAAAADlAAAAAAAAA8D8AAAAAAAAAQAAAAAAAABRAAAAAAAAAN0AAAAAAAAAgQAAAAAAAABBAAAAAAAAAIkAAAAAAAAAsQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAmQAAAAAAAAChAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABRAAAAAAAAACEAAAAAAAAAsQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAA0QAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAsQAAAAAAAABBAAAAAAAAANEAAAAAAAAAYQAAAAAAAACRAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAYQAAAAAAAADVAAAAAAAAAN0AAAAAAAAAqQAAAAAAAADNAAAAAAAAAEEAAAAAAAAAAAAAAAAAAADdAAAAAAAAAIkAAAAAAAAAsQAAAAAAAAABAAAAAAAAAKEAAAAAAAAAuQAAAAAAAACBAAAAAAAAAJkAAAAAAAAAIQAAAAAAAACxAAAAAAAAAKEAAAAAAAAAcQAAAAAAAADhAAAAAAAAAAAAAAAAAAAA1QAAAAAAAACJAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAMkAAAAAAAAAkQAAAAAAAACBAAAAAAAAAKEAAAAAAAAAUQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAACJAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAA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b3ZhcmlhbmNlIHBhcmFtZXRlcnMuCiAgICBzY2FsZSA6IGZsb2F0CiAgICAgICAgVGhlIGVzdGltYXRlZCBzY2FsZSBvZiB0aGUgcmVzaWR1YWxzLgogICAgY292X3R5cGUgOiBzdHIKICAgICAgICBUaGUgY292YXJpYW5jZSBlc3RpbWF0b3IgdXNlZCBpbiB0aGUgcmVzdWx0cy4KICAgIGNvdl9rd2RzIDogZGljdAogICAgICAgIEFkZGl0aW9uYWwga2V5d29yZHMgdXNlZCBpbiB0aGUgY292YXJpYW5jZSBzcGVjaWZpY2F0aW9uLgogICAgdXNlX3QgOiBib29sCiAgICAgICAgRmxhZyBpbmRpY2F0aW5nIHRvIHVzZSB0aGUgU3R1ZGVudCdzIHQgaW4gaW5mZXJlbmNlLgogICAgKiprd2FyZ3MKICAgICAgICBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVzdWx0cy4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIFJlZ3Jlc3Npb25SZXN1bHRzCiAgICAgICAgUmVzdWx0cyBzdG9yZSBmb3IgV0xTIGFuZCBHTFcgbW9kZWxzLgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgTW9zdCBvZiB0aGUgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBhcmUgaW5oZXJpdGVkIGZyb20gUmVncmVzc2lvblJlc3VsdHMuCiAgICBUaGUgc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIG9ubHkgYXZhaWxhYmxlIGZvciBPTFMgYXJlOgoKICAgIC0gZ2V0X2luZmx1ZW5jZQogICAgLSBvdXRsaWVyX3Rlc3QKICAgIC0gZWxfdGVzdAogICAgLSBjb25mX2ludF9lbAogICAglHViLg==", "type": "binary"}, {"name": "shared.py", "content": "from pathlib import Path\n\nimport pandas as pd\nimport statsmodels.api as sm\n\napp_dir = Path(__file__).parent\n\n################### Model Object #########################\n\nmodel = pd.read_pickle(app_dir / \"heisman_model.pkl\")\n\n################### Historical #########################\nmodel_data = pd.read_csv(app_dir / \"Model_Data.csv\").reset_index(drop = True)\n\npredict_data = model_data[['Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']]\npredict_data = sm.tools.add_constant(predict_data)\npredict_data['Prediction'] = model.predict(predict_data)\npredict_data = predict_data['Prediction']\n\nmodel_data = pd.merge(model_data, predict_data, left_index=True, right_index=True)\nmodel_data['CPI'] = model_data['CPI'].round(2)\nmodel_data['Prediction'] = model_data['Prediction'].round(2)\n\n\n################### Current #########################\ncurrent_df = pd.read_csv(app_dir / \"Weekly_Data.csv\").reset_index(drop = True)\n\ncurrent_predict_df = current_df[['Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']]\ncurrent_predict_df = sm.tools.add_constant(current_predict_df)\ncurrent_predict_df['Projected Voting Points'] = model.predict(current_predict_df)\ncurrent_predict_df = current_predict_df['Projected Voting Points']\n\ncurrent_df = pd.merge(current_df, current_predict_df, left_index=True, right_index=True)\ncurrent_df['CPI'] = current_df['CPI'].round(2)\ncurrent_df['Projected Voting Points'] = current_df['Projected Voting Points'].round(2)\n\n\n################### Top 10 HTML #########################\n\nwith open(app_dir / \"weekly.html\", 'r') as file: # r to open file in READ mode\n html_top10_string = file.read()", "type": "text"}, {"name": "weekly.html", "content": "
\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n\n\n\n
Predictive QB Heisman Votes
Top 10 - Through Week 1
Player\n Passing\n \n Rushing\n Predicted Voting Points
CompletionsAttemptsYardsTDsInterceptionsAttemptsYardsTDs
Cameron
Rising
\n
\n\n10152545042502208.51
John
Mateer
\n
\n\n11173525025511894.06
Jaxson
Dart
\n
\n\n22274185062711723.16
Ethan
Hampton
\n
\n\n1820328501801557.51
Payton
Thorne
\n
\n\n13213224044911484.97
Hudson
Card
\n
\n\n24252734031601289.41
Blake
Shapen
\n
\n\n15202473074411173.41
Drew
Allar
\n
\n\n11172163064401145.22
Shedeur
Sanders
\n
\n\n26344454161701047.55
Diego
Pavia
\n
\n\n1216190202610411013.17
Model by @DjDataScience, Table inspiration by @arbitanalytics, Data from sports-reference.com and CFBD
\n\n
\n ", "type": "text"}] \ No newline at end of file +[{"name": "app.py", "content": "from shiny import App, ui, render\nimport pandas as pd\nimport numpy as np\nimport pickle\nimport statsmodels.api as sm\nfrom shinywidgets import output_widget, render_widget\nimport plotly.express as px\n\n\nfrom shared import app_dir, model, model_data, predict_data, current_df, current_predict_df, html_top10_string\n\n\n# Part 1: ui ----\napp_ui = ui.page_fluid(\n ui.navset_tab(\n ui.nav(\"Model Details\", \n \n ui.markdown(\n \"\"\"\n # So how does this model work anyway?\n This is a project initially created in the loads of free time that existed in the summer of 2020. And now\n has taken on a collaborative work effort in the creation of the product.\n
\n\n Simply put, the model aims to predict the final standings for the most prestigous indivdual award in \n collegiate football, specifically for quarterbacks. For legal purposes, this project does not explicitly call\n out the name of the award. As a hint, the award is named after the man that coached Georgia Tech to a 222-0 victory\n against Cumberland in 1916. It is worth note that the model focuses on quarterbacks only,\n as it is difficult to come up with a sample of metrics that apply to the different positions across college football.\n
\n\n The model itself is a linear regression with award voting points as a response, and individual and team\n statitistics as the predictors. The model is built with training data from the 2006 to 2018 seasons.\n
\n\n The model is made up of the following 5 predictors;\n
\n \n **Passer Rating** : Passer efficency rating as according to pro-football-reference.com.\n
\n\n **Passing TDs** : Number of passing touchdowns thrown by a quarterback.\n
\n\n **Rushing TDs** : Number of rushing touchdowns ran by a quarterback.\n
\n\n **Power 5 Indicator** : A binary value of 0 or 1. Set equal to 1, \n if the quarterback's team plays in a power 5 conference. Otherwise 0. Notre Dame is the only independent team \n to receive a power 5 label.\n
\n\n **CPI** : A team strength of record metric involving the winning percentages of opponents. More details \n of the metric can be found at www.cpiratings.com/about.html.\n \"\"\"\n )\n ),\n ui.nav(\"Past Model Results\", \n \n ui.input_select(\"model_year\", \"Model Year\", model_data['Year'].tolist()),\n ui.output_table(\"historical_data\")\n ),\n\n ui.nav(\"Current Model Results\", \n ui.output_table(\"current_data\")\n ),\n \n ui.nav(\"What If\", \n \n ui.input_numeric(\"what_if_QBR\", \"Passer Rating\", value=0.0),\n ui.input_numeric(\"what_if_pass_TD\", \"Passing TDs\", value=0),\n ui.input_numeric(\"what_if_rush_TD\", \"Rushing TDs\", value=0),\n ui.input_radio_buttons(\"what_if_power_5\", \"Power 5 Conference\", {1 : \"Yes\", 0: \"No\"}),\n ui.input_numeric(\"what_if_CPI\", \"CPI\", value=0.0),\n ui.output_text(\"what_if_analysis\")\n ),\n ui.nav(\"Scatter\",\n ui.div(\n output_widget(\"my_widget\")\n )\n ),\n ui.nav(\"Top 10\",\n ui.HTML(html_top10_string)\n ) \n )\n)\n\n\n# Part 2: server ----\ndef server(input, output, session):\n\n @output\n @render.table\n def historical_data():\n\n result_df = model_data[model_data['Year'] == int(input.model_year())]\n\n result_df['Actual_Rank'] = result_df['points_won'].rank(ascending = False).astype('int')\n result_df['Predicted_Rank'] = result_df['Prediction'].rank(ascending = False).astype('int')\n\n result_cols = ['Player', 'School', 'Actual_Rank', 'Predicted_Rank', 'Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']\n result_df = result_df[result_cols]\n\n return result_df\n \n @output\n @render.table\n def current_data():\n\n result_df = current_df\n\n result_df = result_df.sort_values(by = 'Projected Voting Points', ascending = False)\n result_df = result_df.reset_index(drop = True)\n result_df['Rank'] = result_df.index + 1\n result_cols = ['Rank', 'Player', 'School', 'Projected Voting Points', 'Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']\n result_df = result_df[result_cols]\n\n return result_df\n \n @output\n @render.text\n def what_if_analysis():\n\n what_if_df = pd.DataFrame({\n 'Passing_Rate' : [float(input.what_if_QBR())],\n 'Passing_TD' : [int(input.what_if_pass_TD())],\n 'Rushing_TD' : [int(input.what_if_rush_TD())],\n 'Power5' : [int(input.what_if_power_5())],\n 'CPI' : [float(input.what_if_CPI())]\n })\n\n what_if_df = sm.tools.add_constant(what_if_df, has_constant='add')\n\n what_if_df['Prediction'] = model.predict(what_if_df)\n\n result = what_if_df.iloc[0]['Prediction']\n result = result.round(2)\n\n return f\"A player with these statistics would have {result} projected voting points.\"\n \n @output\n @render_widget\n def my_widget():\n fig = px.scatter(\n model_data, x=\"Year\", y=\"Prediction\",\n hover_data=['Player']\n )\n return fig\n\n# Combine into a shiny app.\n# Note that the variable must be \"app\".\napp = App(app_ui, server)", "type": "text"}, {"name": "Model_Data.csv", "content": "Player,School,Year,points_won,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI\nTroy Smith,Ohio State,2006,2540,161.9,30,1,1,15.013680174870936\nBrady Quinn,Notre Dame,2006,782,146.7,37,2,1,8.231919146738909\nColt Brennan,Hawaii,2006,202,186.0,58,5,0,6.365435540069685\nTim Tebow,Florida,2007,1957,172.5,32,23,1,7.987912822160973\nColt Brennan,Hawaii,2007,632,159.8,38,8,0,7.5994759572849\nChase Daniel,Missouri,2007,425,147.9,33,4,1,11.748104548755686\nDennis Dixon,Oregon,2007,178,161.2,20,9,1,6.540100800550993\nPat White,West Virginia,2007,150,151.4,14,14,0,11.379512110196254\nMatt Ryan,Boston College,2007,63,127.0,31,2,1,8.768469146897912\nSam Bradford,Oklahoma,2008,1726,180.8,50,5,1,15.05704821146074\nColt McCoy,Texas,2008,1604,173.8,34,11,1,18.946208112380297\nTim Tebow,Florida,2008,1575,172.4,30,12,1,19.409963559776127\nGraham Harrell,Texas Tech,2008,213,160.0,45,6,1,13.05053009399466\nPat White,West Virginia,2008,19,142.3,21,8,0,6.385230641176652\nNate Davis,Ball State,2008,10,157.0,26,5,0,6.050702467936028\nColt McCoy,Texas,2009,1145,147.4,27,3,1,16.18331903502398\nTim Tebow,Florida,2009,390,164.2,21,14,1,18.51486090299109\nKellen Moore,Boise State,2009,100,161.7,39,1,0,14.46082921027991\nCase Keenum,Houston,2009,37,154.8,44,4,0,4.218052997436561\nCam Newton,Auburn,2010,2263,182.0,30,20,1,23.86780983482786\nAndrew Luck,Stanford,2010,1079,170.2,32,3,1,13.946308906421848\nKellen Moore,Boise State,2010,635,182.6,35,1,0,12.802241937566109\nDenard Robinson,Michigan,2010,84,149.6,18,14,1,3.2478886059804224\nRyan Mallett,Arkansas,2010,41,163.6,32,4,1,10.82973394387262\nColin Kaepernick,Nevada,2010,31,150.5,21,20,0,11.384387560083765\nAndy Dalton,TCU,2010,30,166.5,27,6,0,14.944350584507326\nRobert Griffin III,Baylor,2011,1687,189.5,37,10,1,10.316157413813375\nAndrew Luck,Stanford,2011,1407,169.7,37,2,1,9.667409405228565\nMatt Barkley,USC,2011,153,161.2,39,2,1,9.562203977574791\nCase Keenum,Houston,2011,123,174.0,48,3,0,11.420863535280626\nKellen Moore,Boise State,2011,90,175.2,43,0,0,12.265954369362133\nRussell Wilson,Wisconsin,2011,52,191.8,33,6,1,8.281890427937858\nJohnny Manziel,Texas A&M,2012,2029,155.3,26,21,1,15.754760156860875\nCollin Klein,Kansas State,2012,894,149.2,16,23,1,11.817693133497077\nBraxton Miller,Ohio State,2012,144,140.5,15,13,1,15.169148199200322\nJordan Lynch,Northern Illinois,2012,52,144.9,25,19,0,6.92703223246081\nJameis Winston,Florida State,2013,2205,184.8,40,4,1,19.32052650022246\nA.J. McCarron,Alabama,2013,704,167.2,28,0,1,11.90196866646686\nJordan Lynch,Northern Illinois,2013,558,138.4,24,23,0,7.111211920283987\nJohnny Manziel,Texas A&M,2013,421,172.9,37,9,1,8.051361094960829\nBryce Petty,Baylor,2013,127,174.3,32,14,1,11.402244928532845\nDerek Carr,Fresno State,2013,107,156.3,50,2,0,7.156147448813237\nBraxton Miller,Ohio State,2013,91,158.1,24,12,1,10.39338163747249\nMarcus Mariota,Oregon,2014,2534,181.7,42,15,1,16.12744333111277\nTrevone Boykin,TCU,2014,218,145.9,33,8,1,13.076626318134918\nJ.T. Barrett,Ohio State,2014,78,169.8,34,11,1,20.0747422358138\nJameis Winston,Florida State,2014,51,145.5,25,3,1,18.46103191334333\nDak Prescott,Mississippi State,2014,21,151.7,27,14,1,9.456126458240307\nDeshaun Watson,Clemson,2015,1165,156.3,35,12,1,19.16167854243615\nBaker Mayfield,Oklahoma,2015,334,173.3,36,7,1,12.740224517380366\nKeenan Reynolds,Navy,2015,180,162.1,8,24,0,10.128862442591032\nConnor Cook,Michigan State,2015,13,136.6,24,0,1,14.713371407886711\nLamar Jackson,Louisville,2016,2144,148.8,30,21,1,5.608782090662399\nDeshaun Watson,Clemson,2016,1524,151.1,41,9,1,23.78005620893973\nBaker Mayfield,Oklahoma,2016,361,196.4,40,6,1,11.25001891558911\nJake Browning,Washington,2016,182,167.5,43,4,1,12.923870541835983\nBaker Mayfield,Oklahoma,2017,2398,198.9,43,5,1,11.183099131224177\nLamar Jackson,Louisville,2017,793,146.6,27,18,1,3.9226957076095994\nMason Rudolph,Oklahoma State,2017,56,170.6,37,10,1,6.425405376500221\nMcKenzie Milton,UCF,2017,54,179.3,37,8,0,19.08379077956817\nKyler Murray,Oklahoma,2018,2167,199.2,42,12,1,12.942861869472573\nTua Tagovailoa,Alabama,2018,1871,199.4,43,5,1,20.688097541235337\nDwayne Haskins,Ohio State,2018,783,174.1,50,4,1,13.097950650643533\nWill Grier,West Virginia,2018,126,175.5,37,3,1,5.5749718367802\nGardner Minshew,Washington State,2018,122,147.6,38,4,1,10.593990104817577\nMcKenzie Milton,UCF,2018,39,161.0,25,9,0,11.842688493982308\nJoe Burrow,LSU,2019,2608,202.0,60,5,1,27.81090580974389\nJalen Hurts,Oklahoma,2019,762,191.2,32,20,1,11.86131918185052\nJustin Fields,Ohio State,2019,747,181.4,41,10,1,19.03510596761913\nTrevor Lawrence,Clemson,2019,88,166.7,36,9,1,17.71916867557893\n", "type": "text"}, {"name": "Weekly_Data.csv", "content": "Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI\nD.J. Uiagalelei,Florida State,116.5,1.0,0.0,1,0.0\nShedeur Sanders,Colorado,219.4,4.0,0.0,1,25.0\nDevon Dampier,New Mexico,128.7,4.0,3.0,0,0.0\nBrayden Schager,Hawaii,110.6,3.0,2.0,0,12.5\nNoah Fifita,Arizona,211.8,4.0,0.0,1,25.0\nHaynes King,Georgia Tech,166.6,2.0,0.0,1,25.0\nJaxson Dart,Ole Miss,272.6,5.0,1.0,1,25.0\nChandler Morris,North Texas,187.2,3.0,2.0,0,25.0\nCameron Ward,Miami (FL),189.3,3.0,0.0,1,25.0\nBrendan Sorsby,Cincinnati,196.0,2.0,2.0,1,25.0\nDillon Gabriel,Oregon,162.3,2.0,0.0,1,25.0\nMiller Moss,USC,172.4,1.0,0.0,1,25.0\nBehren Morton,Texas Tech,186.3,5.0,0.0,1,25.0\nKyle McCord,Syracuse,174.2,4.0,0.0,1,25.0\nJosh Hoover,Texas Christian,153.0,2.0,0.0,1,25.0\nJohn Mateer,Washington State,335.7,5.0,1.0,0,25.0\nJake Retzlaff,BYU,197.1,3.0,0.0,1,25.0\nJoey Labas,Central Michigan,236.0,3.0,0.0,0,25.0\nOwen McCown,UTSA,174.9,3.0,1.0,0,25.0\nEli Holstein,Pitt,165.3,3.0,0.0,1,25.0\nPreston Stone,SMU,150.7,3.0,0.0,1,25.0\nEthan Hampton,Northern Illinois,310.3,5.0,0.0,0,25.0\nPayton Thorne,Auburn,253.6,4.0,1.0,1,25.0\nKyron Drones,Virginia Tech,162.6,2.0,0.0,1,0.0\nGrayson McCall,North Carolina State,151.5,3.0,0.0,1,25.0\nNico Iamaleava,Tennessee,208.1,3.0,0.0,1,25.0\nBilly Edwards Jr.,Maryland,195.3,2.0,0.0,1,25.0\nJake Garcia,East Carolina,155.8,4.0,0.0,0,25.0\nGarrett Nussmeier,LSU,155.1,2.0,0.0,1,0.0\nSeth Henigan,Memphis,181.6,2.0,0.0,0,25.0\nKirk Francis,Tulsa,204.4,4.0,0.0,0,25.0\nEmmett Brown,San Jose State,155.7,3.0,0.0,0,25.0\nAnthony Colandrea,Virginia,211.1,2.0,1.0,1,25.0\nMaalik Murphy,Duke,137.6,2.0,0.0,1,25.0\nBrendon Lewis,Nevada,149.0,4.0,0.0,0,12.5\nMaddux Madsen,Boise State,151.0,1.0,0.0,0,25.0\nCarson Beck,Georgia,160.5,2.0,0.0,1,25.0\nHudson Card,Purdue,240.5,4.0,0.0,1,25.0\nEthan Garbers,UCLA,108.3,1.0,0.0,1,25.0\nRocco Becht,Iowa State,188.6,2.0,1.0,1,25.0\nHank Bachmeier,Wake Forest,178.5,3.0,0.0,1,25.0\nQuinn Ewers,Texas,184.2,3.0,0.0,1,25.0\nSam Leavitt,Arizona State,192.1,2.0,0.0,1,25.0\nCameron Rising,Utah,318.9,5.0,0.0,1,25.0\nCade McNamara,Iowa,167.7,3.0,0.0,1,25.0\nWill Rogers,Washington,170.4,1.0,0.0,1,25.0\nBlake Shapen,Mississippi State,228.2,3.0,1.0,1,25.0\nAlan Bowman,Oklahoma State,155.1,2.0,0.0,1,25.0\nKaidon Salter,Liberty,186.6,2.0,0.0,0,25.0\nCole Snyder,Eastern Michigan,144.8,1.0,1.0,0,25.0\nDylan Raiola,Nebraska,168.9,2.0,0.0,1,25.0\nMikey Keene,Fresno State,114.0,1.0,0.0,0,0.0\nTyler Shough,Louisville,211.2,4.0,0.0,1,25.0\nTaylen Green,Arkansas,181.9,2.0,2.0,1,25.0\nHunter Watson,Sam Houston,154.9,2.0,0.0,0,25.0\nBrady Cook,Missouri,136.9,1.0,1.0,1,25.0\nWill Howard,Ohio State,164.5,3.0,0.0,1,25.0\nBrett Gabbert,Miami (OH),100.2,0.0,0.0,0,0.0\nE.J. Warner,Rice,103.1,1.0,0.0,0,0.0\nDrew Allar,Penn State,229.7,3.0,0.0,1,25.0\nJacob Zeno,UAB,142.7,2.0,0.0,0,25.0\nDanny O'Neil,San Diego State,141.1,2.0,0.0,0,25.0\nLuke Altmyer,Illinois,208.7,4.0,0.0,1,25.0\nNicholas Vattiato,Middle Tennessee State,111.3,1.0,0.0,0,25.0\nBlake Baker,Louisiana Tech,119.5,1.0,0.0,0,25.0\nDavis Bryson,Kennesaw State,122.4,1.0,0.0,0,0.0\nTucker Gleason,Toledo,174.5,3.0,0.0,0,25.0\nBryson Barnes,Utah State,153.5,2.0,1.0,0,25.0\nCJ Ogbonna,Buffalo,154.1,2.0,0.0,0,25.0\nMax Brown,Charlotte,83.4,1.0,0.0,0,0.0\nDeQuan Finn,Baylor,148.8,2.0,1.0,1,25.0\nTyler Van Dyke,Wisconsin,103.1,0.0,1.0,1,25.0\nDiego Pavia,Vanderbilt,216.0,2.0,1.0,1,25.0\nDevin Kargman,Kent State,120.7,2.0,0.0,0,0.0\nParker Navarro,Ohio,104.0,0.0,0.0,0,0.0\nKurtis Rourke,Indiana,139.3,1.0,0.0,1,25.0\nMike Wright,Northwestern,109.8,0.0,1.0,1,25.0\nTaisun Phommachanh,Massachusetts,116.2,0.0,0.0,0,0.0\nTyler Huff,Jacksonville State,148.8,1.0,0.0,0,0.0\nBrock Vandagriff,Kentucky,189.4,3.0,0.0,1,25.0\nConnor Bazelak,Bowling Green,132.3,0.0,0.0,0,25.0\nMax Brosmer,Minnesota,127.9,0.0,1.0,1,0.0\nK.J. Jefferson,UCF,181.3,2.0,1.0,1,25.0\nAshton Daniels,Stanford,91.4,1.0,0.0,1,0.0\nGarrett Greene,West Virginia,101.9,0.0,0.0,1,0.0\nFernando Mendoza,California,143.5,1.0,0.0,1,25.0\nRiley Leonard,Notre Dame,104.2,0.0,0.0,1,25.0\nAvery Johnson,Kansas State,149.8,2.0,0.0,1,25.0\nByrum Brown,South Florida,128.8,0.0,1.0,0,25.0\nJoe Fagnano,Connecticut,136.4,1.0,0.0,0,0.0\nJalon Daniels,Kansas,151.5,1.0,0.0,1,25.0\nAthan Kaliakmanis,Rutgers,155.2,3.0,0.0,1,25.0\nSpencer Petras,Utah State,143.2,1.0,0.0,0,25.0\nCade Klubnik,Clemson,96.3,0.0,0.0,1,0.0\nJackson Arnold,Oklahoma,168.2,4.0,0.0,1,25.0\nHayden Wolff,Western Michigan,121.4,0.0,0.0,0,0.0\nDonovan Smith,Houston,74.5,0.0,0.0,1,0.0\nKeyone Jenkins,Florida International,110.8,1.0,0.0,0,0.0\nForrest Brock,Temple,75.0,0.0,0.0,0,0.0\nDavis Warren,Michigan,104.8,1.0,0.0,1,25.0\nCam Fancher,Florida Atlantic,84.2,1.0,0.0,0,0.0\nSkyler Locklear,UTEP,129.2,1.0,0.0,0,0.0\nAidan Chiles,Michigan State,64.9,0.0,1.0,1,25.0\nLaNorris Sellers,South Carolina,85.1,0.0,1.0,1,25.0\nAustin Simmons,Ole Miss,122.7,1.0,0.0,1,25.0\nThomas Castellanos,Boston College,159.4,2.0,1.0,1,25.0\nConner Weigman,Texas A&M,54.7,0.0,0.0,1,0.0\nTJ Finley,Western Kentucky,70.1,0.0,0.0,0,0.0\nGraham Mertz,Florida,83.2,0.0,0.0,1,0.0\nNick Evers,Connecticut,59.6,0.0,0.0,0,0.0\nJohn Busha,Air Force,85.5,0.0,0.0,0,25.0\nMax Johnson,North Carolina,84.0,0.0,1.0,1,25.0\nBrayden Fowler-Nicolosi,Colorado State,72.0,0.0,0.0,0,0.0\nBen Finley,Akron,74.7,0.0,0.0,0,0.0\nEvan Svoboda,Wyoming,36.9,0.0,0.0,0,0.0\nParker Awad,New Mexico State,33.9,0.0,0.0,0,25.0\n", "type": "text"}, {"name": "heisman_model.pkl", "content": "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AAAeAAAAAAAAACAAAAAAAAAAIwAAAAAAAAASAAAAAAAAACAAAAAAAAAAFQAAAAAAAAAbAAAAAAAAACUAAAAAAAAAJQAAAAAAAAAnAAAAAAAAADAAAAAAAAAAKwAAAAAAAAAhAAAAAAAAABoAAAAAAAAAEAAAAAAAAAAPAAAAAAAAABkAAAAAAAAAKAAAAAAAAAAcAAAAAAAAABgAAAAAAAAAJQAAAAAAAAAgAAAAAAAAADIAAAAAAAAAGAAAAAAAAAAqAAAAAAAAACEAAAAAAAAAIgAAAAAAAAAZAAAAAAAAABsAAAAAAAAAIwAAAAAAAAAkAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAAeAAAAAAAAACkAAAAAAAAAKAAAAAAAAAArAAAAAAAAACsAAAAAAAAAGwAAAAAAAAAlAAAAAAAAACUAAAAAAAAAKgAAAAAAAAArAAAAAAAAADIAAAAAAAAAJQAAAAAAAAAmAAAAAAAAABkAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAUAAAAAAAAAFwAAAAAAAAAIAAAAAAAAAAQAAAAAAAAACQAAAAAAAAAOAAAAAAAAAAIAAAAAAAAABQAAAAAAAAALAAAAAAAAAAwAAAAAAAAABgAAAAAAAAAIAAAAAAAAAAUAAAAAAAAAAwAAAAAAAAAOAAAAAAAAAAEAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAOAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAGAAAAAAAAAAoAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAGAAAAAAAAABUAAAAAAAAAFwAAAAAAAAANAAAAAAAAABMAAAAAAAAABAAAAAAAAAAAAAAAAAAAABcAAAAAAAAACQAAAAAAAAAOAAAAAAAAAAIAAAAAAAAADAAAAAAAAAAPAAAAAAAAAAgAAAAAAAAACwAAAAAAAAADAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAHAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAkAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAEgAAAAAAAAAKAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAFAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAkA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QkAAAAAAAABAQAAAAAAAAElAAAAAAAAAOEAAAAAAAABFQAAAAAAAgEBAAAAAAAAAQUAAAAAAAAA5QAAAAAAAADtAAAAAAACAQUAAAAAAAABCQAAAAAAAACBAAAAAAAAAOEAAAAAAAAA+QAAAAAAAgERAAAAAAAAAREAAAAAAAIBFQAAAAAAAgEVAAAAAAAAAO0AAAAAAAIBCQAAAAAAAgEJAAAAAAAAARUAAAAAAAIBFQAAAAAAAAElAAAAAAACAQkAAAAAAAABDQAAAAAAAADlAAAAAAAAA8D8AAAAAAAAAQAAAAAAAABRAAAAAAAAAN0AAAAAAAAAgQAAAAAAAABBAAAAAAAAAIkAAAAAAAAAsQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAmQAAAAAAAAChAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABRAAAAAAAAACEAAAAAAAAAsQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAA0QAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAsQAAAAAAAABBAAAAAAAAANEAAAAAAAAAYQAAAAAAAACRAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAYQAAAAAAAADVAAAAAAAAAN0AAAAAAAAAqQAAAAAAAADNAAAAAAAAAEEAAAAAAAAAAAAAAAAAAADdAAAAAAAAAIkAAAAAAAAAsQAAAAAAAAABAAAAAAAAAKEAAAAAAAAAuQAAAAAAAACBAAAAAAAAAJkAAAAAAAAAIQAAAAAAAACxAAAAAAAAAKEAAAAAAAAAcQAAAAAAAADhAAAAAAAAAAAAAAAAAAAA1QAAAAAAAACJAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAMkAAAAAAAAAkQAAAAAAAACBAAAAAAAAAKEAAAAAAAAAUQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAACJAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAA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b3ZhcmlhbmNlIHBhcmFtZXRlcnMuCiAgICBzY2FsZSA6IGZsb2F0CiAgICAgICAgVGhlIGVzdGltYXRlZCBzY2FsZSBvZiB0aGUgcmVzaWR1YWxzLgogICAgY292X3R5cGUgOiBzdHIKICAgICAgICBUaGUgY292YXJpYW5jZSBlc3RpbWF0b3IgdXNlZCBpbiB0aGUgcmVzdWx0cy4KICAgIGNvdl9rd2RzIDogZGljdAogICAgICAgIEFkZGl0aW9uYWwga2V5d29yZHMgdXNlZCBpbiB0aGUgY292YXJpYW5jZSBzcGVjaWZpY2F0aW9uLgogICAgdXNlX3QgOiBib29sCiAgICAgICAgRmxhZyBpbmRpY2F0aW5nIHRvIHVzZSB0aGUgU3R1ZGVudCdzIHQgaW4gaW5mZXJlbmNlLgogICAgKiprd2FyZ3MKICAgICAgICBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVzdWx0cy4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIFJlZ3Jlc3Npb25SZXN1bHRzCiAgICAgICAgUmVzdWx0cyBzdG9yZSBmb3IgV0xTIGFuZCBHTFcgbW9kZWxzLgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgTW9zdCBvZiB0aGUgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBhcmUgaW5oZXJpdGVkIGZyb20gUmVncmVzc2lvblJlc3VsdHMuCiAgICBUaGUgc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIG9ubHkgYXZhaWxhYmxlIGZvciBPTFMgYXJlOgoKICAgIC0gZ2V0X2luZmx1ZW5jZQogICAgLSBvdXRsaWVyX3Rlc3QKICAgIC0gZWxfdGVzdAogICAgLSBjb25mX2ludF9lbAogICAglHViLg==", "type": "binary"}, {"name": "shared.py", "content": "from pathlib import Path\n\nimport pandas as pd\nimport statsmodels.api as sm\n\napp_dir = Path(__file__).parent\n\n################### Model Object #########################\n\nmodel = pd.read_pickle(app_dir / \"heisman_model.pkl\")\n\n################### Historical #########################\nmodel_data = pd.read_csv(app_dir / \"Model_Data.csv\").reset_index(drop = True)\n\npredict_data = model_data[['Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']]\npredict_data = sm.tools.add_constant(predict_data)\npredict_data['Prediction'] = model.predict(predict_data)\npredict_data = predict_data['Prediction']\n\nmodel_data = pd.merge(model_data, predict_data, left_index=True, right_index=True)\nmodel_data['CPI'] = model_data['CPI'].round(2)\nmodel_data['Prediction'] = model_data['Prediction'].round(2)\n\n\n################### Current #########################\ncurrent_df = pd.read_csv(app_dir / \"Weekly_Data.csv\").reset_index(drop = True)\n\ncurrent_predict_df = current_df[['Passing_Rate', 'Passing_TD', 'Rushing_TD', 'Power5', 'CPI']]\ncurrent_predict_df = sm.tools.add_constant(current_predict_df)\ncurrent_predict_df['Projected Voting Points'] = model.predict(current_predict_df)\ncurrent_predict_df = current_predict_df['Projected Voting Points']\n\ncurrent_df = pd.merge(current_df, current_predict_df, left_index=True, right_index=True)\ncurrent_df['CPI'] = current_df['CPI'].round(2)\ncurrent_df['Projected Voting Points'] = current_df['Projected Voting Points'].round(2)\n\n\n################### Top 10 HTML #########################\n\nwith open(app_dir / \"weekly.html\", 'r') as file: # r to open file in READ mode\n html_top10_string = file.read()", "type": "text"}, {"name": "weekly.html", "content": "
\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n\n\n\n
Predictive QB Heisman Votes
Top 10 - Through Week 1
Player\n Passing\n \n Rushing\n Predicted Voting Points
CompletionsAttemptsYardsTDsInterceptionsAttemptsYardsTDs
Cameron
Rising
\n
\n\n10152545042502208.51
John
Mateer
\n
\n\n11173525025511894.06
Jaxson
Dart
\n
\n\n22274185062711723.16
Ethan
Hampton
\n
\n\n1820328501801557.51
Payton
Thorne
\n
\n\n13213224044911484.97
Hudson
Card
\n
\n\n24252734031601289.41
Blake
Shapen
\n
\n\n15202473074411173.41
Drew
Allar
\n
\n\n11172163064401145.22
Shedeur
Sanders
\n
\n\n26344454161701047.55
Diego
Pavia
\n
\n\n1216190202610411013.17
Model by @DjDataScience, Table inspiration by @arbitanalytics, Data from sports-reference.com and CFBD
\n\n
\n ", "type": "text"}] \ No newline at end of file diff --git a/heisman_project/heisman_model/Data_Wrangling/__pycache__/Quarterback_Stats.cpython-311.pyc b/heisman_project/heisman_model/Data_Wrangling/__pycache__/Quarterback_Stats.cpython-311.pyc index a9034d6e8670251a21ed8d3df273ce3475ce5618..e2a689f7476c249f2a8fa8b6376b028bc71a7cc6 100644 GIT binary patch delta 20 acmeA%?lI