James McCool commited on
Commit
a4564c8
·
1 Parent(s): 82e74ae

Enhance scoring percentage and player display logic by dropping unnecessary columns for Draftkings and Fanduel. Update dataframes to set player names as indices for improved readability. Refactor UI components for slate type selection and salary input, ensuring streamlined data handling for lineup generation and export functionality.

Browse files
Files changed (1) hide show
  1. app.py +46 -36
app.py CHANGED
@@ -316,14 +316,18 @@ with tab1:
316
  scoring_percentages = scoring_percentages.sort_values(by='8+ runs', ascending=False)
317
  if site_var == 'Draftkings':
318
  scoring_percentages = scoring_percentages.rename(columns={'DK LevX': 'LevX', 'DK Own%': 'Own%', 'Avg Score': 'Runs', 'Win Percentage': 'Win%', '8+ runs': '8+ Runs'})
 
319
  elif site_var == 'Fanduel':
320
  scoring_percentages = scoring_percentages.rename(columns={'FD LevX': 'LevX', 'FD Own%': 'Own%', 'Avg Score': 'Runs', 'Win Percentage': 'Win%', '8+ runs': '8+ Runs'})
 
321
 
322
  if view_var == "Simple":
323
  scoring_percentages = scoring_percentages[['Names', 'Runs', '8+ Runs', 'Win%', 'LevX', 'Own%']]
324
- st.dataframe(scoring_percentages.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(game_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
325
  elif view_var == "Advanced":
326
- st.dataframe(scoring_percentages.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(game_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
327
 
328
  with tab2:
329
  st.header("Player ROO")
@@ -397,38 +401,56 @@ with tab2:
397
  if view_var == "Simple":
398
  try:
399
  player_roo_disp = player_roo_disp[['Player', 'Position', 'Team', 'Salary', 'Median', 'Ceiling', 'Own%']]
400
- st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
401
  except:
402
- st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
 
403
  elif view_var == "Advanced":
404
  try:
405
- st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
406
  except:
407
- st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, hide_index=True)
 
408
 
409
  with tab3:
410
  st.header("Optimals")
411
  with st.expander("Info and Filters"):
412
- with st.container():
 
413
  slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3')
 
 
 
 
414
  slate_var3 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var3')
415
-
416
- if slate_type_var3 == 'Regular':
417
- if site_var == 'Draftkings':
418
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
419
- elif site_var == 'Fanduel':
420
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
421
- elif slate_type_var3 == 'Showdown':
 
 
 
 
 
 
 
 
 
 
 
422
  if site_var == 'Draftkings':
423
- dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
 
424
  elif site_var == 'Fanduel':
425
- fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
426
- lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
427
 
428
- if slate_type_var3 == 'Regular':
429
- raw_baselines = roo_data
430
- elif slate_type_var3 == 'Showdown':
431
- raw_baselines = sd_roo_data
432
 
433
  if site_var == 'Draftkings':
434
  if slate_type_var3 == 'Regular':
@@ -442,12 +464,6 @@ with tab3:
442
  min_own = np.min(dk_lineups[:,12])
443
  max_own = np.max(dk_lineups[:,12])
444
 
445
-
446
- player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
447
- if player_var1 == 'Specific Players':
448
- player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique())
449
- elif player_var1 == 'Full Slate':
450
- player_var2 = raw_baselines.Player.values.tolist()
451
 
452
  elif site_var == 'Fanduel':
453
  raw_baselines = hold_display
@@ -461,15 +477,8 @@ with tab3:
461
  # Get the minimum and maximum ownership values from dk_lineups
462
  min_own = np.min(fd_lineups[:,11])
463
  max_own = np.max(fd_lineups[:,11])
464
-
465
-
466
- player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
467
- if player_var1 == 'Specific Players':
468
- player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique())
469
- elif player_var1 == 'Full Slate':
470
- player_var2 = raw_baselines.Player.values.tolist()
471
 
472
- if st.button("Prepare data export", key='data_export'):
473
  name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
474
  data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
475
  if site_var == 'Draftkings':
@@ -532,7 +541,8 @@ with tab3:
532
  elif player_var1 == 'Full Slate':
533
  st.session_state.working_seed = fd_lineups.copy()
534
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
535
-
 
536
  export_file = st.session_state.data_export_display.copy()
537
  name_export = st.session_state.data_export_display.copy()
538
  if site_var == 'Draftkings':
 
316
  scoring_percentages = scoring_percentages.sort_values(by='8+ runs', ascending=False)
317
  if site_var == 'Draftkings':
318
  scoring_percentages = scoring_percentages.rename(columns={'DK LevX': 'LevX', 'DK Own%': 'Own%', 'Avg Score': 'Runs', 'Win Percentage': 'Win%', '8+ runs': '8+ Runs'})
319
+ scoring_percentages = scoring_percentages.drop(['FD Own%'], axis=1)
320
  elif site_var == 'Fanduel':
321
  scoring_percentages = scoring_percentages.rename(columns={'FD LevX': 'LevX', 'FD Own%': 'Own%', 'Avg Score': 'Runs', 'Win Percentage': 'Win%', '8+ runs': '8+ Runs'})
322
+ scoring_percentages = scoring_percentages.drop(['DK Own%'], axis=1)
323
 
324
  if view_var == "Simple":
325
  scoring_percentages = scoring_percentages[['Names', 'Runs', '8+ Runs', 'Win%', 'LevX', 'Own%']]
326
+ scoring_percentages = scoring_percentages.set_index('Names', drop=True)
327
+ st.dataframe(scoring_percentages.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(game_format, precision=2), height=750, use_container_width = True)
328
  elif view_var == "Advanced":
329
+ scoring_percentages = scoring_percentages.set_index('Names', drop=True)
330
+ st.dataframe(scoring_percentages.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(game_format, precision=2), height=750, use_container_width = True)
331
 
332
  with tab2:
333
  st.header("Player ROO")
 
401
  if view_var == "Simple":
402
  try:
403
  player_roo_disp = player_roo_disp[['Player', 'Position', 'Team', 'Salary', 'Median', 'Ceiling', 'Own%']]
404
+ player_roo_disp = player_roo_disp.set_index('Player', drop=True)
405
+ st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True)
406
  except:
407
+ player_roo_disp = player_roo_disp.set_index('Player', drop=True)
408
+ st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True)
409
+
410
  elif view_var == "Advanced":
411
  try:
412
+ player_roo_disp = player_roo_disp.set_index('Player', drop=True)
413
+ st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True)
414
  except:
415
+ player_roo_disp = player_roo_disp.set_index('Player', drop=True)
416
+ st.dataframe(player_roo_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True)
417
 
418
  with tab3:
419
  st.header("Optimals")
420
  with st.expander("Info and Filters"):
421
+ col1, col2, col3 = st.columns(3)
422
+ with col1:
423
  slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3')
424
+ if slate_type_var3 == 'Regular':
425
+ raw_baselines = roo_data
426
+ elif slate_type_var3 == 'Showdown':
427
+ raw_baselines = sd_roo_data
428
  slate_var3 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var3')
429
+ if slate_type_var3 == 'Regular':
430
+ if site_var == 'Draftkings':
431
+ dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
432
+ elif site_var == 'Fanduel':
433
+ fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
434
+ elif slate_type_var3 == 'Showdown':
435
+ if site_var == 'Draftkings':
436
+ dk_lineups = init_DK_lineups(slate_type_var3, slate_var3)
437
+ elif site_var == 'Fanduel':
438
+ fd_lineups = init_FD_lineups(slate_type_var3, slate_var3)
439
+ with col2:
440
+ lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
441
+ player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
442
+ if player_var1 == 'Specific Players':
443
+ player_var2 = st.multiselect('Which players do you want?', options = raw_baselines['Player'].unique())
444
+ elif player_var1 == 'Full Slate':
445
+ player_var2 = raw_baselines.Player.values.tolist()
446
+ with col3:
447
  if site_var == 'Draftkings':
448
+ salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var')
449
+ salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var')
450
  elif site_var == 'Fanduel':
451
+ salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 35000, value = 34000, step = 100, key = 'salary_min_var')
452
+ salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 35000, value = 35000, step = 100, key = 'salary_max_var')
453
 
 
 
 
 
454
 
455
  if site_var == 'Draftkings':
456
  if slate_type_var3 == 'Regular':
 
464
  min_own = np.min(dk_lineups[:,12])
465
  max_own = np.max(dk_lineups[:,12])
466
 
 
 
 
 
 
 
467
 
468
  elif site_var == 'Fanduel':
469
  raw_baselines = hold_display
 
477
  # Get the minimum and maximum ownership values from dk_lineups
478
  min_own = np.min(fd_lineups[:,11])
479
  max_own = np.max(fd_lineups[:,11])
 
 
 
 
 
 
 
480
 
481
+ if st.button("Prepare full data export", key='data_export'):
482
  name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
483
  data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
484
  if site_var == 'Draftkings':
 
541
  elif player_var1 == 'Full Slate':
542
  st.session_state.working_seed = fd_lineups.copy()
543
  st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
544
+ st.session_state.data_export_display = st.session_state.data_export_display[st.session_state.data_export_display['salary'] >= salary_min_var]
545
+ st.session_state.data_export_display = st.session_state.data_export_display[st.session_state.data_export_display['salary'] <= salary_max_var]
546
  export_file = st.session_state.data_export_display.copy()
547
  name_export = st.session_state.data_export_display.copy()
548
  if site_var == 'Draftkings':