From 0532cea4f9ea2e0b487410f493c11f3fcc5dfce7 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 1 Oct 2023 12:53:36 +0000 Subject: [PATCH] update data --- Data/Weekly_Data.csv | 196 +++++++++--------- Shiny_App/Weekly_Data.csv | 196 +++++++++--------- docs/app.json | 2 +- .../model_data_clean.cpython-39.pyc | Bin 2989 -> 2989 bytes .../__pycache__/CPI_Ratings.cpython-39.pyc | Bin 2813 -> 2813 bytes .../Get_Weekly_Win_Percent.cpython-39.pyc | Bin 961 -> 961 bytes .../Quarterback_Stats.cpython-39.pyc | Bin 1666 -> 1666 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 193 -> 193 bytes 8 files changed, 197 insertions(+), 197 deletions(-) diff --git a/Data/Weekly_Data.csv b/Data/Weekly_Data.csv index dfab6ef..ffd5909 100644 --- a/Data/Weekly_Data.csv +++ b/Data/Weekly_Data.csv @@ -1,118 +1,118 @@ Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI -Michael Penix Jr.,Washington,209.6,16,0,1,25.0 -Caleb Williams,USC,223.1,15,3,1,25.0 -Jack Plummer,Louisville,189.8,10,1,1,25.0 +Caleb Williams,USC,217.7,21,3,1,25.0 +Michael Penix Jr.,Washington,196.5,16,0,1,25.0 Diego Pavia,New Mexico State,182.6,10,0,0,10.0 -Sam Hartman,Notre Dame,200.9,14,2,1,20.0 -Brady Cook,Missouri,185.2,7,3,1,25.0 -Jaxson Dart,Ole Miss,171.0,7,3,1,18.75 -Jayden Daniels,LSU,189.1,12,2,1,18.75 +Jayden Daniels,LSU,193.4,16,3,1,15.0 +Jack Plummer,Louisville,173.0,11,1,1,25.0 +Jalen Milroe,Alabama,177.2,6,4,1,20.0 +Timmy Mcclain,UCF,173.6,7,1,1,15.0 +Jaxson Dart,Ole Miss,174.7,11,4,1,20.0 Tyler Van Dyke,Miami (FL),197.8,11,1,1,25.0 -Dillon Gabriel,Oklahoma,197.2,12,2,1,25.0 -J.J. McCarthy,Michigan,190.5,8,0,1,25.0 -Brett Gabbert,Miami (OH),175.6,9,0,0,18.75 -Jalen Milroe,Alabama,173.4,6,2,1,18.75 +Brady Cook,Missouri,187.7,11,3,1,25.0 +J.J. McCarthy,Michigan,191.6,10,1,1,25.0 +TJ Finley,Texas State,181.6,10,3,0,20.0 +Cardell Williams,Tulsa,169.5,8,2,0,15.0 +Dillon Gabriel,Oklahoma,189.4,15,4,1,25.0 +Sam Hartman,Notre Dame,182.5,14,2,1,20.833333333333336 +Brett Gabbert,Miami (OH),168.1,10,0,0,20.0 Kaidon Salter,Liberty,178.8,11,5,0,25.0 Cameron Ward,Washington State,187.6,13,3,1,25.0 -JT Daniels,Rice,171.4,11,0,0,12.5 Dante Moore,UCLA,163.6,8,0,1,18.75 Bryson Daily,Army,145.4,5,3,0,12.5 -Spencer Rattler,South Carolina,170.6,7,1,1,12.5 -Darren Grainger,Georgia State,171.0,7,3,0,25.0 -TJ Finley,Texas State,172.3,8,3,0,18.75 -Jalon Daniels,Kansas,173.0,5,0,1,25.0 -Carson Beck,Georgia,164.3,6,2,1,25.0 +Brayden Fowler-Nicolosi,Colorado State,168.6,11,1,0,12.5 +Jordan McCloud,James Madison,168.4,11,2,0,25.0 +JT Daniels,Rice,163.2,13,0,0,15.0 +Carson Beck,Georgia,162.0,7,2,1,25.0 Kyle McCord,Ohio State,159.7,6,0,1,25.0 -Quinn Ewers,Texas,168.3,9,3,1,25.0 -Cardell Williams,Tulsa,145.5,5,1,0,12.5 +Quinn Ewers,Texas,164.7,10,5,1,25.0 Keyone Jenkins,Florida International,137.7,5,2,0,15.0 -Jordan McCloud,James Madison,165.4,8,2,0,25.0 +Bo Nix,Oregon,184.7,15,1,1,25.0 Drake Maye,North Carolina,154.7,5,3,1,25.0 -Garrett Shrader,Syracuse,155.0,6,6,1,25.0 Anthony Colandrea,Virginia,142.2,5,0,1,0.0 -Bo Nix,Oregon,180.5,11,1,1,25.0 -Haynes King,Georgia Tech,163.9,11,1,1,12.5 -Graham Mertz,Florida,162.1,4,2,1,18.75 -Carlos Davis,Massachusetts,148.7,6,0,0,5.0 -Tayven Jackson,Indiana,139.0,2,1,1,12.5 -Jayden De Laura,Arizona,157.2,9,3,1,18.75 -Devin Leary,Kentucky,147.8,9,0,1,25.0 -Carter Bradley,South Alabama,156.1,6,1,0,12.5 +Haynes King,Georgia Tech,164.3,15,1,1,10.0 +Darren Grainger,Georgia State,157.3,7,3,0,20.0 +Graham Mertz,Florida,164.2,6,2,1,15.0 +Taulia Tagovailoa,Maryland,160.3,13,3,1,25.0 +Spencer Rattler,South Carolina,156.2,7,2,1,10.0 +DeQuan Finn,Toledo,162.4,10,3,0,20.0 +Jayden De Laura,Arizona,157.2,9,3,1,15.0 Jordan Travis,Florida State,158.1,10,2,1,25.0 -K.J. Jefferson,Arkansas,163.7,9,1,1,12.5 -Dylan Hopkins,New Mexico,146.7,6,1,0,12.5 -Shedeur Sanders,Colorado,167.3,11,1,1,18.75 -Chandler Rogers,North Texas,148.0,4,1,0,8.333333333333332 -Taulia Tagovailoa,Maryland,148.7,8,2,1,25.0 -Conner Weigman,Texas A&M,156.8,8,2,1,18.75 -Brayden Fowler-Nicolosi,Colorado State,150.5,7,0,0,8.333333333333332 -D.J. Uiagalelei,Oregon State,142.8,7,5,1,18.75 -Will Rogers,Mississippi State,142.7,6,0,1,12.5 -Grant Wilson,Old Dominion,134.8,7,1,0,12.5 +Chandler Rogers,North Texas,154.6,7,2,0,12.5 +Garrett Shrader,Syracuse,147.6,8,6,1,20.0 +K.J. Jefferson,Arkansas,158.6,10,1,1,10.0 +Shedeur Sanders,Colorado,165.9,15,2,1,15.0 +Conner Weigman,Texas A&M,156.8,8,2,1,20.0 +D.J. Uiagalelei,Oregon State,140.2,8,5,1,20.0 +McCae Hillstead,Utah State,144.1,8,0,0,10.0 +Cooper Legas,Utah State,147.8,6,0,0,10.0 +Grant Wilson,Old Dominion,134.8,7,1,0,10.0 +Seth Henigan,Memphis,147.8,10,3,0,20.0 +Gunnar Watson,Troy,140.9,9,0,0,15.0 +Devin Leary,Kentucky,139.7,10,0,1,25.0 Mitch Griffis,Wake Forest,139.9,9,0,1,18.75 -Riley Leonard,Duke,140.4,2,4,1,25.0 -Gunnar Watson,Troy,138.0,8,0,0,12.5 -Grayson McCall,Coastal Carolina,141.7,5,0,0,12.5 -Emory Jones,Cincinnati,138.4,7,3,1,12.5 -Thomas Castellanos,Boston College,141.7,8,3,1,6.25 -McCae Hillstead,Utah State,145.7,7,0,0,6.25 -Cooper Legas,Utah State,121.3,3,0,0,6.25 -Kai Horton,Tulane,125.2,3,1,0,18.75 +Grayson McCall,Coastal Carolina,134.0,6,1,0,10.0 +Byrum Brown,South Florida,140.5,9,5,0,15.0 +Carter Bradley,South Alabama,141.1,8,1,0,10.0 Will Howard,Kansas State,143.5,8,5,1,18.75 -Preston Stone,SMU,139.0,9,1,0,12.5 -Noah Kim,Michigan State,133.7,6,0,1,12.5 -AJ Swann,Vanderbilt,129.3,11,1,1,10.0 -Seth Henigan,Memphis,143.8,8,3,0,18.75 -Rocco Becht,Iowa State,142.4,7,1,1,12.5 -DeQuan Finn,Toledo,147.2,8,2,0,18.75 -Michael Alaimo,Kent State,114.1,1,1,0,6.25 -Payton Thorne,Auburn,137.8,4,2,1,18.75 -Mikey Keene,Fresno State,151.4,12,0,0,25.0 -Luke Altmyer,Illinois,126.8,4,3,1,12.5 -Ben Wooldridge,Louisiana,139.4,5,2,0,18.75 -Gavin Hardison,UTEP,120.2,5,2,0,5.0 -Joe Milton,Tennessee,142.3,8,4,1,18.75 -Drew Allar,Penn State,149.0,8,1,1,25.0 -Davis Brin,Georgia Southern,141.4,9,1,0,18.75 -Joey Aguilar,Appalachian State,136.4,9,1,0,12.5 -Byrum Brown,South Florida,127.3,6,5,0,12.5 -Hank Bachmeier,Louisiana Tech,137.7,5,0,0,10.0 -Jacob Zeno,UAB,144.3,8,3,0,6.25 +Dylan Hopkins,New Mexico,134.5,7,1,0,10.0 +Emory Jones,Cincinnati,139.1,10,3,1,10.0 +Thomas Castellanos,Boston College,139.7,10,3,1,10.0 +Mikey Keene,Fresno State,151.3,14,0,0,25.0 +AJ Swann,Vanderbilt,129.3,11,1,1,8.333333333333332 +Joey Aguilar,Appalachian State,141.2,12,1,0,15.0 +Luke Altmyer,Illinois,130.0,5,3,1,10.0 +Tayven Jackson,Indiana,125.2,2,1,1,10.0 +Preston Stone,SMU,137.7,11,1,0,15.0 +Joe Milton,Tennessee,139.0,9,4,1,20.0 +Will Rogers,Mississippi State,131.1,7,0,1,10.0 +Gavin Hardison,UTEP,120.2,5,2,0,4.166666666666666 +Phil Jurkovec,Pitt,124.6,6,1,1,5.0 +Treyson Bourguet,Western Michigan,127.9,4,0,0,10.0 +Riley Leonard,Duke,129.8,3,4,1,20.0 +Donovan Smith,Houston,136.0,9,3,1,10.0 +Hudson Card,Purdue,129.9,5,3,1,10.0 +Rocco Becht,Iowa State,133.4,9,1,1,10.0 +Taylen Green,Boise State,115.8,4,2,0,10.0 +Cam Fancher,Marshall,134.4,4,0,0,25.0 +Michael Alaimo,Kent State,112.3,1,1,0,5.0 Kurtis Rourke,Ohio,137.5,5,0,0,20.0 -Ashton Daniels,Stanford,126.0,3,0,1,6.25 -Hudson Card,Purdue,123.8,3,3,1,6.25 +Jase Bauer,Central Michigan,124.6,2,6,0,15.0 +Ashton Daniels,Stanford,126.3,3,0,1,5.0 +Jacob Zeno,UAB,142.6,8,3,0,5.0 +Drew Allar,Penn State,141.4,9,2,1,25.0 Tanner Mordecai,Wisconsin,124.4,2,4,1,18.75 -Jalen Mayden,San Diego State,123.4,4,3,0,10.0 -Taylen Green,Boise State,114.9,4,2,0,12.5 -Cam Fancher,Marshall,123.3,2,0,0,25.0 -Austin Reed,Western Kentucky,136.7,9,2,0,12.5 -Donovan Smith,Houston,125.5,5,3,1,12.5 -Cade Klubnik,Clemson,140.5,9,2,1,12.5 -Tyler Shough,Texas Tech,130.4,7,2,1,6.25 -Sawyer Robertson,Baylor,100.7,1,1,1,6.25 -Gavin Wimsatt,Rutgers,121.3,4,2,1,18.75 -Ben Finley,California,121.1,3,0,1,12.5 -Sam Jackson,California,123.5,4,1,1,12.5 -Brayden Schager,Hawaii,131.7,12,1,0,10.0 -Phil Jurkovec,Pitt,113.5,4,1,1,6.25 -E.J. Warner,Temple,112.4,5,0,0,12.5 -Nicholas Vattiato,Middle Tennessee State,137.8,7,1,0,6.25 -Brennan Armstrong,North Carolina State,119.7,5,3,1,18.75 +Gavin Wimsatt,Rutgers,125.5,5,4,1,20.0 +Brayden Schager,Hawaii,134.5,14,1,0,8.333333333333332 +Davis Brin,Georgia Southern,137.9,12,1,0,20.0 +Cade Klubnik,Clemson,140.3,11,2,1,15.0 +Noah Kim,Michigan State,119.0,6,0,1,10.0 +Payton Thorne,Auburn,125.8,4,2,1,15.0 +Jiya Wright,Louisiana-Monroe,122.6,4,1,0,12.5 +Tyler Shough,Texas Tech,130.4,7,2,1,10.0 +Sawyer Robertson,Baylor,100.7,1,1,1,10.0 +Ben Finley,California,121.1,3,0,1,15.0 +Sam Jackson,California,113.6,5,1,1,15.0 +Jalen Mayden,San Diego State,120.3,5,3,0,8.333333333333332 +Kyron Drones,Virginia Tech,123.5,4,4,1,10.0 +Austin Reed,Western Kentucky,131.2,11,3,0,15.0 +Andrew Peasley,Wyoming,126.8,6,3,0,20.0 Casey Thompson,Florida Atlantic,125.6,5,0,0,6.25 Daniel Richardson,Florida Atlantic,99.0,2,0,0,6.25 -Billy Wiles,Southern Mississippi,112.0,5,0,0,6.25 +Rocky Lombardi,Northern Illinois,109.2,3,2,0,5.0 +E.J. Warner,Temple,112.0,7,0,0,10.0 +Nicholas Vattiato,Middle Tennessee State,128.3,7,1,0,5.0 +Billy Wiles,Southern Mississippi,111.6,7,1,0,5.0 +Ta'Quan Roberson,Connecticut,119.6,5,1,0,0.0 +Athan Kaliakmanis,Minnesota,117.4,5,2,1,15.0 Chevan Cordeiro,San Jose State,121.9,6,2,0,5.0 -Cole Snyder,Buffalo,127.8,10,0,0,0.0 -Ben Bryant,Northwestern,119.4,6,1,1,12.5 -Kadin Semonza,Ball State,110.0,3,0,0,6.25 -Andrew Peasley,Wyoming,120.8,5,2,0,18.75 -Rocky Lombardi,Northern Illinois,93.8,1,1,0,6.25 -Athan Kaliakmanis,Minnesota,105.8,3,1,1,12.5 -Ta'Quan Roberson,Connecticut,107.7,3,1,0,0.0 -Demarcus Irons Jr.,Akron,111.1,2,2,0,6.25 -Cade McNamara,Iowa,104.4,4,0,1,18.75 -Austin Smith,Eastern Michigan,101.1,2,0,0,12.5 -Alex Flinn,East Carolina,88.2,1,0,0,6.25 -Kyron Drones,Virginia Tech,100.1,1,2,1,6.25 -Brendon Lewis,Nevada,101.1,0,2,0,0.0 +Brennan Armstrong,North Carolina State,112.5,5,3,1,15.0 +Kadin Semonza,Ball State,110.0,3,0,0,5.0 +Ben Bryant,Northwestern,115.9,6,2,1,10.0 +Austin Smith,Eastern Michigan,112.5,3,1,0,10.0 +Cole Snyder,Buffalo,122.9,11,0,0,5.0 +Cade McNamara,Iowa,106.2,4,0,1,20.0 +Keegan Shoemaker,Sam Houston,101.9,2,0,0,0.0 +Alex Flinn,East Carolina,89.0,1,0,0,5.0 +Demarcus Irons Jr.,Akron,114.7,3,2,0,5.0 Alan Bowman,Oklahoma State,96.7,2,1,1,12.5 +Brendon Lewis,Nevada,93.8,0,2,0,0.0 diff --git a/Shiny_App/Weekly_Data.csv b/Shiny_App/Weekly_Data.csv index dfab6ef..ffd5909 100644 --- a/Shiny_App/Weekly_Data.csv +++ b/Shiny_App/Weekly_Data.csv @@ -1,118 +1,118 @@ Player,School,Passing_Rate,Passing_TD,Rushing_TD,Power5,CPI -Michael Penix Jr.,Washington,209.6,16,0,1,25.0 -Caleb Williams,USC,223.1,15,3,1,25.0 -Jack Plummer,Louisville,189.8,10,1,1,25.0 +Caleb Williams,USC,217.7,21,3,1,25.0 +Michael Penix Jr.,Washington,196.5,16,0,1,25.0 Diego Pavia,New Mexico State,182.6,10,0,0,10.0 -Sam Hartman,Notre Dame,200.9,14,2,1,20.0 -Brady Cook,Missouri,185.2,7,3,1,25.0 -Jaxson Dart,Ole Miss,171.0,7,3,1,18.75 -Jayden Daniels,LSU,189.1,12,2,1,18.75 +Jayden Daniels,LSU,193.4,16,3,1,15.0 +Jack Plummer,Louisville,173.0,11,1,1,25.0 +Jalen Milroe,Alabama,177.2,6,4,1,20.0 +Timmy Mcclain,UCF,173.6,7,1,1,15.0 +Jaxson Dart,Ole Miss,174.7,11,4,1,20.0 Tyler Van Dyke,Miami (FL),197.8,11,1,1,25.0 -Dillon Gabriel,Oklahoma,197.2,12,2,1,25.0 -J.J. McCarthy,Michigan,190.5,8,0,1,25.0 -Brett Gabbert,Miami (OH),175.6,9,0,0,18.75 -Jalen Milroe,Alabama,173.4,6,2,1,18.75 +Brady Cook,Missouri,187.7,11,3,1,25.0 +J.J. McCarthy,Michigan,191.6,10,1,1,25.0 +TJ Finley,Texas State,181.6,10,3,0,20.0 +Cardell Williams,Tulsa,169.5,8,2,0,15.0 +Dillon Gabriel,Oklahoma,189.4,15,4,1,25.0 +Sam Hartman,Notre Dame,182.5,14,2,1,20.833333333333336 +Brett Gabbert,Miami (OH),168.1,10,0,0,20.0 Kaidon Salter,Liberty,178.8,11,5,0,25.0 Cameron Ward,Washington State,187.6,13,3,1,25.0 -JT Daniels,Rice,171.4,11,0,0,12.5 Dante Moore,UCLA,163.6,8,0,1,18.75 Bryson Daily,Army,145.4,5,3,0,12.5 -Spencer Rattler,South Carolina,170.6,7,1,1,12.5 -Darren Grainger,Georgia State,171.0,7,3,0,25.0 -TJ Finley,Texas State,172.3,8,3,0,18.75 -Jalon Daniels,Kansas,173.0,5,0,1,25.0 -Carson Beck,Georgia,164.3,6,2,1,25.0 +Brayden Fowler-Nicolosi,Colorado State,168.6,11,1,0,12.5 +Jordan McCloud,James Madison,168.4,11,2,0,25.0 +JT Daniels,Rice,163.2,13,0,0,15.0 +Carson Beck,Georgia,162.0,7,2,1,25.0 Kyle McCord,Ohio State,159.7,6,0,1,25.0 -Quinn Ewers,Texas,168.3,9,3,1,25.0 -Cardell Williams,Tulsa,145.5,5,1,0,12.5 +Quinn Ewers,Texas,164.7,10,5,1,25.0 Keyone Jenkins,Florida International,137.7,5,2,0,15.0 -Jordan McCloud,James Madison,165.4,8,2,0,25.0 +Bo Nix,Oregon,184.7,15,1,1,25.0 Drake Maye,North Carolina,154.7,5,3,1,25.0 -Garrett Shrader,Syracuse,155.0,6,6,1,25.0 Anthony Colandrea,Virginia,142.2,5,0,1,0.0 -Bo Nix,Oregon,180.5,11,1,1,25.0 -Haynes King,Georgia Tech,163.9,11,1,1,12.5 -Graham Mertz,Florida,162.1,4,2,1,18.75 -Carlos Davis,Massachusetts,148.7,6,0,0,5.0 -Tayven Jackson,Indiana,139.0,2,1,1,12.5 -Jayden De Laura,Arizona,157.2,9,3,1,18.75 -Devin Leary,Kentucky,147.8,9,0,1,25.0 -Carter Bradley,South Alabama,156.1,6,1,0,12.5 +Haynes King,Georgia Tech,164.3,15,1,1,10.0 +Darren Grainger,Georgia State,157.3,7,3,0,20.0 +Graham Mertz,Florida,164.2,6,2,1,15.0 +Taulia Tagovailoa,Maryland,160.3,13,3,1,25.0 +Spencer Rattler,South Carolina,156.2,7,2,1,10.0 +DeQuan Finn,Toledo,162.4,10,3,0,20.0 +Jayden De Laura,Arizona,157.2,9,3,1,15.0 Jordan Travis,Florida State,158.1,10,2,1,25.0 -K.J. Jefferson,Arkansas,163.7,9,1,1,12.5 -Dylan Hopkins,New Mexico,146.7,6,1,0,12.5 -Shedeur Sanders,Colorado,167.3,11,1,1,18.75 -Chandler Rogers,North Texas,148.0,4,1,0,8.333333333333332 -Taulia Tagovailoa,Maryland,148.7,8,2,1,25.0 -Conner Weigman,Texas A&M,156.8,8,2,1,18.75 -Brayden Fowler-Nicolosi,Colorado State,150.5,7,0,0,8.333333333333332 -D.J. Uiagalelei,Oregon State,142.8,7,5,1,18.75 -Will Rogers,Mississippi State,142.7,6,0,1,12.5 -Grant Wilson,Old Dominion,134.8,7,1,0,12.5 +Chandler Rogers,North Texas,154.6,7,2,0,12.5 +Garrett Shrader,Syracuse,147.6,8,6,1,20.0 +K.J. Jefferson,Arkansas,158.6,10,1,1,10.0 +Shedeur Sanders,Colorado,165.9,15,2,1,15.0 +Conner Weigman,Texas A&M,156.8,8,2,1,20.0 +D.J. Uiagalelei,Oregon State,140.2,8,5,1,20.0 +McCae Hillstead,Utah State,144.1,8,0,0,10.0 +Cooper Legas,Utah State,147.8,6,0,0,10.0 +Grant Wilson,Old Dominion,134.8,7,1,0,10.0 +Seth Henigan,Memphis,147.8,10,3,0,20.0 +Gunnar Watson,Troy,140.9,9,0,0,15.0 +Devin Leary,Kentucky,139.7,10,0,1,25.0 Mitch Griffis,Wake Forest,139.9,9,0,1,18.75 -Riley Leonard,Duke,140.4,2,4,1,25.0 -Gunnar Watson,Troy,138.0,8,0,0,12.5 -Grayson McCall,Coastal Carolina,141.7,5,0,0,12.5 -Emory Jones,Cincinnati,138.4,7,3,1,12.5 -Thomas Castellanos,Boston College,141.7,8,3,1,6.25 -McCae Hillstead,Utah State,145.7,7,0,0,6.25 -Cooper Legas,Utah State,121.3,3,0,0,6.25 -Kai Horton,Tulane,125.2,3,1,0,18.75 +Grayson McCall,Coastal Carolina,134.0,6,1,0,10.0 +Byrum Brown,South Florida,140.5,9,5,0,15.0 +Carter Bradley,South Alabama,141.1,8,1,0,10.0 Will Howard,Kansas State,143.5,8,5,1,18.75 -Preston Stone,SMU,139.0,9,1,0,12.5 -Noah Kim,Michigan State,133.7,6,0,1,12.5 -AJ Swann,Vanderbilt,129.3,11,1,1,10.0 -Seth Henigan,Memphis,143.8,8,3,0,18.75 -Rocco Becht,Iowa State,142.4,7,1,1,12.5 -DeQuan Finn,Toledo,147.2,8,2,0,18.75 -Michael Alaimo,Kent State,114.1,1,1,0,6.25 -Payton Thorne,Auburn,137.8,4,2,1,18.75 -Mikey Keene,Fresno State,151.4,12,0,0,25.0 -Luke Altmyer,Illinois,126.8,4,3,1,12.5 -Ben Wooldridge,Louisiana,139.4,5,2,0,18.75 -Gavin Hardison,UTEP,120.2,5,2,0,5.0 -Joe Milton,Tennessee,142.3,8,4,1,18.75 -Drew Allar,Penn State,149.0,8,1,1,25.0 -Davis Brin,Georgia Southern,141.4,9,1,0,18.75 -Joey Aguilar,Appalachian State,136.4,9,1,0,12.5 -Byrum Brown,South Florida,127.3,6,5,0,12.5 -Hank Bachmeier,Louisiana Tech,137.7,5,0,0,10.0 -Jacob Zeno,UAB,144.3,8,3,0,6.25 +Dylan Hopkins,New Mexico,134.5,7,1,0,10.0 +Emory Jones,Cincinnati,139.1,10,3,1,10.0 +Thomas Castellanos,Boston College,139.7,10,3,1,10.0 +Mikey Keene,Fresno State,151.3,14,0,0,25.0 +AJ Swann,Vanderbilt,129.3,11,1,1,8.333333333333332 +Joey Aguilar,Appalachian State,141.2,12,1,0,15.0 +Luke Altmyer,Illinois,130.0,5,3,1,10.0 +Tayven Jackson,Indiana,125.2,2,1,1,10.0 +Preston Stone,SMU,137.7,11,1,0,15.0 +Joe Milton,Tennessee,139.0,9,4,1,20.0 +Will Rogers,Mississippi State,131.1,7,0,1,10.0 +Gavin Hardison,UTEP,120.2,5,2,0,4.166666666666666 +Phil Jurkovec,Pitt,124.6,6,1,1,5.0 +Treyson Bourguet,Western Michigan,127.9,4,0,0,10.0 +Riley Leonard,Duke,129.8,3,4,1,20.0 +Donovan Smith,Houston,136.0,9,3,1,10.0 +Hudson Card,Purdue,129.9,5,3,1,10.0 +Rocco Becht,Iowa State,133.4,9,1,1,10.0 +Taylen Green,Boise State,115.8,4,2,0,10.0 +Cam Fancher,Marshall,134.4,4,0,0,25.0 +Michael Alaimo,Kent State,112.3,1,1,0,5.0 Kurtis Rourke,Ohio,137.5,5,0,0,20.0 -Ashton Daniels,Stanford,126.0,3,0,1,6.25 -Hudson Card,Purdue,123.8,3,3,1,6.25 +Jase Bauer,Central Michigan,124.6,2,6,0,15.0 +Ashton Daniels,Stanford,126.3,3,0,1,5.0 +Jacob Zeno,UAB,142.6,8,3,0,5.0 +Drew Allar,Penn State,141.4,9,2,1,25.0 Tanner Mordecai,Wisconsin,124.4,2,4,1,18.75 -Jalen Mayden,San Diego State,123.4,4,3,0,10.0 -Taylen Green,Boise State,114.9,4,2,0,12.5 -Cam Fancher,Marshall,123.3,2,0,0,25.0 -Austin Reed,Western Kentucky,136.7,9,2,0,12.5 -Donovan Smith,Houston,125.5,5,3,1,12.5 -Cade Klubnik,Clemson,140.5,9,2,1,12.5 -Tyler Shough,Texas Tech,130.4,7,2,1,6.25 -Sawyer Robertson,Baylor,100.7,1,1,1,6.25 -Gavin Wimsatt,Rutgers,121.3,4,2,1,18.75 -Ben Finley,California,121.1,3,0,1,12.5 -Sam Jackson,California,123.5,4,1,1,12.5 -Brayden Schager,Hawaii,131.7,12,1,0,10.0 -Phil Jurkovec,Pitt,113.5,4,1,1,6.25 -E.J. Warner,Temple,112.4,5,0,0,12.5 -Nicholas Vattiato,Middle Tennessee State,137.8,7,1,0,6.25 -Brennan Armstrong,North Carolina State,119.7,5,3,1,18.75 +Gavin Wimsatt,Rutgers,125.5,5,4,1,20.0 +Brayden Schager,Hawaii,134.5,14,1,0,8.333333333333332 +Davis Brin,Georgia Southern,137.9,12,1,0,20.0 +Cade Klubnik,Clemson,140.3,11,2,1,15.0 +Noah Kim,Michigan State,119.0,6,0,1,10.0 +Payton Thorne,Auburn,125.8,4,2,1,15.0 +Jiya Wright,Louisiana-Monroe,122.6,4,1,0,12.5 +Tyler Shough,Texas Tech,130.4,7,2,1,10.0 +Sawyer Robertson,Baylor,100.7,1,1,1,10.0 +Ben Finley,California,121.1,3,0,1,15.0 +Sam Jackson,California,113.6,5,1,1,15.0 +Jalen Mayden,San Diego State,120.3,5,3,0,8.333333333333332 +Kyron Drones,Virginia Tech,123.5,4,4,1,10.0 +Austin Reed,Western Kentucky,131.2,11,3,0,15.0 +Andrew Peasley,Wyoming,126.8,6,3,0,20.0 Casey Thompson,Florida Atlantic,125.6,5,0,0,6.25 Daniel Richardson,Florida Atlantic,99.0,2,0,0,6.25 -Billy Wiles,Southern Mississippi,112.0,5,0,0,6.25 +Rocky Lombardi,Northern Illinois,109.2,3,2,0,5.0 +E.J. Warner,Temple,112.0,7,0,0,10.0 +Nicholas Vattiato,Middle Tennessee State,128.3,7,1,0,5.0 +Billy Wiles,Southern Mississippi,111.6,7,1,0,5.0 +Ta'Quan Roberson,Connecticut,119.6,5,1,0,0.0 +Athan Kaliakmanis,Minnesota,117.4,5,2,1,15.0 Chevan Cordeiro,San Jose State,121.9,6,2,0,5.0 -Cole Snyder,Buffalo,127.8,10,0,0,0.0 -Ben Bryant,Northwestern,119.4,6,1,1,12.5 -Kadin Semonza,Ball State,110.0,3,0,0,6.25 -Andrew Peasley,Wyoming,120.8,5,2,0,18.75 -Rocky Lombardi,Northern Illinois,93.8,1,1,0,6.25 -Athan Kaliakmanis,Minnesota,105.8,3,1,1,12.5 -Ta'Quan Roberson,Connecticut,107.7,3,1,0,0.0 -Demarcus Irons Jr.,Akron,111.1,2,2,0,6.25 -Cade McNamara,Iowa,104.4,4,0,1,18.75 -Austin Smith,Eastern Michigan,101.1,2,0,0,12.5 -Alex Flinn,East Carolina,88.2,1,0,0,6.25 -Kyron Drones,Virginia Tech,100.1,1,2,1,6.25 -Brendon Lewis,Nevada,101.1,0,2,0,0.0 +Brennan Armstrong,North Carolina State,112.5,5,3,1,15.0 +Kadin Semonza,Ball State,110.0,3,0,0,5.0 +Ben Bryant,Northwestern,115.9,6,2,1,10.0 +Austin Smith,Eastern Michigan,112.5,3,1,0,10.0 +Cole Snyder,Buffalo,122.9,11,0,0,5.0 +Cade McNamara,Iowa,106.2,4,0,1,20.0 +Keegan Shoemaker,Sam Houston,101.9,2,0,0,0.0 +Alex Flinn,East Carolina,89.0,1,0,0,5.0 +Demarcus Irons Jr.,Akron,114.7,3,2,0,5.0 Alan Bowman,Oklahoma State,96.7,2,1,1,12.5 +Brendon Lewis,Nevada,93.8,0,2,0,0.0 diff --git a/docs/app.json b/docs/app.json index f88714b..ca5172e 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\nfrom pathlib import Path\n\nmodel_path = Path(__file__).parent / \"heisman_model.pkl\"\nmodel_data_path = Path(__file__).parent / \"Model_Data.csv\"\nweekly_data_path = Path(__file__).parent / \"Weekly_Data.csv\"\n\nmodel = pickle.load(open(model_path, 'rb'))\n################### Historical #########################\nmodel_data = pd.read_csv(model_data_path).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################### Current #########################\ncurrent_df = pd.read_csv(weekly_data_path).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# 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 that I spent the summer of 2020 on in my free time.\n
\n\n Simply put, the model aims to predict the finals standings in Heisman voting for quarterbacks\n specifically. This is mostly because it is difficult to come up with a sample of metrics that apply\n to the different positions across college football.\n
\n\n The model itself is a linear regression with 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 \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 \n ui.nav(\"Scatter\",\n ui.div(\n output_widget(\"my_widget\")\n )\n )\n )\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\nMichael Penix Jr.,Washington,209.6,16,0,1,25.0\nCaleb Williams,USC,223.1,15,3,1,25.0\nJack Plummer,Louisville,189.8,10,1,1,25.0\nDiego Pavia,New Mexico State,182.6,10,0,0,10.0\nSam Hartman,Notre Dame,200.9,14,2,1,20.0\nBrady Cook,Missouri,185.2,7,3,1,25.0\nJaxson Dart,Ole Miss,171.0,7,3,1,18.75\nJayden Daniels,LSU,189.1,12,2,1,18.75\nTyler Van Dyke,Miami (FL),197.8,11,1,1,25.0\nDillon Gabriel,Oklahoma,197.2,12,2,1,25.0\nJ.J. McCarthy,Michigan,190.5,8,0,1,25.0\nBrett Gabbert,Miami (OH),175.6,9,0,0,18.75\nJalen Milroe,Alabama,173.4,6,2,1,18.75\nKaidon Salter,Liberty,178.8,11,5,0,25.0\nCameron Ward,Washington State,187.6,13,3,1,25.0\nJT Daniels,Rice,171.4,11,0,0,12.5\nDante Moore,UCLA,163.6,8,0,1,18.75\nBryson Daily,Army,145.4,5,3,0,12.5\nSpencer Rattler,South Carolina,170.6,7,1,1,12.5\nDarren Grainger,Georgia State,171.0,7,3,0,25.0\nTJ Finley,Texas State,172.3,8,3,0,18.75\nJalon Daniels,Kansas,173.0,5,0,1,25.0\nCarson Beck,Georgia,164.3,6,2,1,25.0\nKyle McCord,Ohio State,159.7,6,0,1,25.0\nQuinn Ewers,Texas,168.3,9,3,1,25.0\nCardell Williams,Tulsa,145.5,5,1,0,12.5\nKeyone Jenkins,Florida International,137.7,5,2,0,15.0\nJordan McCloud,James Madison,165.4,8,2,0,25.0\nDrake Maye,North Carolina,154.7,5,3,1,25.0\nGarrett Shrader,Syracuse,155.0,6,6,1,25.0\nAnthony Colandrea,Virginia,142.2,5,0,1,0.0\nBo Nix,Oregon,180.5,11,1,1,25.0\nHaynes King,Georgia Tech,163.9,11,1,1,12.5\nGraham Mertz,Florida,162.1,4,2,1,18.75\nCarlos Davis,Massachusetts,148.7,6,0,0,5.0\nTayven Jackson,Indiana,139.0,2,1,1,12.5\nJayden De Laura,Arizona,157.2,9,3,1,18.75\nDevin Leary,Kentucky,147.8,9,0,1,25.0\nCarter Bradley,South Alabama,156.1,6,1,0,12.5\nJordan Travis,Florida State,158.1,10,2,1,25.0\nK.J. Jefferson,Arkansas,163.7,9,1,1,12.5\nDylan Hopkins,New Mexico,146.7,6,1,0,12.5\nShedeur Sanders,Colorado,167.3,11,1,1,18.75\nChandler Rogers,North Texas,148.0,4,1,0,8.333333333333332\nTaulia Tagovailoa,Maryland,148.7,8,2,1,25.0\nConner Weigman,Texas A&M,156.8,8,2,1,18.75\nBrayden Fowler-Nicolosi,Colorado State,150.5,7,0,0,8.333333333333332\nD.J. Uiagalelei,Oregon State,142.8,7,5,1,18.75\nWill Rogers,Mississippi State,142.7,6,0,1,12.5\nGrant Wilson,Old Dominion,134.8,7,1,0,12.5\nMitch Griffis,Wake Forest,139.9,9,0,1,18.75\nRiley Leonard,Duke,140.4,2,4,1,25.0\nGunnar Watson,Troy,138.0,8,0,0,12.5\nGrayson McCall,Coastal Carolina,141.7,5,0,0,12.5\nEmory Jones,Cincinnati,138.4,7,3,1,12.5\nThomas Castellanos,Boston College,141.7,8,3,1,6.25\nMcCae Hillstead,Utah State,145.7,7,0,0,6.25\nCooper Legas,Utah State,121.3,3,0,0,6.25\nKai Horton,Tulane,125.2,3,1,0,18.75\nWill Howard,Kansas State,143.5,8,5,1,18.75\nPreston Stone,SMU,139.0,9,1,0,12.5\nNoah Kim,Michigan State,133.7,6,0,1,12.5\nAJ Swann,Vanderbilt,129.3,11,1,1,10.0\nSeth Henigan,Memphis,143.8,8,3,0,18.75\nRocco Becht,Iowa State,142.4,7,1,1,12.5\nDeQuan Finn,Toledo,147.2,8,2,0,18.75\nMichael Alaimo,Kent State,114.1,1,1,0,6.25\nPayton Thorne,Auburn,137.8,4,2,1,18.75\nMikey Keene,Fresno State,151.4,12,0,0,25.0\nLuke Altmyer,Illinois,126.8,4,3,1,12.5\nBen Wooldridge,Louisiana,139.4,5,2,0,18.75\nGavin Hardison,UTEP,120.2,5,2,0,5.0\nJoe Milton,Tennessee,142.3,8,4,1,18.75\nDrew Allar,Penn State,149.0,8,1,1,25.0\nDavis Brin,Georgia Southern,141.4,9,1,0,18.75\nJoey Aguilar,Appalachian State,136.4,9,1,0,12.5\nByrum Brown,South Florida,127.3,6,5,0,12.5\nHank Bachmeier,Louisiana Tech,137.7,5,0,0,10.0\nJacob Zeno,UAB,144.3,8,3,0,6.25\nKurtis Rourke,Ohio,137.5,5,0,0,20.0\nAshton Daniels,Stanford,126.0,3,0,1,6.25\nHudson Card,Purdue,123.8,3,3,1,6.25\nTanner Mordecai,Wisconsin,124.4,2,4,1,18.75\nJalen Mayden,San Diego State,123.4,4,3,0,10.0\nTaylen Green,Boise State,114.9,4,2,0,12.5\nCam Fancher,Marshall,123.3,2,0,0,25.0\nAustin Reed,Western Kentucky,136.7,9,2,0,12.5\nDonovan Smith,Houston,125.5,5,3,1,12.5\nCade Klubnik,Clemson,140.5,9,2,1,12.5\nTyler Shough,Texas Tech,130.4,7,2,1,6.25\nSawyer Robertson,Baylor,100.7,1,1,1,6.25\nGavin Wimsatt,Rutgers,121.3,4,2,1,18.75\nBen Finley,California,121.1,3,0,1,12.5\nSam Jackson,California,123.5,4,1,1,12.5\nBrayden Schager,Hawaii,131.7,12,1,0,10.0\nPhil Jurkovec,Pitt,113.5,4,1,1,6.25\nE.J. Warner,Temple,112.4,5,0,0,12.5\nNicholas Vattiato,Middle Tennessee State,137.8,7,1,0,6.25\nBrennan Armstrong,North Carolina State,119.7,5,3,1,18.75\nCasey Thompson,Florida Atlantic,125.6,5,0,0,6.25\nDaniel Richardson,Florida Atlantic,99.0,2,0,0,6.25\nBilly Wiles,Southern Mississippi,112.0,5,0,0,6.25\nChevan Cordeiro,San Jose State,121.9,6,2,0,5.0\nCole Snyder,Buffalo,127.8,10,0,0,0.0\nBen Bryant,Northwestern,119.4,6,1,1,12.5\nKadin Semonza,Ball State,110.0,3,0,0,6.25\nAndrew Peasley,Wyoming,120.8,5,2,0,18.75\nRocky Lombardi,Northern Illinois,93.8,1,1,0,6.25\nAthan Kaliakmanis,Minnesota,105.8,3,1,1,12.5\nTa'Quan Roberson,Connecticut,107.7,3,1,0,0.0\nDemarcus Irons Jr.,Akron,111.1,2,2,0,6.25\nCade McNamara,Iowa,104.4,4,0,1,18.75\nAustin Smith,Eastern Michigan,101.1,2,0,0,12.5\nAlex Flinn,East Carolina,88.2,1,0,0,6.25\nKyron Drones,Virginia Tech,100.1,1,2,1,6.25\nBrendon Lewis,Nevada,101.1,0,2,0,0.0\nAlan Bowman,Oklahoma State,96.7,2,1,1,12.5\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"}] \ 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\nfrom pathlib import Path\n\nmodel_path = Path(__file__).parent / \"heisman_model.pkl\"\nmodel_data_path = Path(__file__).parent / \"Model_Data.csv\"\nweekly_data_path = Path(__file__).parent / \"Weekly_Data.csv\"\n\nmodel = pickle.load(open(model_path, 'rb'))\n################### Historical #########################\nmodel_data = pd.read_csv(model_data_path).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################### Current #########################\ncurrent_df = pd.read_csv(weekly_data_path).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# 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 that I spent the summer of 2020 on in my free time.\n
\n\n Simply put, the model aims to predict the finals standings in Heisman voting for quarterbacks\n specifically. This is mostly because it is difficult to come up with a sample of metrics that apply\n to the different positions across college football.\n
\n\n The model itself is a linear regression with 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 \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 \n ui.nav(\"Scatter\",\n ui.div(\n output_widget(\"my_widget\")\n )\n )\n )\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\nCaleb Williams,USC,217.7,21,3,1,25.0\nMichael Penix Jr.,Washington,196.5,16,0,1,25.0\nDiego Pavia,New Mexico State,182.6,10,0,0,10.0\nJayden Daniels,LSU,193.4,16,3,1,15.0\nJack Plummer,Louisville,173.0,11,1,1,25.0\nJalen Milroe,Alabama,177.2,6,4,1,20.0\nTimmy Mcclain,UCF,173.6,7,1,1,15.0\nJaxson Dart,Ole Miss,174.7,11,4,1,20.0\nTyler Van Dyke,Miami (FL),197.8,11,1,1,25.0\nBrady Cook,Missouri,187.7,11,3,1,25.0\nJ.J. McCarthy,Michigan,191.6,10,1,1,25.0\nTJ Finley,Texas State,181.6,10,3,0,20.0\nCardell Williams,Tulsa,169.5,8,2,0,15.0\nDillon Gabriel,Oklahoma,189.4,15,4,1,25.0\nSam Hartman,Notre Dame,182.5,14,2,1,20.833333333333336\nBrett Gabbert,Miami (OH),168.1,10,0,0,20.0\nKaidon Salter,Liberty,178.8,11,5,0,25.0\nCameron Ward,Washington State,187.6,13,3,1,25.0\nDante Moore,UCLA,163.6,8,0,1,18.75\nBryson Daily,Army,145.4,5,3,0,12.5\nBrayden Fowler-Nicolosi,Colorado State,168.6,11,1,0,12.5\nJordan McCloud,James Madison,168.4,11,2,0,25.0\nJT Daniels,Rice,163.2,13,0,0,15.0\nCarson Beck,Georgia,162.0,7,2,1,25.0\nKyle McCord,Ohio State,159.7,6,0,1,25.0\nQuinn Ewers,Texas,164.7,10,5,1,25.0\nKeyone Jenkins,Florida International,137.7,5,2,0,15.0\nBo Nix,Oregon,184.7,15,1,1,25.0\nDrake Maye,North Carolina,154.7,5,3,1,25.0\nAnthony Colandrea,Virginia,142.2,5,0,1,0.0\nHaynes King,Georgia Tech,164.3,15,1,1,10.0\nDarren Grainger,Georgia State,157.3,7,3,0,20.0\nGraham Mertz,Florida,164.2,6,2,1,15.0\nTaulia Tagovailoa,Maryland,160.3,13,3,1,25.0\nSpencer Rattler,South Carolina,156.2,7,2,1,10.0\nDeQuan Finn,Toledo,162.4,10,3,0,20.0\nJayden De Laura,Arizona,157.2,9,3,1,15.0\nJordan Travis,Florida State,158.1,10,2,1,25.0\nChandler Rogers,North Texas,154.6,7,2,0,12.5\nGarrett Shrader,Syracuse,147.6,8,6,1,20.0\nK.J. Jefferson,Arkansas,158.6,10,1,1,10.0\nShedeur Sanders,Colorado,165.9,15,2,1,15.0\nConner Weigman,Texas A&M,156.8,8,2,1,20.0\nD.J. Uiagalelei,Oregon State,140.2,8,5,1,20.0\nMcCae Hillstead,Utah State,144.1,8,0,0,10.0\nCooper Legas,Utah State,147.8,6,0,0,10.0\nGrant Wilson,Old Dominion,134.8,7,1,0,10.0\nSeth Henigan,Memphis,147.8,10,3,0,20.0\nGunnar Watson,Troy,140.9,9,0,0,15.0\nDevin Leary,Kentucky,139.7,10,0,1,25.0\nMitch Griffis,Wake Forest,139.9,9,0,1,18.75\nGrayson McCall,Coastal Carolina,134.0,6,1,0,10.0\nByrum Brown,South Florida,140.5,9,5,0,15.0\nCarter Bradley,South Alabama,141.1,8,1,0,10.0\nWill Howard,Kansas State,143.5,8,5,1,18.75\nDylan Hopkins,New Mexico,134.5,7,1,0,10.0\nEmory Jones,Cincinnati,139.1,10,3,1,10.0\nThomas Castellanos,Boston College,139.7,10,3,1,10.0\nMikey Keene,Fresno State,151.3,14,0,0,25.0\nAJ Swann,Vanderbilt,129.3,11,1,1,8.333333333333332\nJoey Aguilar,Appalachian State,141.2,12,1,0,15.0\nLuke Altmyer,Illinois,130.0,5,3,1,10.0\nTayven Jackson,Indiana,125.2,2,1,1,10.0\nPreston Stone,SMU,137.7,11,1,0,15.0\nJoe Milton,Tennessee,139.0,9,4,1,20.0\nWill Rogers,Mississippi State,131.1,7,0,1,10.0\nGavin Hardison,UTEP,120.2,5,2,0,4.166666666666666\nPhil Jurkovec,Pitt,124.6,6,1,1,5.0\nTreyson Bourguet,Western Michigan,127.9,4,0,0,10.0\nRiley Leonard,Duke,129.8,3,4,1,20.0\nDonovan Smith,Houston,136.0,9,3,1,10.0\nHudson Card,Purdue,129.9,5,3,1,10.0\nRocco Becht,Iowa State,133.4,9,1,1,10.0\nTaylen Green,Boise State,115.8,4,2,0,10.0\nCam Fancher,Marshall,134.4,4,0,0,25.0\nMichael Alaimo,Kent State,112.3,1,1,0,5.0\nKurtis Rourke,Ohio,137.5,5,0,0,20.0\nJase Bauer,Central Michigan,124.6,2,6,0,15.0\nAshton Daniels,Stanford,126.3,3,0,1,5.0\nJacob Zeno,UAB,142.6,8,3,0,5.0\nDrew Allar,Penn State,141.4,9,2,1,25.0\nTanner Mordecai,Wisconsin,124.4,2,4,1,18.75\nGavin Wimsatt,Rutgers,125.5,5,4,1,20.0\nBrayden Schager,Hawaii,134.5,14,1,0,8.333333333333332\nDavis Brin,Georgia Southern,137.9,12,1,0,20.0\nCade Klubnik,Clemson,140.3,11,2,1,15.0\nNoah Kim,Michigan State,119.0,6,0,1,10.0\nPayton Thorne,Auburn,125.8,4,2,1,15.0\nJiya Wright,Louisiana-Monroe,122.6,4,1,0,12.5\nTyler Shough,Texas Tech,130.4,7,2,1,10.0\nSawyer Robertson,Baylor,100.7,1,1,1,10.0\nBen Finley,California,121.1,3,0,1,15.0\nSam Jackson,California,113.6,5,1,1,15.0\nJalen Mayden,San Diego State,120.3,5,3,0,8.333333333333332\nKyron Drones,Virginia Tech,123.5,4,4,1,10.0\nAustin Reed,Western Kentucky,131.2,11,3,0,15.0\nAndrew Peasley,Wyoming,126.8,6,3,0,20.0\nCasey Thompson,Florida Atlantic,125.6,5,0,0,6.25\nDaniel Richardson,Florida Atlantic,99.0,2,0,0,6.25\nRocky Lombardi,Northern Illinois,109.2,3,2,0,5.0\nE.J. Warner,Temple,112.0,7,0,0,10.0\nNicholas Vattiato,Middle Tennessee State,128.3,7,1,0,5.0\nBilly Wiles,Southern Mississippi,111.6,7,1,0,5.0\nTa'Quan Roberson,Connecticut,119.6,5,1,0,0.0\nAthan Kaliakmanis,Minnesota,117.4,5,2,1,15.0\nChevan Cordeiro,San Jose State,121.9,6,2,0,5.0\nBrennan Armstrong,North Carolina State,112.5,5,3,1,15.0\nKadin Semonza,Ball State,110.0,3,0,0,5.0\nBen Bryant,Northwestern,115.9,6,2,1,10.0\nAustin Smith,Eastern Michigan,112.5,3,1,0,10.0\nCole Snyder,Buffalo,122.9,11,0,0,5.0\nCade McNamara,Iowa,106.2,4,0,1,20.0\nKeegan Shoemaker,Sam Houston,101.9,2,0,0,0.0\nAlex Flinn,East Carolina,89.0,1,0,0,5.0\nDemarcus Irons Jr.,Akron,114.7,3,2,0,5.0\nAlan Bowman,Oklahoma State,96.7,2,1,1,12.5\nBrendon Lewis,Nevada,93.8,0,2,0,0.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"}] \ No newline at end of file diff --git a/heisman_project/heisman_model/Data_Cleaning/__pycache__/model_data_clean.cpython-39.pyc b/heisman_project/heisman_model/Data_Cleaning/__pycache__/model_data_clean.cpython-39.pyc index 29a48b56ae504cc385f47deab5ae60affd063472..e08262ec76f20b4b0dfaa1bf1e31269b793d6976 100644 GIT binary patch delta 20 acmZ20zE+$&k(ZZ?0SMM*OK#*|#0>y3DFn0t delta 20 acmZ20zE+$&k(ZZ?0SK5*32o$F#0>y0j09i+ diff --git a/heisman_project/heisman_model/Data_Wrangling/__pycache__/CPI_Ratings.cpython-39.pyc b/heisman_project/heisman_model/Data_Wrangling/__pycache__/CPI_Ratings.cpython-39.pyc index b5dccde8e4ead4d83c89e0a9d7959d7067538942..e43268f02282b06aa34934f07dcaecfcf0c133db 100644 GIT binary patch delta 20 acmew>`d5@Yk(ZZ?0SMM*OK#-;#03C7U`d5@Yk(ZZ?0SK5*32o&5#03C4!v#wK diff --git a/heisman_project/heisman_model/Data_Wrangling/__pycache__/Get_Weekly_Win_Percent.cpython-39.pyc b/heisman_project/heisman_model/Data_Wrangling/__pycache__/Get_Weekly_Win_Percent.cpython-39.pyc index 00e618fead9ca40cd382e370d84796d90159b032..97249b024e68978dec23bc9239731cb88111a867 100644 GIT binary patch delta 20 acmX@eevq9zk(ZZ?0SMM*OK#-e#tZ;50R+eZ delta 20 acmX@eevq9zk(ZZ?0SK5*32o%w#tZ;2WCU~o diff --git a/heisman_project/heisman_model/Data_Wrangling/__pycache__/Quarterback_Stats.cpython-39.pyc b/heisman_project/heisman_model/Data_Wrangling/__pycache__/Quarterback_Stats.cpython-39.pyc index 8f3b73a0eabcec5c81c44646c9a864797cc3bc2c..8b82937f23e2a473f933323373342ccbe31d41da 100644 GIT binary patch delta 20 ZcmZqTZQ|ul