Spaces:
Runtime error
Runtime error
James McCool
commited on
Commit
·
78cc931
1
Parent(s):
18fb2b3
Refactor Range of Outcomes tab layout and improve data selection workflow
Browse filesRestructure the first tab's layout using a 5-column grid for more intuitive data selection. Consolidate data loading and view selection logic, simplifying the user interface while maintaining the existing functionality for NBA and NFL projections. Improve spacing and organization of selection options to enhance user experience.
app.py
CHANGED
|
@@ -115,74 +115,85 @@ def convert_df_to_csv(df):
|
|
| 115 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimizer'])
|
| 116 |
|
| 117 |
with tab1:
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
st.cache_data.clear()
|
| 122 |
-
nba_dk_sd_raw, nba_fd_sd_raw, nfl_dk_sd_raw, nfl_fd_sd_raw, nba_timestamp, nfl_dk_timestamp, nba_dk_id_dict, nfl_dk_id_dict, nba_fd_id_dict, nfl_fd_id_dict = init_baselines()
|
| 123 |
-
view_var2 = st.radio("What view would you like to load?", ("Simple", "Advanced"), key='view_var2')
|
| 124 |
-
st.info("Simple view is the default view and better for mobile devices, and Advanced view is the view that shows all the data that is available.")
|
| 125 |
-
sport_var2 = st.radio("What sport are you loading?", ('NFL', 'NBA'), key='sport_var2')
|
| 126 |
-
if sport_var2 == 'NBA':
|
| 127 |
-
dk_roo_raw = nba_dk_sd_raw
|
| 128 |
-
fd_roo_raw = nba_fd_sd_raw
|
| 129 |
-
elif sport_var2 == 'NFL':
|
| 130 |
-
dk_roo_raw = nfl_dk_sd_raw
|
| 131 |
-
fd_roo_raw = nfl_fd_sd_raw
|
| 132 |
-
slate_var2 = st.radio("Which data are you loading?", ('Paydirt (Main)', 'Paydirt (Secondary)', 'Paydirt (Auxiliary)'), key='slate_var2')
|
| 133 |
-
site_var2 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var2')
|
| 134 |
-
if site_var2 == 'Draftkings':
|
| 135 |
-
if slate_var2 == 'Paydirt (Main)':
|
| 136 |
-
raw_baselines = dk_roo_raw
|
| 137 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
|
| 138 |
-
elif slate_var2 == 'Paydirt (Secondary)':
|
| 139 |
-
raw_baselines = dk_roo_raw
|
| 140 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
|
| 141 |
-
elif slate_var2 == 'Paydirt (Auxiliary)':
|
| 142 |
-
raw_baselines = dk_roo_raw
|
| 143 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
|
| 144 |
-
|
| 145 |
-
elif site_var2 == 'Fanduel':
|
| 146 |
-
if slate_var2 == 'Paydirt (Main)':
|
| 147 |
-
raw_baselines = fd_roo_raw
|
| 148 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
|
| 149 |
-
elif slate_var2 == 'Paydirt (Secondary)':
|
| 150 |
-
raw_baselines = fd_roo_raw
|
| 151 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
|
| 152 |
-
elif slate_var2 == 'Paydirt (Auxiliary)':
|
| 153 |
-
raw_baselines = fd_roo_raw
|
| 154 |
-
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
|
| 155 |
|
| 156 |
-
|
| 157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
if sport_var2 == 'NBA':
|
| 160 |
-
|
| 161 |
-
display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', 'GPP%', 'Own']]
|
| 162 |
-
elif view_var2 == 'Advanced':
|
| 163 |
-
display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%', 'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp', 'player_id']]
|
| 164 |
elif sport_var2 == 'NFL':
|
| 165 |
-
|
| 166 |
-
display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', '20+%', 'Own']]
|
| 167 |
-
elif view_var2 == 'Advanced':
|
| 168 |
-
display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 169 |
-
display_Proj = display_Proj.sort_values(by='Median', ascending=False)
|
| 170 |
-
|
| 171 |
-
with hold_container:
|
| 172 |
-
hold_container = st.empty()
|
| 173 |
-
display_Proj = display_Proj.drop_duplicates(subset=['Player'])
|
| 174 |
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
label="Export Tables",
|
| 182 |
-
data=convert_df_to_csv(raw_baselines),
|
| 183 |
-
file_name='NFL_SD_export.csv',
|
| 184 |
-
mime='text/csv',
|
| 185 |
-
)
|
| 186 |
|
| 187 |
with tab2:
|
| 188 |
col1, col2 = st.columns([1, 5])
|
|
|
|
| 115 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimizer'])
|
| 116 |
|
| 117 |
with tab1:
|
| 118 |
+
if st.button("Load/Reset Data", key='reset2'):
|
| 119 |
+
st.cache_data.clear()
|
| 120 |
+
nba_dk_sd_raw, nba_fd_sd_raw, nfl_dk_sd_raw, nfl_fd_sd_raw, nba_timestamp, nfl_dk_timestamp, nba_dk_id_dict, nfl_dk_id_dict, nba_fd_id_dict, nfl_fd_id_dict = init_baselines()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
|
| 122 |
+
options_container = st.container()
|
| 123 |
+
with options_container:
|
| 124 |
+
col1, col2, col3, col4, col5 = st.columns(5)
|
| 125 |
+
|
| 126 |
+
with col1:
|
| 127 |
+
view_var2 = st.radio("View Type", ("Simple", "Advanced"), key='view_var2')
|
| 128 |
+
st.info("Simple view is better for mobile")
|
| 129 |
+
|
| 130 |
+
with col2:
|
| 131 |
+
sport_var2 = st.radio("Sport", ('NFL', 'NBA'), key='sport_var2')
|
| 132 |
+
if sport_var2 == 'NBA':
|
| 133 |
+
dk_roo_raw = nba_dk_sd_raw
|
| 134 |
+
fd_roo_raw = nba_fd_sd_raw
|
| 135 |
+
elif sport_var2 == 'NFL':
|
| 136 |
+
dk_roo_raw = nfl_dk_sd_raw
|
| 137 |
+
fd_roo_raw = nfl_fd_sd_raw
|
| 138 |
+
|
| 139 |
+
with col3:
|
| 140 |
+
slate_var2 = st.radio("Slate", ('Paydirt (Main)', 'Paydirt (Secondary)', 'Paydirt (Auxiliary)'), key='slate_var2')
|
| 141 |
+
|
| 142 |
+
with col4:
|
| 143 |
+
site_var2 = st.radio("Site", ('Draftkings', 'Fanduel'), key='site_var2')
|
| 144 |
|
| 145 |
+
with col5:
|
| 146 |
+
if site_var2 == 'Draftkings':
|
| 147 |
+
if slate_var2 == 'Paydirt (Main)':
|
| 148 |
+
raw_baselines = dk_roo_raw
|
| 149 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
|
| 150 |
+
elif slate_var2 == 'Paydirt (Secondary)':
|
| 151 |
+
raw_baselines = dk_roo_raw
|
| 152 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
|
| 153 |
+
elif slate_var2 == 'Paydirt (Auxiliary)':
|
| 154 |
+
raw_baselines = dk_roo_raw
|
| 155 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
|
| 156 |
+
|
| 157 |
+
elif site_var2 == 'Fanduel':
|
| 158 |
+
if slate_var2 == 'Paydirt (Main)':
|
| 159 |
+
raw_baselines = fd_roo_raw
|
| 160 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #1']
|
| 161 |
+
elif slate_var2 == 'Paydirt (Secondary)':
|
| 162 |
+
raw_baselines = fd_roo_raw
|
| 163 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #2']
|
| 164 |
+
elif slate_var2 == 'Paydirt (Auxiliary)':
|
| 165 |
+
raw_baselines = fd_roo_raw
|
| 166 |
+
raw_baselines = raw_baselines[raw_baselines['slate'] == 'Showdown #3']
|
| 167 |
+
|
| 168 |
+
hold_container = st.empty()
|
| 169 |
+
|
| 170 |
+
if sport_var2 == 'NBA':
|
| 171 |
+
if view_var2 == 'Simple':
|
| 172 |
+
display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', 'GPP%', 'Own']]
|
| 173 |
+
elif view_var2 == 'Advanced':
|
| 174 |
+
display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%', 'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp', 'player_id']]
|
| 175 |
+
elif sport_var2 == 'NFL':
|
| 176 |
+
if view_var2 == 'Simple':
|
| 177 |
+
display_Proj = raw_baselines[['Player', 'Position', 'Salary', 'Median', '20+%', 'Own']]
|
| 178 |
+
elif view_var2 == 'Advanced':
|
| 179 |
+
display_Proj = raw_baselines[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 180 |
+
display_Proj = display_Proj.sort_values(by='Median', ascending=False)
|
| 181 |
+
|
| 182 |
+
with hold_container:
|
| 183 |
+
hold_container = st.empty()
|
| 184 |
+
display_Proj = display_Proj.drop_duplicates(subset=['Player'])
|
| 185 |
+
|
| 186 |
if sport_var2 == 'NBA':
|
| 187 |
+
st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nba_player_roo_format, precision=2), height=1000, use_container_width = True)
|
|
|
|
|
|
|
|
|
|
| 188 |
elif sport_var2 == 'NFL':
|
| 189 |
+
st.dataframe(display_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(nfl_player_roo_format, precision=2), height=1000, use_container_width = True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
|
| 191 |
+
st.download_button(
|
| 192 |
+
label="Export Tables",
|
| 193 |
+
data=convert_df_to_csv(raw_baselines),
|
| 194 |
+
file_name='NFL_SD_export.csv',
|
| 195 |
+
mime='text/csv',
|
| 196 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 197 |
|
| 198 |
with tab2:
|
| 199 |
col1, col2 = st.columns([1, 5])
|