Spaces:
Running
Running
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
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 |
-
|
|
|
325 |
elif view_var == "Advanced":
|
326 |
-
|
|
|
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 |
-
|
|
|
401 |
except:
|
402 |
-
|
|
|
|
|
403 |
elif view_var == "Advanced":
|
404 |
try:
|
405 |
-
|
|
|
406 |
except:
|
407 |
-
|
|
|
408 |
|
409 |
with tab3:
|
410 |
st.header("Optimals")
|
411 |
with st.expander("Info and Filters"):
|
412 |
-
|
|
|
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 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
if site_var == 'Draftkings':
|
423 |
-
|
|
|
424 |
elif site_var == 'Fanduel':
|
425 |
-
|
426 |
-
|
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':
|