James McCool commited on
Commit
64db329
·
1 Parent(s): 2e3b8fd

Refactor position group selection in UI and update data filtering logic. Added functionality to filter by specific positions and improved team selection interface. Ensured unique player entries in the display.

Browse files
Files changed (1) hide show
  1. app.py +22 -11
app.py CHANGED
@@ -26,6 +26,7 @@ player_roo_format = {'Top_finish': '{:.2%}','Top_5_finish': '{:.2%}', 'Top_10_fi
26
  dk_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
27
  fd_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
28
 
 
29
  @st.cache_resource(ttl = 60)
30
  def init_baselines():
31
  collection = db["Player_Range_Of_Outcomes"]
@@ -156,7 +157,7 @@ def init_FD_lineups(type_var,slate_var):
156
 
157
  raw_display = pd.DataFrame(list(cursor))
158
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
159
- dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
160
  # Map names
161
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
162
  elif slate_var == 'Secondary':
@@ -170,7 +171,7 @@ def init_FD_lineups(type_var,slate_var):
170
 
171
  raw_display = pd.DataFrame(list(cursor))
172
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
173
- dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
174
  # Map names
175
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
176
  elif slate_var == 'Auxiliary':
@@ -184,7 +185,7 @@ def init_FD_lineups(type_var,slate_var):
184
 
185
  raw_display = pd.DataFrame(list(cursor))
186
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
187
- dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
188
  # Map names
189
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
190
 
@@ -272,33 +273,38 @@ with tab2:
272
  with st.container():
273
  slate_type_var2 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var2')
274
  slate_var2 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var2')
275
- pos_var2 = st.radio("Which position group would you like to view?", ('All', 'Pitchers', 'Hitters'), key='pos_var2')
276
  team_var2 = st.selectbox("Which team would you like to view?", ['All', 'Specific'], key='team_var2')
277
  if team_var2 == 'Specific':
278
- team_select2 = st.multiselect("Which team would you like to view?", roo_data['Team'].unique(), key='team_select2')
279
  else:
280
  team_select2 = None
 
 
 
 
 
281
  if slate_type_var2 == 'Regular':
282
  if site_var == 'Draftkings':
283
 
284
  player_roo_raw = dk_roo.copy()
285
 
286
- if pos_var2 == 'All':
287
  pass
288
- elif pos_var2 == 'Pitchers':
289
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Pitchers']
290
- elif pos_var2 == 'Hitters':
291
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Hitters']
292
 
293
  elif site_var == 'Fanduel':
294
 
295
  player_roo_raw = fd_roo.copy()
296
 
297
- if pos_var2 == 'All':
298
  pass
299
- elif pos_var2 == 'Pitchers':
300
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Pitchers']
301
- elif pos_var2 == 'Hitters':
302
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Hitters']
303
 
304
  if slate_var2 == 'Main':
@@ -317,6 +323,9 @@ with tab2:
317
 
318
  if team_select2:
319
  player_roo_raw = player_roo_raw[player_roo_raw['Team'].isin(team_select2)]
 
 
 
320
 
321
  player_roo_disp = player_roo_raw
322
 
@@ -324,6 +333,8 @@ with tab2:
324
  player_roo_disp = player_roo_disp.drop(columns=['Site', 'Slate', 'pos_group', 'timestamp', 'player_ID'])
325
  elif slate_type_var2 == 'Showdown':
326
  player_roo_disp = player_roo_disp.drop(columns=['site', 'slate', 'version', 'timestamp'])
 
 
327
 
328
  if view_var == "Simple":
329
  try:
 
26
  dk_columns = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
27
  fd_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
28
 
29
+
30
  @st.cache_resource(ttl = 60)
31
  def init_baselines():
32
  collection = db["Player_Range_Of_Outcomes"]
 
157
 
158
  raw_display = pd.DataFrame(list(cursor))
159
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
160
+ dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
161
  # Map names
162
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
163
  elif slate_var == 'Secondary':
 
171
 
172
  raw_display = pd.DataFrame(list(cursor))
173
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
174
+ dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
175
  # Map names
176
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
177
  elif slate_var == 'Auxiliary':
 
185
 
186
  raw_display = pd.DataFrame(list(cursor))
187
  raw_display = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
188
+ dict_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL']
189
  # Map names
190
  raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
191
 
 
273
  with st.container():
274
  slate_type_var2 = st.radio("Which slate type are you loading?", ('Regular', 'Showdown'), key='slate_type_var2')
275
  slate_var2 = st.radio("Which slate data are you loading?", ('Main', 'Secondary', 'Auxiliary'), key='slate_var2')
276
+ group_var2 = st.radio("Which position group would you like to view?", ('All', 'Pitchers', 'Hitters'), key='group_var2')
277
  team_var2 = st.selectbox("Which team would you like to view?", ['All', 'Specific'], key='team_var2')
278
  if team_var2 == 'Specific':
279
+ team_select2 = st.multiselect("Select your team(s)", roo_data['Team'].unique(), key='team_select2')
280
  else:
281
  team_select2 = None
282
+ pos_var2 = st.selectbox("Which position(s) would you like to view?", ['All', 'Specific'], key='pos_var2')
283
+ if pos_var2 == 'Specific':
284
+ pos_select2 = st.multiselect("Select your position(s)", roo_data['Position'].unique(), key='pos_select2')
285
+ else:
286
+ pos_select2 = None
287
  if slate_type_var2 == 'Regular':
288
  if site_var == 'Draftkings':
289
 
290
  player_roo_raw = dk_roo.copy()
291
 
292
+ if group_var2 == 'All':
293
  pass
294
+ elif group_var2 == 'Pitchers':
295
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Pitchers']
296
+ elif group_var2 == 'Hitters':
297
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Hitters']
298
 
299
  elif site_var == 'Fanduel':
300
 
301
  player_roo_raw = fd_roo.copy()
302
 
303
+ if group_var2 == 'All':
304
  pass
305
+ elif group_var2 == 'Pitchers':
306
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Pitchers']
307
+ elif group_var2 == 'Hitters':
308
  player_roo_raw = player_roo_raw[player_roo_raw['pos_group'] == 'Hitters']
309
 
310
  if slate_var2 == 'Main':
 
323
 
324
  if team_select2:
325
  player_roo_raw = player_roo_raw[player_roo_raw['Team'].isin(team_select2)]
326
+ if pos_select2:
327
+ position_mask = player_roo_raw['Position'].apply(lambda x: any(pos in x for pos in pos_select2))
328
+ player_roo_raw = player_roo_raw[position_mask]
329
 
330
  player_roo_disp = player_roo_raw
331
 
 
333
  player_roo_disp = player_roo_disp.drop(columns=['Site', 'Slate', 'pos_group', 'timestamp', 'player_ID'])
334
  elif slate_type_var2 == 'Showdown':
335
  player_roo_disp = player_roo_disp.drop(columns=['site', 'slate', 'version', 'timestamp'])
336
+
337
+ player_roo_disp = player_roo_disp.drop_duplicates(subset=['Player'])
338
 
339
  if view_var == "Simple":
340
  try: