James McCool commited on
Commit
34ce6c5
·
1 Parent(s): 1e90b7c

adding sidebar builder for NBA

Browse files
Files changed (1) hide show
  1. app.py +93 -0
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])