Multichem commited on
Commit
4036c64
·
1 Parent(s): 6ef6fac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -51
app.py CHANGED
@@ -1,72 +1,64 @@
1
- import pulp
 
 
 
 
 
 
2
  import numpy as np
3
  import pandas as pd
4
- import random
5
- import sys
6
- import openpyxl
7
- import re
8
- import time
9
  import streamlit as st
10
- import matplotlib
11
- from matplotlib.colors import LinearSegmentedColormap
12
- from st_aggrid import GridOptionsBuilder, AgGrid, GridUpdateMode, DataReturnMode
13
- import json
14
- import requests
15
  import gspread
16
- import plotly.figure_factory as ff
17
-
18
- scope = ['https://www.googleapis.com/auth/spreadsheets',
19
- "https://www.googleapis.com/auth/drive"]
20
-
21
- credentials = {
22
- "type": "service_account",
23
- "project_id": "sheets-api-connect-378620",
24
- "private_key_id": "1005124050c80d085e2c5b344345715978dd9cc9",
25
- "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtKa01beXwc88R\nnPZVQTNPVQuBnbwoOfc66gW3547ja/UEyIGAF112dt/VqHprRafkKGmlg55jqJNt\na4zceLKV+wTm7vBu7lDISTJfGzCf2TrxQYNqwMKE2LOjI69dBM8u4Dcb4k0wcp9v\ntW1ZzLVVuwTvmrg7JBHjiSaB+x5wxm/r3FOiJDXdlAgFlytzqgcyeZMJVKKBQHyJ\njEGg/1720A0numuOCt71w/2G0bDmijuj1e6tH32MwRWcvRNZ19K9ssyDz2S9p68s\nYDhIxX69OWxwScTIHLY6J2t8txf/XMivL/636fPlDADvBEVTdlT606n8CcKUVQeq\npUVdG+lfAgMBAAECggEAP38SUA7B69eTfRpo658ycOs3Amr0JW4H/bb1rNeAul0K\nZhwd/HnU4E07y81xQmey5kN5ZeNrD5EvqkZvSyMJHV0EEahZStwhjCfnDB/cxyix\nZ+kFhv4y9eK+kFpUAhBy5nX6T0O+2T6WvzAwbmbVsZ+X8kJyPuF9m8ldcPlD0sce\ntj8NwVq1ys52eosqs7zi2vjt+eMcaY393l4ls+vNq8Yf27cfyFw45W45CH/97/Nu\n5AmuzlCOAfFF+z4OC5g4rei4E/Qgpxa7/uom+BVfv9G0DIGW/tU6Sne0+37uoGKt\nW6DzhgtebUtoYkG7ZJ05BTXGp2lwgVcNRoPwnKJDxQKBgQDT5wYPUBDW+FHbvZSp\nd1m1UQuXyerqOTA9smFaM8sr/UraeH85DJPEIEk8qsntMBVMhvD3Pw8uIUeFNMYj\naLmZFObsL+WctepXrVo5NB6RtLB/jZYxiKMatMLUJIYtcKIp+2z/YtKiWcLnwotB\nWdCjVnPTxpkurmF2fWP/eewZ+wKBgQDRMtJg7etjvKyjYNQ5fARnCc+XsI3gkBe1\nX9oeXfhyfZFeBXWnZzN1ITgFHplDznmBdxAyYGiQdbbkdKQSghviUQ0igBvoDMYy\n1rWcy+a17Mj98uyNEfmb3X2cC6WpvOZaGHwg9+GY67BThwI3FqHIbyk6Ko09WlTX\nQpRQjMzU7QKBgAfi1iflu+q0LR+3a3vvFCiaToskmZiD7latd9AKk2ocsBd3Woy9\n+hXXecJHPOKV4oUJlJgvAZqe5HGBqEoTEK0wyPNLSQlO/9ypd+0fEnArwFHO7CMF\nycQprAKHJXM1eOOFFuZeQCaInqdPZy1UcV5Szla4UmUZWkk1m24blHzXAoGBAMcA\nyH4qdbxX9AYrC1dvsSRvgcnzytMvX05LU0uF6tzGtG0zVlub4ahvpEHCfNuy44UT\nxRWW/oFFaWjjyFxO5sWggpUqNuHEnRopg3QXx22SRRTGbN45li/+QAocTkgsiRh1\nqEcYZsO4mPCsQqAy6E2p6RcK+Xa+omxvSnVhq0x1AoGAKr8GdkCl4CF6rieLMAQ7\nLNBuuoYGaHoh8l5E2uOQpzwxVy/nMBcAv+2+KqHEzHryUv1owOi6pMLv7A9mTFoS\n18B0QRLuz5fSOsVnmldfC9fpUc6H8cH1SINZpzajqQA74bPwELJjnzrCnH79TnHG\nJuElxA33rFEjbgbzdyrE768=\n-----END PRIVATE KEY-----\n",
26
- "client_email": "gspread-connection@sheets-api-connect-378620.iam.gserviceaccount.com",
27
- "client_id": "106625872877651920064",
28
- "auth_uri": "https://accounts.google.com/o/oauth2/auth",
29
- "token_uri": "https://oauth2.googleapis.com/token",
30
- "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
31
- "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gspread-connection%40sheets-api-connect-378620.iam.gserviceaccount.com"
32
- }
33
-
34
- gc = gspread.service_account_from_dict(credentials)
35
 
36
- st.set_page_config(layout="wide")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  dk_player_url = 'https://docs.google.com/spreadsheets/d/1Yq0vGriWK-bS79e-bD6_u9pqrYE6Yrlbb_wEkmH-ot0/edit#gid=172632260'
39
- fd_player_url = 'https://docs.google.com/spreadsheets/d/1Yq0vGriWK-bS79e-bD6_u9pqrYE6Yrlbb_wEkmH-ot0/edit#gid=172632260'
40
 
41
  @st.cache_data
42
- def load_overall_stats(URL):
43
- sh = gc.open_by_url(URL)
44
- worksheet = sh.get_worksheet(8)
45
  raw_display = pd.DataFrame(worksheet.get_all_records())
46
  raw_display.rename(columns={"Name": "Player", "Nickname": "Player", "Fantasy": "Median"}, inplace = True)
47
  raw_display.replace("", 'Welp', inplace=True)
48
  raw_display = raw_display.loc[raw_display['Player'] != 'Welp']
49
  raw_display = raw_display.loc[raw_display['Median'] > 0]
50
  raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
51
- raw_display = raw_display.sort_values(by='Median', ascending=False)
52
-
53
- return raw_display
54
-
55
- @st.cache_data
56
- def load_fd_overall_stats(URL):
57
- sh = gc.open_by_url(URL)
58
- worksheet = sh.get_worksheet(9)
59
  raw_display = pd.DataFrame(worksheet.get_all_records())
60
  raw_display.rename(columns={"Name": "Player", "Nickname": "Player", "Fantasy": "Median"}, inplace = True)
61
  raw_display.replace("", 'Welp', inplace=True)
62
  raw_display = raw_display.loc[raw_display['Player'] != 'Welp']
63
  raw_display = raw_display.loc[raw_display['Median'] > 0]
64
  raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
65
- raw_display = raw_display.sort_values(by='Median', ascending=False)
66
 
67
- return raw_display
68
 
69
- raw_baselines = load_overall_stats(dk_player_url)
70
 
71
  tab1, tab2 = st.tabs(["Range of Outcomes Model", "Optimizer (Coming soon)"])
72
 
@@ -80,12 +72,12 @@ with tab1:
80
  with col1:
81
  if st.button("Load/Reset Data", key='reset1'):
82
  st.cache_data.clear()
83
- raw_baselines = load_overall_stats(dk_player_url)
84
  site_var1 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var1')
85
  if site_var1 == 'Draftkings':
86
- raw_baselines = load_overall_stats(dk_player_url)
87
  elif site_var1 == 'Fanduel':
88
- raw_baselines = load_fd_overall_stats(fd_player_url)
89
  split_var1 = st.radio("Are you running the full slate or crtain games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
90
  if split_var1 == 'Specific Games':
91
  team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1')
@@ -98,9 +90,9 @@ with tab1:
98
  if st.button('Create Range of Outcomes for Slate'):
99
  with hold_container:
100
  if site_var1 == 'Draftkings':
101
- raw_baselines = load_overall_stats(dk_player_url)
102
  elif site_var1 == 'Fanduel':
103
- raw_baselines = load_fd_overall_stats(fd_player_url)
104
 
105
  working_roo = raw_baselines
106
  working_roo = working_roo[working_roo['Team'].isin(team_var1)]
@@ -178,6 +170,7 @@ with tab1:
178
  final_Proj = final_Proj[['Player', 'Minutes Proj', 'Position', 'Team', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '3x%', '4x%', '5x%', 'GPP%', 'Own', 'LevX', 'ValX']]
179
  final_Proj = final_Proj.set_index('Player')
180
  final_Proj = final_Proj.sort_values(by='Median', ascending=False)
 
181
  with hold_container:
182
  hold_container = st.empty()
183
 
 
1
+ import streamlit as st
2
+ st.set_page_config(layout="wide")
3
+
4
+ for name in dir():
5
+ if not name.startswith('_'):
6
+ del globals()[name]
7
+
8
  import numpy as np
9
  import pandas as pd
 
 
 
 
 
10
  import streamlit as st
 
 
 
 
 
11
  import gspread
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ @st.cache_resource
14
+ def init_conn():
15
+ scope = ['https://www.googleapis.com/auth/spreadsheets',
16
+ "https://www.googleapis.com/auth/drive"]
17
+
18
+ credentials = {
19
+ "type": "service_account",
20
+ "project_id": "sheets-api-connect-378620",
21
+ "private_key_id": "1005124050c80d085e2c5b344345715978dd9cc9",
22
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtKa01beXwc88R\nnPZVQTNPVQuBnbwoOfc66gW3547ja/UEyIGAF112dt/VqHprRafkKGmlg55jqJNt\na4zceLKV+wTm7vBu7lDISTJfGzCf2TrxQYNqwMKE2LOjI69dBM8u4Dcb4k0wcp9v\ntW1ZzLVVuwTvmrg7JBHjiSaB+x5wxm/r3FOiJDXdlAgFlytzqgcyeZMJVKKBQHyJ\njEGg/1720A0numuOCt71w/2G0bDmijuj1e6tH32MwRWcvRNZ19K9ssyDz2S9p68s\nYDhIxX69OWxwScTIHLY6J2t8txf/XMivL/636fPlDADvBEVTdlT606n8CcKUVQeq\npUVdG+lfAgMBAAECggEAP38SUA7B69eTfRpo658ycOs3Amr0JW4H/bb1rNeAul0K\nZhwd/HnU4E07y81xQmey5kN5ZeNrD5EvqkZvSyMJHV0EEahZStwhjCfnDB/cxyix\nZ+kFhv4y9eK+kFpUAhBy5nX6T0O+2T6WvzAwbmbVsZ+X8kJyPuF9m8ldcPlD0sce\ntj8NwVq1ys52eosqs7zi2vjt+eMcaY393l4ls+vNq8Yf27cfyFw45W45CH/97/Nu\n5AmuzlCOAfFF+z4OC5g4rei4E/Qgpxa7/uom+BVfv9G0DIGW/tU6Sne0+37uoGKt\nW6DzhgtebUtoYkG7ZJ05BTXGp2lwgVcNRoPwnKJDxQKBgQDT5wYPUBDW+FHbvZSp\nd1m1UQuXyerqOTA9smFaM8sr/UraeH85DJPEIEk8qsntMBVMhvD3Pw8uIUeFNMYj\naLmZFObsL+WctepXrVo5NB6RtLB/jZYxiKMatMLUJIYtcKIp+2z/YtKiWcLnwotB\nWdCjVnPTxpkurmF2fWP/eewZ+wKBgQDRMtJg7etjvKyjYNQ5fARnCc+XsI3gkBe1\nX9oeXfhyfZFeBXWnZzN1ITgFHplDznmBdxAyYGiQdbbkdKQSghviUQ0igBvoDMYy\n1rWcy+a17Mj98uyNEfmb3X2cC6WpvOZaGHwg9+GY67BThwI3FqHIbyk6Ko09WlTX\nQpRQjMzU7QKBgAfi1iflu+q0LR+3a3vvFCiaToskmZiD7latd9AKk2ocsBd3Woy9\n+hXXecJHPOKV4oUJlJgvAZqe5HGBqEoTEK0wyPNLSQlO/9ypd+0fEnArwFHO7CMF\nycQprAKHJXM1eOOFFuZeQCaInqdPZy1UcV5Szla4UmUZWkk1m24blHzXAoGBAMcA\nyH4qdbxX9AYrC1dvsSRvgcnzytMvX05LU0uF6tzGtG0zVlub4ahvpEHCfNuy44UT\nxRWW/oFFaWjjyFxO5sWggpUqNuHEnRopg3QXx22SRRTGbN45li/+QAocTkgsiRh1\nqEcYZsO4mPCsQqAy6E2p6RcK+Xa+omxvSnVhq0x1AoGAKr8GdkCl4CF6rieLMAQ7\nLNBuuoYGaHoh8l5E2uOQpzwxVy/nMBcAv+2+KqHEzHryUv1owOi6pMLv7A9mTFoS\n18B0QRLuz5fSOsVnmldfC9fpUc6H8cH1SINZpzajqQA74bPwELJjnzrCnH79TnHG\nJuElxA33rFEjbgbzdyrE768=\n-----END PRIVATE KEY-----\n",
23
+ "client_email": "gspread-connection@sheets-api-connect-378620.iam.gserviceaccount.com",
24
+ "client_id": "106625872877651920064",
25
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
26
+ "token_uri": "https://oauth2.googleapis.com/token",
27
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
28
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gspread-connection%40sheets-api-connect-378620.iam.gserviceaccount.com"
29
+ }
30
+
31
+ gc = gspread.service_account_from_dict(credentials)
32
+ return gc
33
+
34
+ gspreadcon = init_conn()
35
 
36
  dk_player_url = 'https://docs.google.com/spreadsheets/d/1Yq0vGriWK-bS79e-bD6_u9pqrYE6Yrlbb_wEkmH-ot0/edit#gid=172632260'
 
37
 
38
  @st.cache_data
39
+ def load_overall_stats():
40
+ sh = gspreadcon.open_by_url(dk_player_url)
41
+ worksheet = sh.worksheet('DK_Build_Up')
42
  raw_display = pd.DataFrame(worksheet.get_all_records())
43
  raw_display.rename(columns={"Name": "Player", "Nickname": "Player", "Fantasy": "Median"}, inplace = True)
44
  raw_display.replace("", 'Welp', inplace=True)
45
  raw_display = raw_display.loc[raw_display['Player'] != 'Welp']
46
  raw_display = raw_display.loc[raw_display['Median'] > 0]
47
  raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
48
+ dk_raw = raw_display.sort_values(by='Median', ascending=False)
49
+
50
+ worksheet = sh.worksheet('FD_Build_Up')
 
 
 
 
 
51
  raw_display = pd.DataFrame(worksheet.get_all_records())
52
  raw_display.rename(columns={"Name": "Player", "Nickname": "Player", "Fantasy": "Median"}, inplace = True)
53
  raw_display.replace("", 'Welp', inplace=True)
54
  raw_display = raw_display.loc[raw_display['Player'] != 'Welp']
55
  raw_display = raw_display.loc[raw_display['Median'] > 0]
56
  raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
57
+ fd_raw = raw_display.sort_values(by='Median', ascending=False)
58
 
59
+ return dk_raw, fd_raw
60
 
61
+ dk_raw, fd_raw = load_overall_stats()
62
 
63
  tab1, tab2 = st.tabs(["Range of Outcomes Model", "Optimizer (Coming soon)"])
64
 
 
72
  with col1:
73
  if st.button("Load/Reset Data", key='reset1'):
74
  st.cache_data.clear()
75
+ dk_raw, fd_raw = load_overall_stats()
76
  site_var1 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var1')
77
  if site_var1 == 'Draftkings':
78
+ raw_baselines = dk_raw
79
  elif site_var1 == 'Fanduel':
80
+ raw_baselines = fd_raw
81
  split_var1 = st.radio("Are you running the full slate or crtain games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
82
  if split_var1 == 'Specific Games':
83
  team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1')
 
90
  if st.button('Create Range of Outcomes for Slate'):
91
  with hold_container:
92
  if site_var1 == 'Draftkings':
93
+ raw_baselines = dk_raw
94
  elif site_var1 == 'Fanduel':
95
+ raw_baselines = fd_raw
96
 
97
  working_roo = raw_baselines
98
  working_roo = working_roo[working_roo['Team'].isin(team_var1)]
 
170
  final_Proj = final_Proj[['Player', 'Minutes Proj', 'Position', 'Team', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '3x%', '4x%', '5x%', 'GPP%', 'Own', 'LevX', 'ValX']]
171
  final_Proj = final_Proj.set_index('Player')
172
  final_Proj = final_Proj.sort_values(by='Median', ascending=False)
173
+
174
  with hold_container:
175
  hold_container = st.empty()
176