James McCool
commited on
Commit
·
360e14d
1
Parent(s):
8a6ecff
Update player data processing in Streamlit app to include 'exFPTS' in dataframes and adjust column selections for improved accuracy and consistency in lineup generation.
Browse files- src/streamlit_app.py +14 -16
src/streamlit_app.py
CHANGED
|
@@ -122,7 +122,7 @@ def init_handbuilder_data(site_var):
|
|
| 122 |
cursor = collection.find()
|
| 123 |
raw_display = pd.DataFrame(list(cursor))
|
| 124 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 125 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 126 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 127 |
load_display = raw_display[raw_display['Position'] != 'K']
|
| 128 |
load_display['Player'] = load_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(load_display['Player'])
|
|
@@ -132,7 +132,7 @@ def init_handbuilder_data(site_var):
|
|
| 132 |
cursor = collection.find()
|
| 133 |
raw_display = pd.DataFrame(list(cursor))
|
| 134 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 135 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 136 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 137 |
load_display = raw_display[raw_display['Position'] != 'K']
|
| 138 |
load_display['Player'] = load_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(load_display['Player'])
|
|
@@ -155,7 +155,7 @@ def init_baselines():
|
|
| 155 |
|
| 156 |
raw_display = pd.DataFrame(list(cursor))
|
| 157 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 158 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 159 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 160 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 161 |
load_display = raw_display[raw_display['Position'] != 'K']
|
|
@@ -168,7 +168,7 @@ def init_baselines():
|
|
| 168 |
|
| 169 |
raw_display = pd.DataFrame(list(cursor))
|
| 170 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 171 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 172 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 173 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 174 |
load_display = raw_display[raw_display['Position'] != 'K']
|
|
@@ -181,7 +181,7 @@ def init_baselines():
|
|
| 181 |
|
| 182 |
raw_display = pd.DataFrame(list(cursor))
|
| 183 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 184 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 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']
|
|
@@ -194,7 +194,7 @@ def init_baselines():
|
|
| 194 |
|
| 195 |
raw_display = pd.DataFrame(list(cursor))
|
| 196 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 197 |
-
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 198 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 199 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 200 |
# load_display = raw_display[raw_display['Position'] != 'K']
|
|
@@ -206,14 +206,14 @@ def init_baselines():
|
|
| 206 |
cursor = collection.find()
|
| 207 |
|
| 208 |
raw_display = pd.DataFrame(list(cursor))
|
| 209 |
-
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'
|
| 210 |
dk_stacks_raw = raw_display.copy()
|
| 211 |
|
| 212 |
collection = db["FD_DFS_Stacks"]
|
| 213 |
cursor = collection.find()
|
| 214 |
|
| 215 |
raw_display = pd.DataFrame(list(cursor))
|
| 216 |
-
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'
|
| 217 |
fd_stacks_raw = raw_display.copy()
|
| 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
|
|
@@ -571,8 +571,8 @@ with app_load_reset_column:
|
|
| 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',
|
| 575 |
-
fd_lineups = init_FD_lineups('Regular',
|
| 576 |
for key in st.session_state.keys():
|
| 577 |
del st.session_state[key]
|
| 578 |
with app_view_site_column:
|
|
@@ -1029,12 +1029,10 @@ if selected_tab == 'Stacks ROO':
|
|
| 1029 |
split_var1 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var1_radio')
|
| 1030 |
if site_var == 'Draftkings':
|
| 1031 |
raw_baselines = dk_stacks_raw[dk_stacks_raw['slate'] == str(slate_var1)]
|
| 1032 |
-
raw_baselines = raw_baselines[
|
| 1033 |
-
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1034 |
elif site_var == 'Fanduel':
|
| 1035 |
raw_baselines = fd_stacks_raw[fd_stacks_raw['slate'] == str(slate_var1)]
|
| 1036 |
-
raw_baselines = raw_baselines[
|
| 1037 |
-
raw_baselines = raw_baselines.iloc[:,:-2]
|
| 1038 |
if split_var1 == 'Specific Games':
|
| 1039 |
team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1_multiselect')
|
| 1040 |
elif split_var1 == 'Full Slate Run':
|
|
@@ -1044,7 +1042,7 @@ if selected_tab == 'Stacks ROO':
|
|
| 1044 |
if view_var == 'Simple':
|
| 1045 |
st.session_state['final_stacks'] = st.session_state['final_stacks'][['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Salary', 'Median', '60+%', '4x%']]
|
| 1046 |
elif view_var == 'Advanced':
|
| 1047 |
-
st.session_state['final_stacks'] = st.session_state['final_stacks'][['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish',
|
| 1048 |
'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX']]
|
| 1049 |
with st.container():
|
| 1050 |
st.dataframe(st.session_state['final_stacks'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, key='stacks_dataframe')
|
|
@@ -1149,7 +1147,7 @@ if selected_tab == 'Player ROO':
|
|
| 1149 |
final_Proj = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Top_5_finish', '4x%']]
|
| 1150 |
st.session_state['disp_proj'] = final_Proj.set_index('Player')
|
| 1151 |
elif view_var == 'Advanced':
|
| 1152 |
-
final_Proj = final_Proj[['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']]
|
| 1153 |
st.session_state['disp_proj'] = final_Proj.set_index('Player')
|
| 1154 |
with st.container():
|
| 1155 |
st.dataframe(st.session_state['disp_proj'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, key='player_dataframe')
|
|
|
|
| 122 |
cursor = collection.find()
|
| 123 |
raw_display = pd.DataFrame(list(cursor))
|
| 124 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 125 |
+
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%',
|
| 126 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 127 |
load_display = raw_display[raw_display['Position'] != 'K']
|
| 128 |
load_display['Player'] = load_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(load_display['Player'])
|
|
|
|
| 132 |
cursor = collection.find()
|
| 133 |
raw_display = pd.DataFrame(list(cursor))
|
| 134 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 135 |
+
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%',
|
| 136 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 137 |
load_display = raw_display[raw_display['Position'] != 'K']
|
| 138 |
load_display['Player'] = load_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(load_display['Player'])
|
|
|
|
| 155 |
|
| 156 |
raw_display = pd.DataFrame(list(cursor))
|
| 157 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 158 |
+
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%',
|
| 159 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 160 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 161 |
load_display = raw_display[raw_display['Position'] != 'K']
|
|
|
|
| 168 |
|
| 169 |
raw_display = pd.DataFrame(list(cursor))
|
| 170 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 171 |
+
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%',
|
| 172 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 173 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 174 |
load_display = raw_display[raw_display['Position'] != 'K']
|
|
|
|
| 181 |
|
| 182 |
raw_display = pd.DataFrame(list(cursor))
|
| 183 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 184 |
+
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%',
|
| 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']
|
|
|
|
| 194 |
|
| 195 |
raw_display = pd.DataFrame(list(cursor))
|
| 196 |
raw_display = raw_display.rename(columns={'player_ID': 'player_id'})
|
| 197 |
+
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%',
|
| 198 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 199 |
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_team_names, right_name_teams)), na_action='ignore').fillna(raw_display['Player'])
|
| 200 |
# load_display = raw_display[raw_display['Position'] != 'K']
|
|
|
|
| 206 |
cursor = collection.find()
|
| 207 |
|
| 208 |
raw_display = pd.DataFrame(list(cursor))
|
| 209 |
+
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']]
|
| 210 |
dk_stacks_raw = raw_display.copy()
|
| 211 |
|
| 212 |
collection = db["FD_DFS_Stacks"]
|
| 213 |
cursor = collection.find()
|
| 214 |
|
| 215 |
raw_display = pd.DataFrame(list(cursor))
|
| 216 |
+
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']]
|
| 217 |
fd_stacks_raw = raw_display.copy()
|
| 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
|
|
|
|
| 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:
|
|
|
|
| 1029 |
split_var1 = st.radio("Would you like to view the whole slate or just specific games?", ('Full Slate Run', 'Specific Games'), key='split_var1_radio')
|
| 1030 |
if site_var == 'Draftkings':
|
| 1031 |
raw_baselines = dk_stacks_raw[dk_stacks_raw['slate'] == str(slate_var1)]
|
| 1032 |
+
raw_baselines = raw_baselines.iloc[:,:-1]
|
|
|
|
| 1033 |
elif site_var == 'Fanduel':
|
| 1034 |
raw_baselines = fd_stacks_raw[fd_stacks_raw['slate'] == str(slate_var1)]
|
| 1035 |
+
raw_baselines = raw_baselines.iloc[:,:-1]
|
|
|
|
| 1036 |
if split_var1 == 'Specific Games':
|
| 1037 |
team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1_multiselect')
|
| 1038 |
elif split_var1 == 'Full Slate Run':
|
|
|
|
| 1042 |
if view_var == 'Simple':
|
| 1043 |
st.session_state['final_stacks'] = st.session_state['final_stacks'][['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Salary', 'Median', '60+%', '4x%']]
|
| 1044 |
elif view_var == 'Advanced':
|
| 1045 |
+
st.session_state['final_stacks'] = st.session_state['final_stacks'][['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'exFPTS', 'Ceiling', 'Top_finish', 'Top_5_finish',
|
| 1046 |
'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX']]
|
| 1047 |
with st.container():
|
| 1048 |
st.dataframe(st.session_state['final_stacks'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, key='stacks_dataframe')
|
|
|
|
| 1147 |
final_Proj = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Median', 'Top_5_finish', '4x%']]
|
| 1148 |
st.session_state['disp_proj'] = final_Proj.set_index('Player')
|
| 1149 |
elif view_var == 'Advanced':
|
| 1150 |
+
final_Proj = final_Proj[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'exFPTS', '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']]
|
| 1151 |
st.session_state['disp_proj'] = final_Proj.set_index('Player')
|
| 1152 |
with st.container():
|
| 1153 |
st.dataframe(st.session_state['disp_proj'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), height=750, use_container_width = True, key='player_dataframe')
|