James McCool commited on
Commit
8d20291
·
1 Parent(s): 3571793

Refactor data loading and filtering options in app.py, introducing new radio buttons for site, slate type, and position group selection, enhancing user interaction and data management capabilities.

Browse files
Files changed (1) hide show
  1. app.py +56 -44
app.py CHANGED
@@ -149,14 +149,25 @@ with tab1:
149
  with tab2:
150
  st.title("Player ROO")
151
  with st.expander("Info and Filters"):
152
- site_var = st.radio("Select site", ["Draftkings", "Fanduel"])
153
- if site_var == "Draftkings":
154
- display_data = sd_roo_data[sd_roo_data['site'] == 'Draftkings']
155
- display_data = display_data[display_data['slate'] == 'DK SD1']
156
- elif site_var == "Fanduel":
157
- display_data = sd_roo_data[sd_roo_data['site'] == 'Fanduel']
158
- display_data = display_data[display_data['slate'] == 'FD SD1']
 
 
 
 
 
 
 
159
 
 
 
 
 
160
  display_data = display_data.drop(columns=['site', 'slate', 'version', 'timestamp'])
161
  if view_var == "Simple":
162
  display_data = display_data[['Player', 'Position', 'Salary', 'Median', 'Ceiling', 'Own']]
@@ -170,36 +181,37 @@ with tab3:
170
  st.cache_data.clear()
171
  roo_data, sd_roo_data, scoring_percentages = init_baselines()
172
  hold_display = roo_data
173
- dk_lineups = init_DK_lineups()
174
- fd_lineups = init_FD_lineups()
175
  for key in st.session_state.keys():
176
  del st.session_state[key]
177
-
178
- slate_var1 = st.radio("Which data are you loading?", ('Regular', 'Showdown'))
179
 
180
- site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
181
- if slate_var1 == 'Regular':
182
- if site_var1 == 'Draftkings':
183
- dk_lineups = init_DK_lineups()
184
- elif site_var1 == 'Fanduel':
185
- fd_lineups = init_FD_lineups()
186
- elif slate_var1 == 'Showdown':
187
- if site_var1 == 'Draftkings':
188
- dk_lineups = init_DK_lineups()
189
- elif site_var1 == 'Fanduel':
190
- fd_lineups = init_FD_lineups()
 
 
 
191
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
192
 
193
- if slate_var1 == 'Regular':
194
  raw_baselines = roo_data
195
- elif slate_var1 == 'Showdown':
196
  raw_baselines = sd_roo_data
197
 
198
- if site_var1 == 'Draftkings':
199
- if slate_var1 == 'Regular':
200
  ROO_slice = raw_baselines[raw_baselines['Site'] == 'Draftkings']
201
  player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
202
- elif slate_var1 == 'Showdown':
203
  player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
204
  # Get the minimum and maximum ownership values from dk_lineups
205
  min_own = np.min(dk_lineups[:,8])
@@ -212,12 +224,12 @@ with tab3:
212
  elif player_var1 == 'Full Slate':
213
  player_var2 = raw_baselines.Player.values.tolist()
214
 
215
- elif site_var1 == 'Fanduel':
216
  raw_baselines = hold_display
217
- if slate_var1 == 'Regular':
218
  ROO_slice = raw_baselines[raw_baselines['Site'] == 'Fanduel']
219
  player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
220
- elif slate_var1 == 'Showdown':
221
  player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
222
  min_own = np.min(fd_lineups[:,8])
223
  max_own = np.max(fd_lineups[:,8])
@@ -231,10 +243,10 @@ with tab3:
231
 
232
  if st.button("Prepare data export", key='data_export'):
233
  data_export = st.session_state.working_seed.copy()
234
- # if site_var1 == 'Draftkings':
235
  # for col_idx in range(6):
236
  # data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
237
- # elif site_var1 == 'Fanduel':
238
  # for col_idx in range(6):
239
  # data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
240
  st.download_button(
@@ -244,7 +256,7 @@ with tab3:
244
  mime='text/csv',
245
  )
246
 
247
- if site_var1 == 'Draftkings':
248
  if 'working_seed' in st.session_state:
249
  st.session_state.working_seed = st.session_state.working_seed
250
  if player_var1 == 'Specific Players':
@@ -261,7 +273,7 @@ with tab3:
261
  st.session_state.working_seed = dk_lineups.copy()
262
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
263
 
264
- elif site_var1 == 'Fanduel':
265
  if 'working_seed' in st.session_state:
266
  st.session_state.working_seed = st.session_state.working_seed
267
  if player_var1 == 'Specific Players':
@@ -279,10 +291,10 @@ with tab3:
279
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
280
 
281
  export_file = st.session_state.data_export_display.copy()
282
- # if site_var1 == 'Draftkings':
283
  # for col_idx in range(6):
284
  # export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
285
- # elif site_var1 == 'Fanduel':
286
  # for col_idx in range(6):
287
  # export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
288
 
@@ -290,9 +302,9 @@ with tab3:
290
  if st.button("Reset Optimals", key='reset3'):
291
  for key in st.session_state.keys():
292
  del st.session_state[key]
293
- if site_var1 == 'Draftkings':
294
  st.session_state.working_seed = dk_lineups.copy()
295
- elif site_var1 == 'Fanduel':
296
  st.session_state.working_seed = fd_lineups.copy()
297
  if 'data_export_display' in st.session_state:
298
  st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
@@ -306,7 +318,7 @@ with tab3:
306
  with st.container():
307
  if 'working_seed' in st.session_state:
308
  # Create a new dataframe with summary statistics
309
- if site_var1 == 'Draftkings':
310
  summary_df = pd.DataFrame({
311
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
312
  'Salary': [
@@ -328,7 +340,7 @@ with tab3:
328
  np.std(st.session_state.working_seed[:,8])
329
  ]
330
  })
331
- elif site_var1 == 'Fanduel':
332
  summary_df = pd.DataFrame({
333
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
334
  'Salary': [
@@ -366,9 +378,9 @@ with tab3:
366
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
367
  with tab1:
368
  if 'data_export_display' in st.session_state:
369
- if site_var1 == 'Draftkings':
370
  player_columns = st.session_state.data_export_display.iloc[:, :6]
371
- elif site_var1 == 'Fanduel':
372
  player_columns = st.session_state.data_export_display.iloc[:, :6]
373
 
374
  # Flatten the DataFrame and count unique values
@@ -402,9 +414,9 @@ with tab3:
402
  )
403
  with tab2:
404
  if 'working_seed' in st.session_state:
405
- if site_var1 == 'Draftkings':
406
  player_columns = st.session_state.working_seed[:, :6]
407
- elif site_var1 == 'Fanduel':
408
  player_columns = st.session_state.working_seed[:, :6]
409
 
410
  # Flatten the DataFrame and count unique values
 
149
  with tab2:
150
  st.title("Player ROO")
151
  with st.expander("Info and Filters"):
152
+ col1, col2, col3, col4, col5 = st.columns([3, 3, 3, 3, 3])
153
+ with col1:
154
+ if st.button("Load/Reset Data", key='reset1'):
155
+ st.cache_data.clear()
156
+ roo_data, sd_roo_data, scoring_percentages = init_baselines()
157
+ hold_display = roo_data
158
+ with col2:
159
+ site_var2 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='site_var2')
160
+ with col3:
161
+ slate_type_var2 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var2')
162
+ with col4:
163
+ slate_var2 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var2')
164
+ with col5:
165
+ pos_var2 = st.radio("Which position group would you like to view?", ('All', 'Pitchers', 'Hitters'), key='pos_var2')
166
 
167
+ if slate_type_var2 == 'Regular':
168
+ display_data = roo_data
169
+ elif slate_type_var2 == 'Showdown':
170
+ display_data = sd_roo_data
171
  display_data = display_data.drop(columns=['site', 'slate', 'version', 'timestamp'])
172
  if view_var == "Simple":
173
  display_data = display_data[['Player', 'Position', 'Salary', 'Median', 'Ceiling', 'Own']]
 
181
  st.cache_data.clear()
182
  roo_data, sd_roo_data, scoring_percentages = init_baselines()
183
  hold_display = roo_data
184
+ dk_lineups = init_DK_lineups('Main')
185
+ fd_lineups = init_FD_lineups('Main')
186
  for key in st.session_state.keys():
187
  del st.session_state[key]
 
 
188
 
189
+ site_var3 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='site_var3')
190
+ slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3')
191
+ slate_var3 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var3')
192
+
193
+ if slate_type_var3 == 'Regular':
194
+ if site_var3 == 'Draftkings':
195
+ dk_lineups = init_DK_lineups(slate_var3)
196
+ elif site_var3 == 'Fanduel':
197
+ fd_lineups = init_FD_lineups(slate_var3)
198
+ elif slate_type_var3 == 'Showdown':
199
+ if site_var3 == 'Draftkings':
200
+ dk_lineups = init_DK_lineups(slate_var3)
201
+ elif site_var3 == 'Fanduel':
202
+ fd_lineups = init_FD_lineups(slate_var3)
203
  lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
204
 
205
+ if slate_type_var3 == 'Regular':
206
  raw_baselines = roo_data
207
+ elif slate_type_var3 == 'Showdown':
208
  raw_baselines = sd_roo_data
209
 
210
+ if site_var3 == 'Draftkings':
211
+ if slate_type_var3 == 'Regular':
212
  ROO_slice = raw_baselines[raw_baselines['Site'] == 'Draftkings']
213
  player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
214
+ elif slate_type_var3 == 'Showdown':
215
  player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
216
  # Get the minimum and maximum ownership values from dk_lineups
217
  min_own = np.min(dk_lineups[:,8])
 
224
  elif player_var1 == 'Full Slate':
225
  player_var2 = raw_baselines.Player.values.tolist()
226
 
227
+ elif site_var3 == 'Fanduel':
228
  raw_baselines = hold_display
229
+ if slate_type_var3 == 'Regular':
230
  ROO_slice = raw_baselines[raw_baselines['Site'] == 'Fanduel']
231
  player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
232
+ elif slate_type_var3 == 'Showdown':
233
  player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
234
  min_own = np.min(fd_lineups[:,8])
235
  max_own = np.max(fd_lineups[:,8])
 
243
 
244
  if st.button("Prepare data export", key='data_export'):
245
  data_export = st.session_state.working_seed.copy()
246
+ # if site_var3 == 'Draftkings':
247
  # for col_idx in range(6):
248
  # data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
249
+ # elif site_var3 == 'Fanduel':
250
  # for col_idx in range(6):
251
  # data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
252
  st.download_button(
 
256
  mime='text/csv',
257
  )
258
 
259
+ if site_var3 == 'Draftkings':
260
  if 'working_seed' in st.session_state:
261
  st.session_state.working_seed = st.session_state.working_seed
262
  if player_var1 == 'Specific Players':
 
273
  st.session_state.working_seed = dk_lineups.copy()
274
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
275
 
276
+ elif site_var3 == 'Fanduel':
277
  if 'working_seed' in st.session_state:
278
  st.session_state.working_seed = st.session_state.working_seed
279
  if player_var1 == 'Specific Players':
 
291
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
292
 
293
  export_file = st.session_state.data_export_display.copy()
294
+ # if site_var3 == 'Draftkings':
295
  # for col_idx in range(6):
296
  # export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
297
+ # elif site_var3 == 'Fanduel':
298
  # for col_idx in range(6):
299
  # export_file.iloc[:, col_idx] = export_file.iloc[:, col_idx].map(id_dict)
300
 
 
302
  if st.button("Reset Optimals", key='reset3'):
303
  for key in st.session_state.keys():
304
  del st.session_state[key]
305
+ if site_var3 == 'Draftkings':
306
  st.session_state.working_seed = dk_lineups.copy()
307
+ elif site_var3 == 'Fanduel':
308
  st.session_state.working_seed = fd_lineups.copy()
309
  if 'data_export_display' in st.session_state:
310
  st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
 
318
  with st.container():
319
  if 'working_seed' in st.session_state:
320
  # Create a new dataframe with summary statistics
321
+ if site_var3 == 'Draftkings':
322
  summary_df = pd.DataFrame({
323
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
324
  'Salary': [
 
340
  np.std(st.session_state.working_seed[:,8])
341
  ]
342
  })
343
+ elif site_var3 == 'Fanduel':
344
  summary_df = pd.DataFrame({
345
  'Metric': ['Min', 'Average', 'Max', 'STDdev'],
346
  'Salary': [
 
378
  tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
379
  with tab1:
380
  if 'data_export_display' in st.session_state:
381
+ if site_var3 == 'Draftkings':
382
  player_columns = st.session_state.data_export_display.iloc[:, :6]
383
+ elif site_var3 == 'Fanduel':
384
  player_columns = st.session_state.data_export_display.iloc[:, :6]
385
 
386
  # Flatten the DataFrame and count unique values
 
414
  )
415
  with tab2:
416
  if 'working_seed' in st.session_state:
417
+ if site_var3 == 'Draftkings':
418
  player_columns = st.session_state.working_seed[:, :6]
419
+ elif site_var3 == 'Fanduel':
420
  player_columns = st.session_state.working_seed[:, :6]
421
 
422
  # Flatten the DataFrame and count unique values