%dh%8ddlZddlZddlZddlZddlZddl Z ddl m Z ej ej eZej eZej edZej edZej edZej edZejeddZej ed Zeed 5ZejeZdddn #1swxYwYej ed Zeed 5ZejeZdddn #1swxYwYd Zd ZdZ dZ!dZ"dZ#dS)N) BeautifulSoupDataModelsPickleszpbp_this_year.csvF index_col low_memoryzteam_name_to_abbreviation.pklrbzteam_abbreviation_to_name.pklc ddddddddd}d }tj|| }t|jd }|d }|d dd }|d dd}t|t|fS)Nztext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7z gzip, deflatezen-US,en;q=0.9z max-age=0z keep-alive1zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36)AcceptzAccept-EncodingzAccept-Languagez Cache-Control ConnectionDntzUpgrade-Insecure-Requestsz User-Agentzhttps://www.nfl.com/schedules/)headersz html.parserh2r )requestsgetrtextfind_allgetTextsplitint)rurlrespsouph2_tagsyearweeks oC:\Users\Brayden\OneDrive - stern.nyu.edu\Brayden Moore LLC\Python\Projects\MARCI 3.0\Source\Predict\predict.pyget_weekr"sX&'  !$D  G +C <G , , ,D M 2 2DmmD!!G 1:     % %c * *1 -D 1:     % %c * *2 .D t99c$ii c`d}tj|d}d|dD|d<d|dD|d<tj|d |d <|d jd |d <|d d |d <|gd S)Nz&https://www.nbcsports.com/nfl/schedulercng|]2}d|ddd3Sr Njoinr.0is r! zget_games..37WWWsxx 344WWWr#zAway TeamAway Team Away Teamcng|]2}d|ddd3Sr&r)r+s r!r.zget_games..4r/r#zHome TeamHome Team Home TeamzGame TimeGame TimeDatez%A %d/%m %I:%M %pc |ddt|ddddt|dddd|dS)Nrrr(/)rr capitalize)xs r!zget_games..7sqwwyy|-Q-Qc!''))A,BTBTUXBYBYZ[B\>]>]-Q-Q`cdedkdkdmdmnodpdvdvwzd{d{|}d~``-Q-QCDCJCJCLCLMNCO-Q-Q-\-\-^-^r#)r0r2r3)pd read_html to_datetimedtstrftimeapply)rdfs r! get_gamesrA/s 2C c  1 BWWbAU>VWWWB{OWWbAU>VWWWB{O#7 899BvJF''(;<|dd9gjD|d?<fd@|dd.@]OOOUZUVWXYZaccillQqSSY\\qOOOr#)resultrDrCWcTg|]$\}}}|dkr|krdn|dkr|krdnd%SrHrIrJs r!r.z get_one_week..ArOr#LW_PCTc*g|]\}}|kr|ndSrrI)r,tprNs r!r.z get_one_week..Cs)^^^! 1 11!^^^r# TOP_secondsposteamTOPc6g|]\}}|kr|dkrdndSr(rrIr,rXfrNs r!r.z get_one_week..Ds1nnn1 1 A111nnnr#field_goal_attemptFGAc6g|]\}}|kr|dkrdndS)mader(rrIr^s r!r.z get_one_week..Es1rrrca 1 F11rrrr#field_goal_resultFGMFG_PCTpass_touchdownr(rPassTDrush_touchdownRushTDdefteamPassTD_AllowedRushTD_Allowedc*g|]\}}|kr|ndSrVrIr,rXyrNs r!r.z get_one_week..K)dddCAaAyLLqqadddr# passing_yardsPassYdsc*g|]\}}|kr|ndSrVrIros r!r.z get_one_week..Lrqr# rushing_yardsRushYdsc*g|]\}}|kr|ndSrVrIr,drprNs r!r.z get_one_week..M)lllCAaAyLLqqalllr#PassYds_Allowedc*g|]\}}|kr|ndSrVrIrxs r!r.z get_one_week..Nrzr#RushYds_Allowed fumble_lostFum Fum_Allowed interceptionINT INT_AllowedsackSacks Sacks_Allowed penalty_team Penaltiesc6g|]\}}|kr|dkrdndSr]rIr^s r!r.z get_one_week..Vs1mmm!y!||1!!!mmmr# first_down FirstDownsc6g|]\}}|kr|dkrdndSr]rIr,rXrWrNs r!r.z get_one_week..Ws1}}}caQ \\add}}}r#third_down_converted3rdDownConvertedc6g|]\}}|kr|dkrdndSr]rIrs r!r.z get_one_week..Xs1www31Q!Y,,1a44QQQwwwr#third_down_failed 3rdDownFailedc6g|]\}}|kr|dkrdndSr]rIr,ryrWrNs r!r.z get_one_week..Ys1{{{CAa1i<.Zs1yyySQqAyLLQTTqqqyyyr#3rdDownDefendedc>g|]\}}}}|kr|n |kr|ndS)NrI)r,htathpaprNs r!r.z get_one_week..[sN___kbQSTVWYY22"i--BBT___r#)rCrD home_score away_scorePTSc>g|]\}}}|kr|n |kr| ndSrVrIrJs r!r.z get_one_week..\sMHHHeaPQRSillillHHHr# PointDiffmeansum) rrrrrrrrrrrrrgame_idTEAMSeason) pbplocvaluesnpwheregroupbyagg reset_index expandingrcolumnsr)rNrEr teamfeaturesgames` r! get_one_weekr<s 7S%y0S5Ey5PQVYZbVcekVkl mDfDJOOOO^bdFdFdF_G_NOOODIOOOO^bdFdFdF_G_NOOODIId4j(DM^^^^t]9 >DC9o//115577D#cO!$,qrr"23==??DDFFDabb DLDN 8DJ$ %%r#ct|||}t|||}d|jD|_||dd}|gdd|S)Ncg|]}|dS)z.AwayrIr+s r!r.z.get_one_week_home_and_away..s666AqKKK666r#T) left_index right_index)rz TEAM.Awayz Season.Awayz game_id.Away)rinplace)rrmergedrop)homeawayrEr gbgs r!get_one_week_home_and_awayrsu VD ) )D VD ) )D66666DL **TTd* ; ;CHHFFFPTHUUU Jr#cvt|}t|}t||||}||d<tj|ddgt j}d} tj t| d} tj } | |  | |dd} t| d| z g} | d kr|n | d kr|nd g| gd }n #d dgd }YnxYwd} tj t| d} tj }| |  ||dd}|dkrdndg|gd}n #ddgd}YnxYw||fS)NTotal Score Closerr)rzxgboost_ML_75.4%z.jsonrr(g333333?g?zToss-Up)Winner ProbabilitiesNAzN/Azxgboost_OU_59.3%g?OverUnder) Over/Under Probability)rr)team_name_to_abbreviationrxgbDMatrixrastypefloatrospathr*model_directoryBooster load_modelpredictmax)rrrEr total home_abbrev away_abbrevrmatrixmodel file_pathxgb_mlml_predicted_proba winner_proba moneylinexgb_ouou_predicted_proba over_unders r!rrs+D1K+D1K $[VD I IC$C [9X*>??FFuMMT U UF E _ooo>>I []]F i   .#^^F33A6q9.2D0DEFF (:3(>(>L^_bLbLbDDhqr&2^55 .#&+W..  E _ooo>>I []]F i   0#^^F33A6q9/A#/E/EVV7$S&8%9;; 0$)(-w00  j  s A DD#90F**F4cBtjtd}t j|dd}t |ddg}td}i}| D]K\}}|d}|d}|d } |d } |d } ||} t|| | | | ||<Lt j |} tjtd }| |dS) Nzgbg_and_odds_this_year.csvrFrrr)subsetrCrDr rEzpredictions_this_year.csv) rrr*data_directoryr:read_csvdictrdrop_duplicatesiterrowsr DataFrameto_csv)rgbg_and_odds_this_year total_dictgames predictions_r-rrrr rErpredictions_dfs r!update_past_predictionsrs ^-IJJI[aERRR,i8K-LMNNJ   y  1 1EK  DD1I,~~y87#&tDUCC G\+..N ^-HIII)$$$$$r#)$xgboostrnumpyrpandasr:picklepklrrbs4rrdirnameabspath__file__current_directoryparent_directoryr*rrpickle_directoryrrropenr_loadrteam_abbreviation_to_namer"rArrrrrIr#r!rs GOOBGOOH$=$=>>7??#455.77',,/::7<< 0)<< GLL)< = = bk)qU;;; GLL)+J K K  T)T,a ( ,,,,,,,,,,,,,,, GLL)+J K K  T)T,a ( ,,,,,,,,,,,,,,,   ( 0 0 0H&H&H&V$!$!$!N%%%%%s$D..D25D2 E==FF