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
Files changed (1) hide show
  1. app.py +139 -54
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(3)
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
- if st.button("Prepare full data export", key='data_export'):
630
- name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
631
- data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
632
- if site_var == 'Draftkings':
633
- if slate_type_var3 == 'Regular':
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
- data_export = data_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
664
  elif slate_type_var3 == 'Showdown':
665
- data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
 
 
666
  elif site_var == 'Fanduel':
667
  if slate_type_var3 == 'Regular':
668
- data_export = data_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
669
  elif slate_type_var3 == 'Showdown':
670
- data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
671
- st.download_button(
672
- label="Portfolio Manager Export (IDs)",
673
- data=convert_pm_df(data_export),
674
- file_name='MLB_optimals_export.csv',
675
- mime='text/csv',
676
- )
677
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
  if site_var == 'Draftkings':
679
  if slate_type_var3 == 'Regular':
680
- name_export = name_export.set_index('SP1').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
681
  elif slate_type_var3 == 'Showdown':
682
- name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
 
 
683
  elif site_var == 'Fanduel':
684
  if slate_type_var3 == 'Regular':
685
- name_export = name_export.set_index('P').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
686
  elif slate_type_var3 == 'Showdown':
687
- name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
688
- st.download_button(
689
- label="Portfolio Manager Export (Names)",
690
- data=convert_pm_df(name_export),
691
- file_name='MLB_optimals_export.csv',
692
- mime='text/csv',
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: