Spaces:
Running
Running
James McCool
commited on
Commit
·
98b4070
1
Parent(s):
0ea88cb
Enhance data export functionality in app.py by adding a fourth column for stack inputs and implementing filters for minimum and maximum salary and stack counts. This update improves user experience by allowing more granular control over exported data for both DraftKings and FanDuel.
Browse files
app.py
CHANGED
@@ -566,7 +566,7 @@ with tab2:
|
|
566 |
with tab3:
|
567 |
st.header("Optimals")
|
568 |
with st.expander("Info and Filters"):
|
569 |
-
col1, col2, col3 = st.columns(
|
570 |
with col1:
|
571 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3')
|
572 |
if slate_type_var3 == 'Regular':
|
@@ -598,6 +598,13 @@ with tab3:
|
|
598 |
elif site_var == 'Fanduel':
|
599 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 35000, value = 34000, step = 100, key = 'salary_min_var')
|
600 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 35000, value = 35000, step = 100, key = 'salary_max_var')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
601 |
|
602 |
|
603 |
if site_var == 'Draftkings':
|
@@ -626,71 +633,149 @@ with tab3:
|
|
626 |
min_own = np.min(fd_lineups[:,11])
|
627 |
max_own = np.max(fd_lineups[:,11])
|
628 |
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
map_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
|
635 |
-
elif slate_type_var3 == 'Showdown':
|
636 |
-
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
637 |
-
for col_idx in map_columns:
|
638 |
-
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
639 |
-
elif site_var == 'Fanduel':
|
640 |
-
if slate_type_var3 == 'Regular':
|
641 |
-
map_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
|
642 |
-
elif slate_type_var3 == 'Showdown':
|
643 |
-
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4']
|
644 |
-
for col_idx in map_columns:
|
645 |
-
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
646 |
-
reg_opt_col, pm_opt_col, blank_col = st.columns([2, 2, 6])
|
647 |
-
with reg_opt_col:
|
648 |
-
st.download_button(
|
649 |
-
label="Export optimals set (IDs)",
|
650 |
-
data=convert_df(data_export),
|
651 |
-
file_name='MLB_optimals_export.csv',
|
652 |
-
mime='text/csv',
|
653 |
-
)
|
654 |
-
st.download_button(
|
655 |
-
label="Export optimals set (Names)",
|
656 |
-
data=convert_df(name_export),
|
657 |
-
file_name='MLB_optimals_export.csv',
|
658 |
-
mime='text/csv',
|
659 |
-
)
|
660 |
-
with pm_opt_col:
|
661 |
if site_var == 'Draftkings':
|
662 |
if slate_type_var3 == 'Regular':
|
663 |
-
|
664 |
elif slate_type_var3 == 'Showdown':
|
665 |
-
|
|
|
|
|
666 |
elif site_var == 'Fanduel':
|
667 |
if slate_type_var3 == 'Regular':
|
668 |
-
|
669 |
elif slate_type_var3 == 'Showdown':
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
678 |
if site_var == 'Draftkings':
|
679 |
if slate_type_var3 == 'Regular':
|
680 |
-
|
681 |
elif slate_type_var3 == 'Showdown':
|
682 |
-
|
|
|
|
|
683 |
elif site_var == 'Fanduel':
|
684 |
if slate_type_var3 == 'Regular':
|
685 |
-
|
686 |
elif slate_type_var3 == 'Showdown':
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
694 |
|
695 |
if site_var == 'Draftkings':
|
696 |
if 'working_seed' in st.session_state:
|
|
|
566 |
with tab3:
|
567 |
st.header("Optimals")
|
568 |
with st.expander("Info and Filters"):
|
569 |
+
col1, col2, col3, col4 = st.columns(4)
|
570 |
with col1:
|
571 |
slate_type_var3 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var3')
|
572 |
if slate_type_var3 == 'Regular':
|
|
|
598 |
elif site_var == 'Fanduel':
|
599 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 35000, value = 34000, step = 100, key = 'salary_min_var')
|
600 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 35000, value = 35000, step = 100, key = 'salary_max_var')
|
601 |
+
with col4:
|
602 |
+
if site_var == 'Draftkings':
|
603 |
+
min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 3, step = 1, key = 'min_stacks_var')
|
604 |
+
max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 5, value = 5, step = 1, key = 'max_stacks_var')
|
605 |
+
elif site_var == 'Fanduel':
|
606 |
+
min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 4, value = 3, step = 1, key = 'min_stacks_var')
|
607 |
+
max_stacks_var = st.number_input("Maximum stacks used", min_value = 0, max_value = 4, value = 4, step = 1, key = 'max_stacks_var')
|
608 |
|
609 |
|
610 |
if site_var == 'Draftkings':
|
|
|
633 |
min_own = np.min(fd_lineups[:,11])
|
634 |
max_own = np.max(fd_lineups[:,11])
|
635 |
|
636 |
+
reg_dl_col, filtered_dl_col, blank_dl_col = st.columns([2, 2, 6])
|
637 |
+
with reg_dl_col:
|
638 |
+
if st.button("Prepare full data export", key='data_export'):
|
639 |
+
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
640 |
+
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
if site_var == 'Draftkings':
|
642 |
if slate_type_var3 == 'Regular':
|
643 |
+
map_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
|
644 |
elif slate_type_var3 == 'Showdown':
|
645 |
+
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
646 |
+
for col_idx in map_columns:
|
647 |
+
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
648 |
elif site_var == 'Fanduel':
|
649 |
if slate_type_var3 == 'Regular':
|
650 |
+
map_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
|
651 |
elif slate_type_var3 == 'Showdown':
|
652 |
+
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4']
|
653 |
+
for col_idx in map_columns:
|
654 |
+
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
655 |
+
reg_opt_col, pm_opt_col, blank_col = st.columns([2, 2, 6])
|
656 |
+
with reg_opt_col:
|
657 |
+
st.download_button(
|
658 |
+
label="Export optimals set (IDs)",
|
659 |
+
data=convert_df(data_export),
|
660 |
+
file_name='MLB_optimals_export.csv',
|
661 |
+
mime='text/csv',
|
662 |
+
)
|
663 |
+
st.download_button(
|
664 |
+
label="Export optimals set (Names)",
|
665 |
+
data=convert_df(name_export),
|
666 |
+
file_name='MLB_optimals_export.csv',
|
667 |
+
mime='text/csv',
|
668 |
+
)
|
669 |
+
with pm_opt_col:
|
670 |
+
if site_var == 'Draftkings':
|
671 |
+
if slate_type_var3 == 'Regular':
|
672 |
+
data_export = data_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
673 |
+
elif slate_type_var3 == 'Showdown':
|
674 |
+
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
675 |
+
elif site_var == 'Fanduel':
|
676 |
+
if slate_type_var3 == 'Regular':
|
677 |
+
data_export = data_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
678 |
+
elif slate_type_var3 == 'Showdown':
|
679 |
+
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
680 |
+
st.download_button(
|
681 |
+
label="Portfolio Manager Export (IDs)",
|
682 |
+
data=convert_pm_df(data_export),
|
683 |
+
file_name='MLB_optimals_export.csv',
|
684 |
+
mime='text/csv',
|
685 |
+
)
|
686 |
+
|
687 |
+
if site_var == 'Draftkings':
|
688 |
+
if slate_type_var3 == 'Regular':
|
689 |
+
name_export = name_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
690 |
+
elif slate_type_var3 == 'Showdown':
|
691 |
+
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
692 |
+
elif site_var == 'Fanduel':
|
693 |
+
if slate_type_var3 == 'Regular':
|
694 |
+
name_export = name_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
695 |
+
elif slate_type_var3 == 'Showdown':
|
696 |
+
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
697 |
+
st.download_button(
|
698 |
+
label="Portfolio Manager Export (Names)",
|
699 |
+
data=convert_pm_df(name_export),
|
700 |
+
file_name='MLB_optimals_export.csv',
|
701 |
+
mime='text/csv',
|
702 |
+
)
|
703 |
+
with filtered_dl_col:
|
704 |
+
if st.button("Prepare full data export (Filtered)", key='data_export_filtered'):
|
705 |
+
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
706 |
+
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
707 |
if site_var == 'Draftkings':
|
708 |
if slate_type_var3 == 'Regular':
|
709 |
+
map_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
|
710 |
elif slate_type_var3 == 'Showdown':
|
711 |
+
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
712 |
+
for col_idx in map_columns:
|
713 |
+
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
714 |
elif site_var == 'Fanduel':
|
715 |
if slate_type_var3 == 'Regular':
|
716 |
+
map_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
|
717 |
elif slate_type_var3 == 'Showdown':
|
718 |
+
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4']
|
719 |
+
for col_idx in map_columns:
|
720 |
+
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
721 |
+
data_export = data_export[data_export['salary'] >= salary_min_var]
|
722 |
+
data_export = data_export[data_export['salary'] <= salary_max_var]
|
723 |
+
data_export = data_export[data_export['Team_count'] >= min_stacks_var]
|
724 |
+
data_export = data_export[data_export['Team_count'] <= max_stacks_var]
|
725 |
+
|
726 |
+
name_export = name_export[name_export['salary'] >= salary_min_var]
|
727 |
+
name_export = name_export[name_export['salary'] <= salary_max_var]
|
728 |
+
name_export = name_export[name_export['Team_count'] >= min_stacks_var]
|
729 |
+
name_export = name_export[name_export['Team_count'] <= max_stacks_var]
|
730 |
+
|
731 |
+
reg_opt_col, pm_opt_col, blank_col = st.columns([2, 2, 6])
|
732 |
+
with reg_opt_col:
|
733 |
+
st.download_button(
|
734 |
+
label="Export optimals set (IDs)",
|
735 |
+
data=convert_df(data_export),
|
736 |
+
file_name='MLB_optimals_export.csv',
|
737 |
+
mime='text/csv',
|
738 |
+
)
|
739 |
+
st.download_button(
|
740 |
+
label="Export optimals set (Names)",
|
741 |
+
data=convert_df(name_export),
|
742 |
+
file_name='MLB_optimals_export.csv',
|
743 |
+
mime='text/csv',
|
744 |
+
)
|
745 |
+
with pm_opt_col:
|
746 |
+
if site_var == 'Draftkings':
|
747 |
+
if slate_type_var3 == 'Regular':
|
748 |
+
data_export = data_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
749 |
+
elif slate_type_var3 == 'Showdown':
|
750 |
+
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
751 |
+
elif site_var == 'Fanduel':
|
752 |
+
if slate_type_var3 == 'Regular':
|
753 |
+
data_export = data_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
754 |
+
elif slate_type_var3 == 'Showdown':
|
755 |
+
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
756 |
+
st.download_button(
|
757 |
+
label="Portfolio Manager Export (IDs)",
|
758 |
+
data=convert_pm_df(data_export),
|
759 |
+
file_name='MLB_optimals_export.csv',
|
760 |
+
mime='text/csv',
|
761 |
+
)
|
762 |
+
|
763 |
+
if site_var == 'Draftkings':
|
764 |
+
if slate_type_var3 == 'Regular':
|
765 |
+
name_export = name_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
766 |
+
elif slate_type_var3 == 'Showdown':
|
767 |
+
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
768 |
+
elif site_var == 'Fanduel':
|
769 |
+
if slate_type_var3 == 'Regular':
|
770 |
+
name_export = name_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
771 |
+
elif slate_type_var3 == 'Showdown':
|
772 |
+
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
773 |
+
st.download_button(
|
774 |
+
label="Portfolio Manager Export (Names)",
|
775 |
+
data=convert_pm_df(name_export),
|
776 |
+
file_name='MLB_optimals_export.csv',
|
777 |
+
mime='text/csv',
|
778 |
+
)
|
779 |
|
780 |
if site_var == 'Draftkings':
|
781 |
if 'working_seed' in st.session_state:
|