James McCool
commited on
Commit
·
a2796cc
1
Parent(s):
64f99f0
Refactor init_baselines function to accept type_var parameter for improved data handling in Streamlit app; enhance lineup initialization by adding type selection for Regular and Showdown data, and implement duplicate removal in lineup dataframes for better accuracy.
Browse files- src/streamlit_app.py +182 -132
src/streamlit_app.py
CHANGED
|
@@ -139,7 +139,7 @@ def init_handbuilder_data(site_var):
|
|
| 139 |
return load_display.dropna(subset=['Median'])
|
| 140 |
|
| 141 |
@st.cache_resource(ttl=60)
|
| 142 |
-
def init_baselines():
|
| 143 |
|
| 144 |
collection = db["Player_Baselines"]
|
| 145 |
cursor = collection.find()
|
|
@@ -150,71 +150,84 @@ def init_baselines():
|
|
| 150 |
raw_display['name'] = raw_display['name'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['name'])
|
| 151 |
player_stats = raw_display[raw_display['Position'] != 'K']
|
| 152 |
|
| 153 |
-
|
| 154 |
-
|
|
|
|
| 155 |
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
|
| 164 |
-
|
| 165 |
|
| 166 |
-
|
| 167 |
-
|
| 168 |
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
|
| 177 |
-
|
| 178 |
|
| 179 |
-
|
| 180 |
-
|
| 181 |
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 186 |
-
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 187 |
-
# load_display = raw_display[raw_display['Position'] != 'K']
|
| 188 |
-
dk_sd_roo_raw = raw_display.dropna(subset=['Median'])
|
| 189 |
|
| 190 |
-
|
|
|
|
| 191 |
|
| 192 |
-
|
| 193 |
-
|
|
|
|
| 194 |
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
|
| 203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
|
| 205 |
-
|
| 206 |
-
cursor = collection.find()
|
| 207 |
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
dk_stacks_raw = raw_display.copy()
|
| 211 |
|
| 212 |
-
|
| 213 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 214 |
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
|
| 219 |
return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map
|
| 220 |
|
|
@@ -259,6 +272,8 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 259 |
else:
|
| 260 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 261 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
|
|
|
| 262 |
|
| 263 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 264 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
|
@@ -299,6 +314,8 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 299 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 300 |
raw_display = pd.DataFrame(list(cursor))
|
| 301 |
|
|
|
|
|
|
|
| 302 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 303 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 304 |
# Map names
|
|
@@ -338,6 +355,8 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 338 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 339 |
raw_display = pd.DataFrame(list(cursor))
|
| 340 |
|
|
|
|
|
|
|
| 341 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 342 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 343 |
# Map names
|
|
@@ -371,6 +390,8 @@ def init_DK_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 371 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 372 |
raw_display = pd.DataFrame(list(cursor))
|
| 373 |
|
|
|
|
|
|
|
| 374 |
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 375 |
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 376 |
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
|
@@ -422,6 +443,8 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 422 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 423 |
raw_display = pd.DataFrame(list(cursor))
|
| 424 |
|
|
|
|
|
|
|
| 425 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 426 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 427 |
# Map names
|
|
@@ -461,6 +484,8 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 461 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 462 |
raw_display = pd.DataFrame(list(cursor))
|
| 463 |
|
|
|
|
|
|
|
| 464 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 465 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 466 |
# Map names
|
|
@@ -500,6 +525,8 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 500 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 501 |
raw_display = pd.DataFrame(list(cursor))
|
| 502 |
|
|
|
|
|
|
|
| 503 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 504 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 505 |
# Map names
|
|
@@ -534,6 +561,8 @@ def init_FD_lineups(type_var, slate_var, prio_var, prio_mix, db_translation, lin
|
|
| 534 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 535 |
raw_display = pd.DataFrame(list(cursor))
|
| 536 |
|
|
|
|
|
|
|
| 537 |
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 538 |
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 539 |
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
|
@@ -564,24 +593,26 @@ def convert_hb_df(array, column_names):
|
|
| 564 |
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 565 |
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 566 |
|
| 567 |
-
app_load_reset_column, app_view_site_column = st.columns([1, 9])
|
| 568 |
with app_load_reset_column:
|
| 569 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 570 |
st.cache_data.clear()
|
| 571 |
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 572 |
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 573 |
-
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
|
| 574 |
dk_lineups = init_DK_lineups('Regular', 'Main Slate', 'proj', 50, dk_showdown_db_translation, 25000, [])
|
| 575 |
fd_lineups = init_FD_lineups('Regular', 'Main Slate', 'proj', 50, fd_showdown_db_translation, 25000, [])
|
| 576 |
for key in st.session_state.keys():
|
| 577 |
del st.session_state[key]
|
| 578 |
with app_view_site_column:
|
| 579 |
with st.container():
|
| 580 |
-
app_view_column, app_site_column = st.columns([3, 3])
|
| 581 |
with app_view_column:
|
| 582 |
view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
|
| 583 |
with app_site_column:
|
| 584 |
site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
|
|
|
|
|
|
|
| 585 |
|
| 586 |
selected_tab = st.segmented_control(
|
| 587 |
"Select Tab",
|
|
@@ -1020,8 +1051,11 @@ if selected_tab == 'Handbuilder':
|
|
| 1020 |
if selected_tab == 'Stacks ROO':
|
| 1021 |
|
| 1022 |
print(st.session_state)
|
| 1023 |
-
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
|
| 1024 |
-
|
|
|
|
|
|
|
|
|
|
| 1025 |
with st.expander("Info and Filters"):
|
| 1026 |
st.info(t_stamp)
|
| 1027 |
with st.container():
|
|
@@ -1059,26 +1093,32 @@ if selected_tab == 'Stacks ROO':
|
|
| 1059 |
if selected_tab == 'Player ROO':
|
| 1060 |
|
| 1061 |
print(st.session_state)
|
| 1062 |
-
|
| 1063 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1064 |
with st.expander("Info and Filters"):
|
| 1065 |
st.info(t_stamp)
|
| 1066 |
-
|
| 1067 |
-
if slate_type_var2 == 'Regular':
|
| 1068 |
slate_var2 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'Late Slate', 'Thurs-Mon Slate'), key='slate_var2_radio')
|
| 1069 |
-
elif
|
| 1070 |
slate_var2 = st.radio("Which slate are you loading?", (slate_names_dk if site_var == 'Draftkings' else slate_names_fd), key='slate_var2_radio')
|
| 1071 |
if site_var == 'Draftkings':
|
| 1072 |
-
if
|
| 1073 |
raw_baselines = dk_roo_raw[dk_roo_raw['slate'] == str(slate_var2)]
|
| 1074 |
-
elif
|
| 1075 |
raw_baselines = dk_sd_roo_raw[dk_sd_roo_raw['slate'] == str(slate_name_lookup_dk[slate_var2])]
|
| 1076 |
|
| 1077 |
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1078 |
elif site_var == 'Fanduel':
|
| 1079 |
-
if
|
| 1080 |
raw_baselines = fd_roo_raw[fd_roo_raw['slate'] == str(slate_var2)]
|
| 1081 |
-
elif
|
| 1082 |
raw_baselines = fd_sd_roo_raw[fd_sd_roo_raw['slate'] == str(slate_name_lookup_fd[slate_var2])]
|
| 1083 |
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1084 |
|
|
@@ -1118,11 +1158,11 @@ if selected_tab == 'Player ROO':
|
|
| 1118 |
final_Proj = final_Proj[final_Proj['Salary'] >= sal_var2[0]]
|
| 1119 |
final_Proj = final_Proj[final_Proj['Salary'] <= sal_var2[1]]
|
| 1120 |
|
| 1121 |
-
if
|
| 1122 |
pm_export = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own']]
|
| 1123 |
pm_export['captain ownership'] = pm_export['Own'] / 6
|
| 1124 |
pm_export = pm_export.rename(columns={'Own': 'ownership', 'Median': 'median', 'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary'})
|
| 1125 |
-
elif
|
| 1126 |
pm_export = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own']]
|
| 1127 |
pm_export['Salary'] = pm_export['Salary'] / 1.5
|
| 1128 |
pm_export = pm_export.rename(columns={'Own': 'ownership', 'Median': 'median', 'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'CPT_Own': 'captain ownership'})
|
|
@@ -1162,8 +1202,11 @@ if selected_tab == 'Player ROO':
|
|
| 1162 |
st.stop()
|
| 1163 |
|
| 1164 |
if selected_tab == 'Optimals':
|
| 1165 |
-
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines()
|
| 1166 |
-
|
|
|
|
|
|
|
|
|
|
| 1167 |
st.header("Optimals")
|
| 1168 |
with st.expander("Info and Filters"):
|
| 1169 |
st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
|
|
@@ -1175,36 +1218,35 @@ if selected_tab == 'Optimals':
|
|
| 1175 |
lineup_num = st.number_input("How many lineups do you want to work with?", min_value=1000, max_value=50000, value=25000, step=100, key='lineup_download_var_input')
|
| 1176 |
|
| 1177 |
with optimals_site_col:
|
| 1178 |
-
|
| 1179 |
-
if slate_type_var3 == 'Regular':
|
| 1180 |
if site_var == 'Draftkings':
|
| 1181 |
raw_baselines = dk_roo_raw
|
| 1182 |
elif site_var == 'Fanduel':
|
| 1183 |
raw_baselines = fd_roo_raw
|
| 1184 |
-
elif
|
| 1185 |
if site_var == 'Draftkings':
|
| 1186 |
raw_baselines = dk_sd_roo_raw
|
| 1187 |
elif site_var == 'Fanduel':
|
| 1188 |
raw_baselines = fd_sd_roo_raw
|
| 1189 |
if site_var == 'Draftkings':
|
| 1190 |
-
slate_var3 = st.radio("Which slate data are you loading?", (slate_names_dk if
|
| 1191 |
elif site_var == 'Fanduel':
|
| 1192 |
-
slate_var3 = st.radio("Which slate data are you loading?", (slate_names_fd if
|
| 1193 |
|
| 1194 |
with optimals_macro_col:
|
| 1195 |
lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
|
| 1196 |
player_var2 = st.multiselect('Query for lineups including:', options = raw_baselines['Player'].unique(), key='player_var2_multiselect', default=[])
|
| 1197 |
|
| 1198 |
-
if
|
| 1199 |
if site_var == 'Draftkings':
|
| 1200 |
-
dk_lineups = init_DK_lineups(
|
| 1201 |
elif site_var == 'Fanduel':
|
| 1202 |
-
fd_lineups = init_FD_lineups(
|
| 1203 |
-
elif
|
| 1204 |
if site_var == 'Draftkings':
|
| 1205 |
-
dk_lineups = init_DK_lineups(
|
| 1206 |
elif site_var == 'Fanduel':
|
| 1207 |
-
fd_lineups = init_FD_lineups(
|
| 1208 |
|
| 1209 |
with optimals_salary_col:
|
| 1210 |
if site_var == 'Draftkings':
|
|
@@ -1223,23 +1265,21 @@ if selected_tab == 'Optimals':
|
|
| 1223 |
|
| 1224 |
|
| 1225 |
if site_var == 'Draftkings':
|
| 1226 |
-
|
| 1227 |
-
if slate_type_var3 == 'Regular':
|
| 1228 |
ROO_slice = raw_baselines
|
| 1229 |
player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
|
| 1230 |
column_names = dk_columns
|
| 1231 |
-
elif
|
| 1232 |
player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
|
| 1233 |
column_names = dk_sd_columns
|
| 1234 |
|
| 1235 |
|
| 1236 |
elif site_var == 'Fanduel':
|
| 1237 |
-
|
| 1238 |
-
if slate_type_var3 == 'Regular':
|
| 1239 |
ROO_slice = raw_baselines
|
| 1240 |
player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
|
| 1241 |
column_names = fd_columns
|
| 1242 |
-
elif
|
| 1243 |
player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
|
| 1244 |
column_names = fd_sd_columns
|
| 1245 |
|
|
@@ -1249,20 +1289,20 @@ if selected_tab == 'Optimals':
|
|
| 1249 |
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1250 |
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1251 |
if site_var == 'Draftkings':
|
| 1252 |
-
if
|
| 1253 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1254 |
for col_idx in map_columns:
|
| 1255 |
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
| 1256 |
-
elif
|
| 1257 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1258 |
for col_idx in map_columns:
|
| 1259 |
data_export[col_idx] = data_export[col_idx].map(dk_sd_id_map)
|
| 1260 |
elif site_var == 'Fanduel':
|
| 1261 |
-
if
|
| 1262 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1263 |
for col_idx in map_columns:
|
| 1264 |
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
| 1265 |
-
elif
|
| 1266 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1267 |
for col_idx in map_columns:
|
| 1268 |
data_export[col_idx] = data_export[col_idx].map(fd_sd_id_map)
|
|
@@ -1284,14 +1324,14 @@ if selected_tab == 'Optimals':
|
|
| 1284 |
)
|
| 1285 |
with pm_opt_col:
|
| 1286 |
if site_var == 'Draftkings':
|
| 1287 |
-
if
|
| 1288 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1289 |
-
elif
|
| 1290 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1291 |
elif site_var == 'Fanduel':
|
| 1292 |
-
if
|
| 1293 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1294 |
-
elif
|
| 1295 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1296 |
st.download_button(
|
| 1297 |
label="Portfolio Manager Export (IDs)",
|
|
@@ -1302,14 +1342,14 @@ if selected_tab == 'Optimals':
|
|
| 1302 |
)
|
| 1303 |
|
| 1304 |
if site_var == 'Draftkings':
|
| 1305 |
-
if
|
| 1306 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1307 |
-
elif
|
| 1308 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1309 |
elif site_var == 'Fanduel':
|
| 1310 |
-
if
|
| 1311 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1312 |
-
elif
|
| 1313 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1314 |
st.download_button(
|
| 1315 |
label="Portfolio Manager Export (Names)",
|
|
@@ -1323,19 +1363,25 @@ if selected_tab == 'Optimals':
|
|
| 1323 |
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1324 |
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1325 |
if site_var == 'Draftkings':
|
| 1326 |
-
if
|
| 1327 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1328 |
-
|
|
|
|
|
|
|
| 1329 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1330 |
-
|
| 1331 |
-
|
|
|
|
| 1332 |
elif site_var == 'Fanduel':
|
| 1333 |
-
if
|
| 1334 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1335 |
-
|
|
|
|
|
|
|
| 1336 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1337 |
-
|
| 1338 |
-
|
|
|
|
| 1339 |
data_export = data_export[data_export['salary'] >= salary_min_var]
|
| 1340 |
data_export = data_export[data_export['salary'] <= salary_max_var]
|
| 1341 |
data_export = data_export[data_export['Team_count'] >= min_stacks_var]
|
|
@@ -1364,14 +1410,14 @@ if selected_tab == 'Optimals':
|
|
| 1364 |
)
|
| 1365 |
with pm_opt_col:
|
| 1366 |
if site_var == 'Draftkings':
|
| 1367 |
-
if
|
| 1368 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1369 |
-
elif
|
| 1370 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1371 |
elif site_var == 'Fanduel':
|
| 1372 |
-
if
|
| 1373 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1374 |
-
elif
|
| 1375 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1376 |
st.download_button(
|
| 1377 |
label="Portfolio Manager Export (IDs)",
|
|
@@ -1382,14 +1428,14 @@ if selected_tab == 'Optimals':
|
|
| 1382 |
)
|
| 1383 |
|
| 1384 |
if site_var == 'Draftkings':
|
| 1385 |
-
if
|
| 1386 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1387 |
-
elif
|
| 1388 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1389 |
elif site_var == 'Fanduel':
|
| 1390 |
-
if
|
| 1391 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1392 |
-
elif
|
| 1393 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1394 |
st.download_button(
|
| 1395 |
label="Portfolio Manager Export (Names)",
|
|
@@ -1439,19 +1485,23 @@ if selected_tab == 'Optimals':
|
|
| 1439 |
export_file = st.session_state.data_export_display.copy()
|
| 1440 |
name_export = st.session_state.data_export_display.copy()
|
| 1441 |
if site_var == 'Draftkings':
|
| 1442 |
-
if
|
| 1443 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1444 |
-
|
|
|
|
|
|
|
| 1445 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1446 |
-
|
| 1447 |
-
|
| 1448 |
elif site_var == 'Fanduel':
|
| 1449 |
-
if
|
| 1450 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1451 |
-
|
|
|
|
|
|
|
| 1452 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1453 |
-
|
| 1454 |
-
|
| 1455 |
|
| 1456 |
with st.container():
|
| 1457 |
if st.button("Reset Optimals", key='reset_optimals_button'):
|
|
@@ -1479,7 +1529,7 @@ if selected_tab == 'Optimals':
|
|
| 1479 |
)
|
| 1480 |
|
| 1481 |
with st.container():
|
| 1482 |
-
if
|
| 1483 |
if 'working_seed' in st.session_state:
|
| 1484 |
# Create a new dataframe with summary statistics
|
| 1485 |
if site_var == 'Draftkings':
|
|
@@ -1526,7 +1576,7 @@ if selected_tab == 'Optimals':
|
|
| 1526 |
np.std(st.session_state.working_seed[:,15])
|
| 1527 |
]
|
| 1528 |
})
|
| 1529 |
-
elif
|
| 1530 |
if 'working_seed' in st.session_state:
|
| 1531 |
# Create a new dataframe with summary statistics
|
| 1532 |
if site_var == 'Draftkings':
|
|
@@ -1590,14 +1640,14 @@ if selected_tab == 'Optimals':
|
|
| 1590 |
with display_freq_tab:
|
| 1591 |
if 'data_export_display' in st.session_state:
|
| 1592 |
if site_var == 'Draftkings':
|
| 1593 |
-
if
|
| 1594 |
player_columns = st.session_state.data_export_display.iloc[:, :9]
|
| 1595 |
-
elif
|
| 1596 |
player_columns = st.session_state.data_export_display.iloc[:, :6]
|
| 1597 |
elif site_var == 'Fanduel':
|
| 1598 |
-
if
|
| 1599 |
player_columns = st.session_state.data_export_display.iloc[:, :9]
|
| 1600 |
-
elif
|
| 1601 |
player_columns = st.session_state.data_export_display.iloc[:, :6]
|
| 1602 |
|
| 1603 |
# Flatten the DataFrame and count unique values
|
|
@@ -1633,14 +1683,14 @@ if selected_tab == 'Optimals':
|
|
| 1633 |
with seed_frame_freq_tab:
|
| 1634 |
if 'working_seed' in st.session_state:
|
| 1635 |
if site_var == 'Draftkings':
|
| 1636 |
-
if
|
| 1637 |
player_columns = st.session_state.working_seed[:, :9]
|
| 1638 |
-
elif
|
| 1639 |
player_columns = st.session_state.working_seed[:, :6]
|
| 1640 |
elif site_var == 'Fanduel':
|
| 1641 |
-
if
|
| 1642 |
player_columns = st.session_state.working_seed[:, :9]
|
| 1643 |
-
elif
|
| 1644 |
player_columns = st.session_state.working_seed[:, :6]
|
| 1645 |
|
| 1646 |
# Flatten the DataFrame and count unique values
|
|
|
|
| 139 |
return load_display.dropna(subset=['Median'])
|
| 140 |
|
| 141 |
@st.cache_resource(ttl=60)
|
| 142 |
+
def init_baselines(type_var: str):
|
| 143 |
|
| 144 |
collection = db["Player_Baselines"]
|
| 145 |
cursor = collection.find()
|
|
|
|
| 150 |
raw_display['name'] = raw_display['name'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['name'])
|
| 151 |
player_stats = raw_display[raw_display['Position'] != 'K']
|
| 152 |
|
| 153 |
+
if type_var == 'Regular':
|
| 154 |
+
collection = db["DK_NFL_ROO"]
|
| 155 |
+
cursor = collection.find()
|
| 156 |
|
| 157 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 158 |
+
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 159 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 160 |
+
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 161 |
+
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 162 |
+
load_display = raw_display[raw_display['Position'] != 'K']
|
| 163 |
+
dk_roo_raw = load_display.dropna(subset=['Median'])
|
| 164 |
|
| 165 |
+
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_id']))
|
| 166 |
|
| 167 |
+
collection = db["FD_NFL_ROO"]
|
| 168 |
+
cursor = collection.find()
|
| 169 |
|
| 170 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 171 |
+
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 172 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 173 |
+
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 174 |
+
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 175 |
+
load_display = raw_display[raw_display['Position'] != 'K']
|
| 176 |
+
fd_roo_raw = load_display.dropna(subset=['Median'])
|
| 177 |
|
| 178 |
+
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_id']))
|
| 179 |
|
| 180 |
+
collection = db["DK_DFS_Stacks"]
|
| 181 |
+
cursor = collection.find()
|
| 182 |
|
| 183 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 184 |
+
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
|
| 185 |
+
dk_stacks_raw = raw_display.copy()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
|
| 187 |
+
collection = db["FD_DFS_Stacks"]
|
| 188 |
+
cursor = collection.find()
|
| 189 |
|
| 190 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 191 |
+
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
|
| 192 |
+
fd_stacks_raw = raw_display.copy()
|
| 193 |
|
| 194 |
+
dk_sd_roo_raw = None
|
| 195 |
+
fd_sd_roo_raw = None
|
| 196 |
+
dk_sd_id_map = None
|
| 197 |
+
fd_sd_id_map = None
|
| 198 |
+
elif type_var == 'Showdown':
|
| 199 |
+
collection = db["DK_SD_NFL_ROO"]
|
| 200 |
+
cursor = collection.find()
|
| 201 |
|
| 202 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 203 |
+
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 204 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 205 |
+
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 206 |
+
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 207 |
+
# load_display = raw_display[raw_display['Position'] != 'K']
|
| 208 |
+
dk_sd_roo_raw = raw_display.dropna(subset=['Median'])
|
| 209 |
|
| 210 |
+
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_id']))
|
|
|
|
| 211 |
|
| 212 |
+
collection = db["FD_SD_NFL_ROO"]
|
| 213 |
+
cursor = collection.find()
|
|
|
|
| 214 |
|
| 215 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 216 |
+
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 217 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 218 |
+
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 219 |
+
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 220 |
+
# load_display = raw_display[raw_display['Position'] != 'K']
|
| 221 |
+
fd_sd_roo_raw = raw_display.dropna(subset=['Median'])
|
| 222 |
|
| 223 |
+
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_id']))
|
| 224 |
+
|
| 225 |
+
dk_roo_raw = None
|
| 226 |
+
fd_roo_raw = None
|
| 227 |
+
dk_id_map = None
|
| 228 |
+
fd_id_map = None
|
| 229 |
+
dk_stacks_raw = None
|
| 230 |
+
fd_stacks_raw = None
|
| 231 |
|
| 232 |
return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map
|
| 233 |
|
|
|
|
| 272 |
else:
|
| 273 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 274 |
raw_display = pd.DataFrame(list(cursor))
|
| 275 |
+
|
| 276 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 277 |
|
| 278 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 279 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
|
|
|
| 314 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 315 |
raw_display = pd.DataFrame(list(cursor))
|
| 316 |
|
| 317 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 318 |
+
|
| 319 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 320 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 321 |
# Map names
|
|
|
|
| 355 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 356 |
raw_display = pd.DataFrame(list(cursor))
|
| 357 |
|
| 358 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 359 |
+
|
| 360 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 361 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 362 |
# Map names
|
|
|
|
| 390 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 391 |
raw_display = pd.DataFrame(list(cursor))
|
| 392 |
|
| 393 |
+
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
|
| 394 |
+
|
| 395 |
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 396 |
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 397 |
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
|
|
|
| 443 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 444 |
raw_display = pd.DataFrame(list(cursor))
|
| 445 |
|
| 446 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 447 |
+
|
| 448 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 449 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 450 |
# Map names
|
|
|
|
| 484 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 485 |
raw_display = pd.DataFrame(list(cursor))
|
| 486 |
|
| 487 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 488 |
+
|
| 489 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 490 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 491 |
# Map names
|
|
|
|
| 525 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 526 |
raw_display = pd.DataFrame(list(cursor))
|
| 527 |
|
| 528 |
+
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'])
|
| 529 |
+
|
| 530 |
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 531 |
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 532 |
# Map names
|
|
|
|
| 561 |
cursor = collection.find().sort(prio_var, -1).limit(lineup_num)
|
| 562 |
raw_display = pd.DataFrame(list(cursor))
|
| 563 |
|
| 564 |
+
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
|
| 565 |
+
|
| 566 |
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
| 567 |
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']:
|
| 568 |
raw_display[column] = raw_display[column].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display[column])
|
|
|
|
| 593 |
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 594 |
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 595 |
|
| 596 |
+
app_load_reset_column, app_view_site_column, = st.columns([1, 9])
|
| 597 |
with app_load_reset_column:
|
| 598 |
if st.button("Load/Reset Data", key='reset_data_button'):
|
| 599 |
st.cache_data.clear()
|
| 600 |
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 601 |
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 602 |
+
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines('Regular')
|
| 603 |
dk_lineups = init_DK_lineups('Regular', 'Main Slate', 'proj', 50, dk_showdown_db_translation, 25000, [])
|
| 604 |
fd_lineups = init_FD_lineups('Regular', 'Main Slate', 'proj', 50, fd_showdown_db_translation, 25000, [])
|
| 605 |
for key in st.session_state.keys():
|
| 606 |
del st.session_state[key]
|
| 607 |
with app_view_site_column:
|
| 608 |
with st.container():
|
| 609 |
+
app_view_column, app_site_column, app_type_column = st.columns([3, 3, 3])
|
| 610 |
with app_view_column:
|
| 611 |
view_var = st.selectbox("Select view", ["Simple", "Advanced"], key='view_selectbox')
|
| 612 |
with app_site_column:
|
| 613 |
site_var = st.selectbox("What site do you want to view?", ('Draftkings', 'Fanduel'), key='site_selectbox')
|
| 614 |
+
with app_type_column:
|
| 615 |
+
type_var = st.selectbox("What type of data do you want to view?", ('Regular', 'Showdown'), key='type_selectbox')
|
| 616 |
|
| 617 |
selected_tab = st.segmented_control(
|
| 618 |
"Select Tab",
|
|
|
|
| 1051 |
if selected_tab == 'Stacks ROO':
|
| 1052 |
|
| 1053 |
print(st.session_state)
|
| 1054 |
+
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines(type_var)
|
| 1055 |
+
if type_var == 'Regular':
|
| 1056 |
+
t_stamp = f"Last Update: " + str(dk_roo_raw['timestamp'][0]) + f" CST"
|
| 1057 |
+
elif type_var == 'Showdown':
|
| 1058 |
+
t_stamp = f"Last Update: " + str(dk_sd_roo_raw['timestamp'][0]) + f" CST"
|
| 1059 |
with st.expander("Info and Filters"):
|
| 1060 |
st.info(t_stamp)
|
| 1061 |
with st.container():
|
|
|
|
| 1093 |
if selected_tab == 'Player ROO':
|
| 1094 |
|
| 1095 |
print(st.session_state)
|
| 1096 |
+
try:
|
| 1097 |
+
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines(type_var)
|
| 1098 |
+
except:
|
| 1099 |
+
st.error("No data found for this type of data, change the data type to either Regular or Showdown (located top right)")
|
| 1100 |
+
st.stop()
|
| 1101 |
+
if type_var == 'Regular':
|
| 1102 |
+
t_stamp = f"Last Update: " + str(dk_roo_raw['timestamp'][0]) + f" CST"
|
| 1103 |
+
elif type_var == 'Showdown':
|
| 1104 |
+
t_stamp = f"Last Update: " + str(dk_sd_roo_raw['timestamp'][0]) + f" CST"
|
| 1105 |
with st.expander("Info and Filters"):
|
| 1106 |
st.info(t_stamp)
|
| 1107 |
+
if type_var == 'Regular':
|
|
|
|
| 1108 |
slate_var2 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'Late Slate', 'Thurs-Mon Slate'), key='slate_var2_radio')
|
| 1109 |
+
elif type_var == 'Showdown':
|
| 1110 |
slate_var2 = st.radio("Which slate are you loading?", (slate_names_dk if site_var == 'Draftkings' else slate_names_fd), key='slate_var2_radio')
|
| 1111 |
if site_var == 'Draftkings':
|
| 1112 |
+
if type_var == 'Regular':
|
| 1113 |
raw_baselines = dk_roo_raw[dk_roo_raw['slate'] == str(slate_var2)]
|
| 1114 |
+
elif type_var == 'Showdown':
|
| 1115 |
raw_baselines = dk_sd_roo_raw[dk_sd_roo_raw['slate'] == str(slate_name_lookup_dk[slate_var2])]
|
| 1116 |
|
| 1117 |
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1118 |
elif site_var == 'Fanduel':
|
| 1119 |
+
if type_var == 'Regular':
|
| 1120 |
raw_baselines = fd_roo_raw[fd_roo_raw['slate'] == str(slate_var2)]
|
| 1121 |
+
elif type_var == 'Showdown':
|
| 1122 |
raw_baselines = fd_sd_roo_raw[fd_sd_roo_raw['slate'] == str(slate_name_lookup_fd[slate_var2])]
|
| 1123 |
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1124 |
|
|
|
|
| 1158 |
final_Proj = final_Proj[final_Proj['Salary'] >= sal_var2[0]]
|
| 1159 |
final_Proj = final_Proj[final_Proj['Salary'] <= sal_var2[1]]
|
| 1160 |
|
| 1161 |
+
if type_var == 'Regular':
|
| 1162 |
pm_export = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own']]
|
| 1163 |
pm_export['captain ownership'] = pm_export['Own'] / 6
|
| 1164 |
pm_export = pm_export.rename(columns={'Own': 'ownership', 'Median': 'median', 'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary'})
|
| 1165 |
+
elif type_var == 'Showdown':
|
| 1166 |
pm_export = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own']]
|
| 1167 |
pm_export['Salary'] = pm_export['Salary'] / 1.5
|
| 1168 |
pm_export = pm_export.rename(columns={'Own': 'ownership', 'Median': 'median', 'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'CPT_Own': 'captain ownership'})
|
|
|
|
| 1202 |
st.stop()
|
| 1203 |
|
| 1204 |
if selected_tab == 'Optimals':
|
| 1205 |
+
player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw, dk_sd_roo_raw, fd_sd_roo_raw, dk_id_map, fd_id_map, dk_sd_id_map, fd_sd_id_map = init_baselines(type_var)
|
| 1206 |
+
if type_var == 'Regular':
|
| 1207 |
+
t_stamp = f"Last Update: " + str(dk_roo_raw['timestamp'][0]) + f" CST"
|
| 1208 |
+
elif type_var == 'Showdown':
|
| 1209 |
+
t_stamp = f"Last Update: " + str(dk_sd_roo_raw['timestamp'][0]) + f" CST"
|
| 1210 |
st.header("Optimals")
|
| 1211 |
with st.expander("Info and Filters"):
|
| 1212 |
st.info("These filters will display various optimals in the table below to pick from. If you want to export the entire set of 10,000 optimals, hit the 'Prepare full data export' button. If you would like to apply the filters here to the 10,000 optimals before you export, use the 'Prepare full data export (Filter)' button.")
|
|
|
|
| 1218 |
lineup_num = st.number_input("How many lineups do you want to work with?", min_value=1000, max_value=50000, value=25000, step=100, key='lineup_download_var_input')
|
| 1219 |
|
| 1220 |
with optimals_site_col:
|
| 1221 |
+
if type_var == 'Regular':
|
|
|
|
| 1222 |
if site_var == 'Draftkings':
|
| 1223 |
raw_baselines = dk_roo_raw
|
| 1224 |
elif site_var == 'Fanduel':
|
| 1225 |
raw_baselines = fd_roo_raw
|
| 1226 |
+
elif type_var == 'Showdown':
|
| 1227 |
if site_var == 'Draftkings':
|
| 1228 |
raw_baselines = dk_sd_roo_raw
|
| 1229 |
elif site_var == 'Fanduel':
|
| 1230 |
raw_baselines = fd_sd_roo_raw
|
| 1231 |
if site_var == 'Draftkings':
|
| 1232 |
+
slate_var3 = st.radio("Which slate data are you loading?", (slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1233 |
elif site_var == 'Fanduel':
|
| 1234 |
+
slate_var3 = st.radio("Which slate data are you loading?", (slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1235 |
|
| 1236 |
with optimals_macro_col:
|
| 1237 |
lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1, key='lineup_num_var_input')
|
| 1238 |
player_var2 = st.multiselect('Query for lineups including:', options = raw_baselines['Player'].unique(), key='player_var2_multiselect', default=[])
|
| 1239 |
|
| 1240 |
+
if type_var == 'Regular':
|
| 1241 |
if site_var == 'Draftkings':
|
| 1242 |
+
dk_lineups = init_DK_lineups(type_var, slate_var3, prio_var, prio_mix, dk_showdown_db_translation, lineup_num, player_var2)
|
| 1243 |
elif site_var == 'Fanduel':
|
| 1244 |
+
fd_lineups = init_FD_lineups(type_var, slate_var3, prio_var, prio_mix, fd_showdown_db_translation, lineup_num, player_var2)
|
| 1245 |
+
elif type_var == 'Showdown':
|
| 1246 |
if site_var == 'Draftkings':
|
| 1247 |
+
dk_lineups = init_DK_lineups(type_var, slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_showdown_db_translation, lineup_num, player_var2)
|
| 1248 |
elif site_var == 'Fanduel':
|
| 1249 |
+
fd_lineups = init_FD_lineups(type_var, slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_showdown_db_translation, lineup_num, player_var2)
|
| 1250 |
|
| 1251 |
with optimals_salary_col:
|
| 1252 |
if site_var == 'Draftkings':
|
|
|
|
| 1265 |
|
| 1266 |
|
| 1267 |
if site_var == 'Draftkings':
|
| 1268 |
+
if type_var == 'Regular':
|
|
|
|
| 1269 |
ROO_slice = raw_baselines
|
| 1270 |
player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
|
| 1271 |
column_names = dk_columns
|
| 1272 |
+
elif type_var == 'Showdown':
|
| 1273 |
player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
|
| 1274 |
column_names = dk_sd_columns
|
| 1275 |
|
| 1276 |
|
| 1277 |
elif site_var == 'Fanduel':
|
| 1278 |
+
if type_var == 'Regular':
|
|
|
|
| 1279 |
ROO_slice = raw_baselines
|
| 1280 |
player_salaries = dict(zip(ROO_slice['Player'], ROO_slice['Salary']))
|
| 1281 |
column_names = fd_columns
|
| 1282 |
+
elif type_var == 'Showdown':
|
| 1283 |
player_salaries = dict(zip(raw_baselines['Player'], raw_baselines['Salary']))
|
| 1284 |
column_names = fd_sd_columns
|
| 1285 |
|
|
|
|
| 1289 |
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1290 |
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1291 |
if site_var == 'Draftkings':
|
| 1292 |
+
if type_var == 'Regular':
|
| 1293 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1294 |
for col_idx in map_columns:
|
| 1295 |
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
| 1296 |
+
elif type_var == 'Showdown':
|
| 1297 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1298 |
for col_idx in map_columns:
|
| 1299 |
data_export[col_idx] = data_export[col_idx].map(dk_sd_id_map)
|
| 1300 |
elif site_var == 'Fanduel':
|
| 1301 |
+
if type_var == 'Regular':
|
| 1302 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1303 |
for col_idx in map_columns:
|
| 1304 |
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
| 1305 |
+
elif type_var == 'Showdown':
|
| 1306 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1307 |
for col_idx in map_columns:
|
| 1308 |
data_export[col_idx] = data_export[col_idx].map(fd_sd_id_map)
|
|
|
|
| 1324 |
)
|
| 1325 |
with pm_opt_col:
|
| 1326 |
if site_var == 'Draftkings':
|
| 1327 |
+
if type_var == 'Regular':
|
| 1328 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1329 |
+
elif type_var == 'Showdown':
|
| 1330 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1331 |
elif site_var == 'Fanduel':
|
| 1332 |
+
if type_var == 'Regular':
|
| 1333 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1334 |
+
elif type_var == 'Showdown':
|
| 1335 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1336 |
st.download_button(
|
| 1337 |
label="Portfolio Manager Export (IDs)",
|
|
|
|
| 1342 |
)
|
| 1343 |
|
| 1344 |
if site_var == 'Draftkings':
|
| 1345 |
+
if type_var == 'Regular':
|
| 1346 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1347 |
+
elif type_var == 'Showdown':
|
| 1348 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1349 |
elif site_var == 'Fanduel':
|
| 1350 |
+
if type_var == 'Regular':
|
| 1351 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1352 |
+
elif type_var == 'Showdown':
|
| 1353 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1354 |
st.download_button(
|
| 1355 |
label="Portfolio Manager Export (Names)",
|
|
|
|
| 1363 |
name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1364 |
data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
|
| 1365 |
if site_var == 'Draftkings':
|
| 1366 |
+
if type_var == 'Regular':
|
| 1367 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1368 |
+
for col_idx in map_columns:
|
| 1369 |
+
data_export[col_idx] = data_export[col_idx].map(dk_id_map)
|
| 1370 |
+
elif type_var == 'Showdown':
|
| 1371 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1372 |
+
for col_idx in map_columns:
|
| 1373 |
+
data_export[col_idx] = data_export[col_idx].map(dk_sd_id_map)
|
| 1374 |
+
|
| 1375 |
elif site_var == 'Fanduel':
|
| 1376 |
+
if type_var == 'Regular':
|
| 1377 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1378 |
+
for col_idx in map_columns:
|
| 1379 |
+
data_export[col_idx] = data_export[col_idx].map(fd_id_map)
|
| 1380 |
+
elif type_var == 'Showdown':
|
| 1381 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1382 |
+
for col_idx in map_columns:
|
| 1383 |
+
data_export[col_idx] = data_export[col_idx].map(fd_sd_id_map)
|
| 1384 |
+
|
| 1385 |
data_export = data_export[data_export['salary'] >= salary_min_var]
|
| 1386 |
data_export = data_export[data_export['salary'] <= salary_max_var]
|
| 1387 |
data_export = data_export[data_export['Team_count'] >= min_stacks_var]
|
|
|
|
| 1410 |
)
|
| 1411 |
with pm_opt_col:
|
| 1412 |
if site_var == 'Draftkings':
|
| 1413 |
+
if type_var == 'Regular':
|
| 1414 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1415 |
+
elif type_var == 'Showdown':
|
| 1416 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1417 |
elif site_var == 'Fanduel':
|
| 1418 |
+
if type_var == 'Regular':
|
| 1419 |
data_export = data_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1420 |
+
elif type_var == 'Showdown':
|
| 1421 |
data_export = data_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1422 |
st.download_button(
|
| 1423 |
label="Portfolio Manager Export (IDs)",
|
|
|
|
| 1428 |
)
|
| 1429 |
|
| 1430 |
if site_var == 'Draftkings':
|
| 1431 |
+
if type_var == 'Regular':
|
| 1432 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1433 |
+
elif type_var == 'Showdown':
|
| 1434 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1435 |
elif site_var == 'Fanduel':
|
| 1436 |
+
if type_var == 'Regular':
|
| 1437 |
name_export = name_export.set_index('QB').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1438 |
+
elif type_var == 'Showdown':
|
| 1439 |
name_export = name_export.set_index('CPT').drop(columns=['salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own'], axis=1)
|
| 1440 |
st.download_button(
|
| 1441 |
label="Portfolio Manager Export (Names)",
|
|
|
|
| 1485 |
export_file = st.session_state.data_export_display.copy()
|
| 1486 |
name_export = st.session_state.data_export_display.copy()
|
| 1487 |
if site_var == 'Draftkings':
|
| 1488 |
+
if type_var == 'Regular':
|
| 1489 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1490 |
+
for col_idx in map_columns:
|
| 1491 |
+
export_file[col_idx] = export_file[col_idx].map(dk_id_map)
|
| 1492 |
+
elif type_var == 'Showdown':
|
| 1493 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1494 |
+
for col_idx in map_columns:
|
| 1495 |
+
export_file[col_idx] = export_file[col_idx].map(dk_sd_id_map)
|
| 1496 |
elif site_var == 'Fanduel':
|
| 1497 |
+
if type_var == 'Regular':
|
| 1498 |
map_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']
|
| 1499 |
+
for col_idx in map_columns:
|
| 1500 |
+
export_file[col_idx] = export_file[col_idx].map(fd_id_map)
|
| 1501 |
+
elif type_var == 'Showdown':
|
| 1502 |
map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 1503 |
+
for col_idx in map_columns:
|
| 1504 |
+
export_file[col_idx] = export_file[col_idx].map(fd_sd_id_map)
|
| 1505 |
|
| 1506 |
with st.container():
|
| 1507 |
if st.button("Reset Optimals", key='reset_optimals_button'):
|
|
|
|
| 1529 |
)
|
| 1530 |
|
| 1531 |
with st.container():
|
| 1532 |
+
if type_var == 'Regular':
|
| 1533 |
if 'working_seed' in st.session_state:
|
| 1534 |
# Create a new dataframe with summary statistics
|
| 1535 |
if site_var == 'Draftkings':
|
|
|
|
| 1576 |
np.std(st.session_state.working_seed[:,15])
|
| 1577 |
]
|
| 1578 |
})
|
| 1579 |
+
elif type_var == 'Showdown':
|
| 1580 |
if 'working_seed' in st.session_state:
|
| 1581 |
# Create a new dataframe with summary statistics
|
| 1582 |
if site_var == 'Draftkings':
|
|
|
|
| 1640 |
with display_freq_tab:
|
| 1641 |
if 'data_export_display' in st.session_state:
|
| 1642 |
if site_var == 'Draftkings':
|
| 1643 |
+
if type_var == 'Regular':
|
| 1644 |
player_columns = st.session_state.data_export_display.iloc[:, :9]
|
| 1645 |
+
elif type_var == 'Showdown':
|
| 1646 |
player_columns = st.session_state.data_export_display.iloc[:, :6]
|
| 1647 |
elif site_var == 'Fanduel':
|
| 1648 |
+
if type_var == 'Regular':
|
| 1649 |
player_columns = st.session_state.data_export_display.iloc[:, :9]
|
| 1650 |
+
elif type_var == 'Showdown':
|
| 1651 |
player_columns = st.session_state.data_export_display.iloc[:, :6]
|
| 1652 |
|
| 1653 |
# Flatten the DataFrame and count unique values
|
|
|
|
| 1683 |
with seed_frame_freq_tab:
|
| 1684 |
if 'working_seed' in st.session_state:
|
| 1685 |
if site_var == 'Draftkings':
|
| 1686 |
+
if type_var == 'Regular':
|
| 1687 |
player_columns = st.session_state.working_seed[:, :9]
|
| 1688 |
+
elif type_var == 'Showdown':
|
| 1689 |
player_columns = st.session_state.working_seed[:, :6]
|
| 1690 |
elif site_var == 'Fanduel':
|
| 1691 |
+
if type_var == 'Regular':
|
| 1692 |
player_columns = st.session_state.working_seed[:, :9]
|
| 1693 |
+
elif type_var == 'Showdown':
|
| 1694 |
player_columns = st.session_state.working_seed[:, :6]
|
| 1695 |
|
| 1696 |
# Flatten the DataFrame and count unique values
|