Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
41bf9e3
1
Parent(s):
38b9c72
Refactor player data handling in Streamlit app; removed 'version' column from display and improved QB positioning in combinations for stack finder functionality.
Browse files- src/streamlit_app.py +16 -9
src/streamlit_app.py
CHANGED
|
@@ -87,14 +87,14 @@ def init_baselines():
|
|
| 87 |
cursor = collection.find()
|
| 88 |
|
| 89 |
raw_display = pd.DataFrame(list(cursor))
|
| 90 |
-
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate'
|
| 91 |
dk_stacks_raw = raw_display.copy()
|
| 92 |
|
| 93 |
collection = db["FD_DFS_Stacks"]
|
| 94 |
cursor = collection.find()
|
| 95 |
|
| 96 |
raw_display = pd.DataFrame(list(cursor))
|
| 97 |
-
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate'
|
| 98 |
fd_stacks_raw = raw_display.copy()
|
| 99 |
|
| 100 |
return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw
|
|
@@ -224,6 +224,7 @@ if selected_tab == 'Stack Finder':
|
|
| 224 |
|
| 225 |
# Create a position dictionary mapping players to their eligible positions
|
| 226 |
pos_dict = dict(zip(raw_baselines.Player, raw_baselines.Position))
|
|
|
|
| 227 |
|
| 228 |
def is_valid_combination(combo):
|
| 229 |
# Count positions in this combination
|
|
@@ -252,17 +253,22 @@ if selected_tab == 'Stack Finder':
|
|
| 252 |
working_baselines = working_baselines[working_baselines['Position'] != 'DST']
|
| 253 |
working_baselines = working_baselines[working_baselines['Position'] != 'K']
|
| 254 |
qb_var = qb_dict[cur_team]
|
| 255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 256 |
|
| 257 |
comb = combinations(order_list, stack_size)
|
| 258 |
|
| 259 |
for i in list(comb):
|
| 260 |
-
if qb_var in i:
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
|
|
|
| 266 |
|
| 267 |
comb_DF = pd.DataFrame(comb_list)
|
| 268 |
|
|
@@ -416,6 +422,7 @@ if selected_tab == 'Stack Finder':
|
|
| 416 |
cut_var += 1
|
| 417 |
except:
|
| 418 |
cut_var += 1
|
|
|
|
| 419 |
st.session_state['display_frame'] = comb_DF
|
| 420 |
if 'display_frame' in st.session_state:
|
| 421 |
st.dataframe(st.session_state['display_frame'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), hide_index=True, use_container_width = True)
|
|
|
|
| 87 |
cursor = collection.find()
|
| 88 |
|
| 89 |
raw_display = pd.DataFrame(list(cursor))
|
| 90 |
+
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
|
| 91 |
dk_stacks_raw = raw_display.copy()
|
| 92 |
|
| 93 |
collection = db["FD_DFS_Stacks"]
|
| 94 |
cursor = collection.find()
|
| 95 |
|
| 96 |
raw_display = pd.DataFrame(list(cursor))
|
| 97 |
+
raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
|
| 98 |
fd_stacks_raw = raw_display.copy()
|
| 99 |
|
| 100 |
return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw
|
|
|
|
| 224 |
|
| 225 |
# Create a position dictionary mapping players to their eligible positions
|
| 226 |
pos_dict = dict(zip(raw_baselines.Player, raw_baselines.Position))
|
| 227 |
+
pos_reverse_dict = dict(zip(raw_baselines.Position, raw_baselines.Player))
|
| 228 |
|
| 229 |
def is_valid_combination(combo):
|
| 230 |
# Count positions in this combination
|
|
|
|
| 253 |
working_baselines = working_baselines[working_baselines['Position'] != 'DST']
|
| 254 |
working_baselines = working_baselines[working_baselines['Position'] != 'K']
|
| 255 |
qb_var = qb_dict[cur_team]
|
| 256 |
+
|
| 257 |
+
# Create order_list with QBs first to ensure they appear in first column
|
| 258 |
+
qb_players = working_baselines[working_baselines['Position'] == 'QB']['Player'].unique()
|
| 259 |
+
other_players = working_baselines[working_baselines['Position'] != 'QB']['Player'].unique()
|
| 260 |
+
order_list = list(qb_players) + list(other_players)
|
| 261 |
|
| 262 |
comb = combinations(order_list, stack_size)
|
| 263 |
|
| 264 |
for i in list(comb):
|
| 265 |
+
if qb_var in i and is_valid_combination(i):
|
| 266 |
+
# Ensure QB is in first position
|
| 267 |
+
combo_list = list(i)
|
| 268 |
+
if qb_var in combo_list:
|
| 269 |
+
qb_index = combo_list.index(qb_var)
|
| 270 |
+
combo_list[0], combo_list[qb_index] = combo_list[qb_index], combo_list[0]
|
| 271 |
+
comb_list.append(tuple(combo_list))
|
| 272 |
|
| 273 |
comb_DF = pd.DataFrame(comb_list)
|
| 274 |
|
|
|
|
| 422 |
cut_var += 1
|
| 423 |
except:
|
| 424 |
cut_var += 1
|
| 425 |
+
|
| 426 |
st.session_state['display_frame'] = comb_DF
|
| 427 |
if 'display_frame' in st.session_state:
|
| 428 |
st.dataframe(st.session_state['display_frame'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), hide_index=True, use_container_width = True)
|