Spaces:
Running
Running
James McCool
commited on
Commit
·
34ce6c5
1
Parent(s):
1e90b7c
adding sidebar builder for NBA
Browse files
app.py
CHANGED
@@ -165,6 +165,99 @@ t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
|
165 |
|
166 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
|
167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
with tab1:
|
169 |
|
170 |
col1, col2 = st.columns([1, 9])
|
|
|
165 |
|
166 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
|
167 |
|
168 |
+
with st.sidebar:
|
169 |
+
st.header("Quick Builder")
|
170 |
+
|
171 |
+
sidebar_site = st.selectbox("What site are you running?", ('Draftkings', 'Fanduel'), key='sidebar_site')
|
172 |
+
sidebar_slate = st.selectbox("What slate are you running?", ('Main Slate', 'Secondary Slate'), key='sidebar_slate')
|
173 |
+
|
174 |
+
if sidebar_site == 'Draftkings':
|
175 |
+
roo_sample = dk_raw[dk_raw['slate'] == str(sidebar_slate)]
|
176 |
+
roo_sample = roo_sample.sort_values(by='Own', ascending=False)
|
177 |
+
selected_pg = []
|
178 |
+
selected_sg = []
|
179 |
+
selected_sf = []
|
180 |
+
selected_pf = []
|
181 |
+
selected_c = []
|
182 |
+
selected_g = []
|
183 |
+
selected_f = []
|
184 |
+
selected_flex = []
|
185 |
+
elif sidebar_site == 'Fanduel':
|
186 |
+
roo_sample = fd_raw[fd_raw['slate'] == str(sidebar_slate)]
|
187 |
+
roo_sample = roo_sample.sort_values(by='Own', ascending=False)
|
188 |
+
selected_pg1 = []
|
189 |
+
selected_pg2 = []
|
190 |
+
selected_sg1 = []
|
191 |
+
selected_sg2 = []
|
192 |
+
selected_sf1 = []
|
193 |
+
selected_sf2 = []
|
194 |
+
selected_pf1 = []
|
195 |
+
selected_pf2 = []
|
196 |
+
selected_c1 = []
|
197 |
+
|
198 |
+
# Get unique players by position from dk_roo_raw
|
199 |
+
pgs = roo_sample[roo_sample['Position'].str.contains('PG')]['Player'].unique()
|
200 |
+
sgs = roo_sample[roo_sample['Position'].str.contains('SG')]['Player'].unique()
|
201 |
+
sfs = roo_sample[roo_sample['Position'].str.contains('SF')]['Player'].unique()
|
202 |
+
pfs = roo_sample[roo_sample['Position'].str.contains('PF')]['Player'].unique()
|
203 |
+
centers = roo_sample[roo_sample['Position'].str.contains('C')]['Player'].unique()
|
204 |
+
guards = roo_sample[roo_sample['Position'].str.contains('G')]['Player'].unique()
|
205 |
+
forwards = roo_sample[roo_sample['Position'].str.contains('F')]['Player'].unique()
|
206 |
+
flex = roo_sample['Player'].unique()
|
207 |
+
|
208 |
+
if sidebar_site == 'Draftkings':
|
209 |
+
selected_pgs = st.multiselect('Select PG:', list(pgs), default=None, max_selections=1, key='pg1')
|
210 |
+
selected_sgs = st.multiselect('Select SG:', list(sgs), default=None, max_selections=1, key='sg1')
|
211 |
+
selected_sfs = st.multiselect('Select SF:', list(sfs), default=None, max_selections=1, key='sf1')
|
212 |
+
selected_pfs = st.multiselect('Select PF:', list(pfs), default=None, max_selections=1, key='pf1')
|
213 |
+
selected_cs = st.multiselect('Select C:', list(centers), default=None, max_selections=1, key='c1')
|
214 |
+
selected_g = st.multiselect('Select G:', list(guards), default=None, max_selections=1, key='g')
|
215 |
+
selected_f = st.multiselect('Select F:', list(forwards), default=None, max_selections=1, key='f')
|
216 |
+
selected_flex = st.multiselect('Select Flex:', list(flex), default=None, key='flex')
|
217 |
+
|
218 |
+
# Combine all selected players
|
219 |
+
all_selected = selected_pgs + selected_sgs + selected_sfs + selected_pfs + selected_cs + selected_g + selected_f + selected_flex
|
220 |
+
|
221 |
+
elif sidebar_site == 'Fanduel':
|
222 |
+
selected_pg1 = st.multiselect('Select PG1:', list(pgs), default=None, max_selections=1, key='pg1')
|
223 |
+
selected_pg2 = st.multiselect('Select PG2:', list(pgs), default=None, max_selections=1, key='pg2')
|
224 |
+
selected_sg1 = st.multiselect('Select SG1:', list(sgs), default=None, max_selections=1, key='sg1')
|
225 |
+
selected_sg2 = st.multiselect('Select SG2:', list(sgs), default=None, max_selections=1, key='sg2')
|
226 |
+
selected_sf1 = st.multiselect('Select SF1:', list(sfs), default=None, max_selections=1, key='sf1')
|
227 |
+
selected_sf2 = st.multiselect('Select SF2:', list(sfs), default=None, max_selections=1, key='sf2')
|
228 |
+
selected_pf1 = st.multiselect('Select PF1:', list(pfs), default=None, max_selections=1, key='pf1')
|
229 |
+
selected_pf2 = st.multiselect('Select PF2:', list(pfs), default=None, max_selections=1, key='pf2')
|
230 |
+
selected_c1 = st.multiselect('Select C1:', list(centers), default=None, max_selections=1, key='c1')
|
231 |
+
|
232 |
+
# Combine all selected players
|
233 |
+
all_selected = selected_pg1 + selected_pg2 + selected_sg1 + selected_sg2 + selected_sf1 + selected_sf2 + selected_pf1 + selected_pf2 + selected_c1
|
234 |
+
|
235 |
+
if all_selected:
|
236 |
+
# Get stats for selected players
|
237 |
+
selected_stats = roo_sample[roo_sample['Player'].isin(all_selected)]
|
238 |
+
|
239 |
+
# Calculate sums
|
240 |
+
salary_sum = selected_stats['Salary'].sum() / 2
|
241 |
+
median_sum = selected_stats['Median'].sum() / 2
|
242 |
+
own_sum = selected_stats['Own'].sum() / 2
|
243 |
+
levx_sum = selected_stats['LevX'].sum() / 2
|
244 |
+
|
245 |
+
# Display sums
|
246 |
+
st.write('---')
|
247 |
+
if sidebar_site == 'Draftkings':
|
248 |
+
if salary_sum > 50000:
|
249 |
+
st.warning(f'Total Salary: ${salary_sum:.2f} exceeds limit of $50,000')
|
250 |
+
else:
|
251 |
+
st.write(f'Total Salary: ${salary_sum:.2f}')
|
252 |
+
elif sidebar_site == 'Fanduel':
|
253 |
+
if salary_sum > 60000:
|
254 |
+
st.warning(f'Total Salary: ${salary_sum:.2f} exceeds limit of $60,000')
|
255 |
+
else:
|
256 |
+
st.write(f'Total Salary: ${salary_sum:.2f}')
|
257 |
+
st.write(f'Total Median: {median_sum:.2f}')
|
258 |
+
st.write(f'Total Ownership: {own_sum:.2f}%')
|
259 |
+
st.write(f'Total LevX: {levx_sum:.2f}')
|
260 |
+
|
261 |
with tab1:
|
262 |
|
263 |
col1, col2 = st.columns([1, 9])
|