James McCool commited on
Commit
9682eff
·
1 Parent(s): 72c43b1

Refactor player statistics calculation in exposure_spread function to handle GOLF sport-specific logic, ensuring accurate lineup counts and averages for players across Captain and FLEX positions.

Browse files
Files changed (1) hide show
  1. app.py +50 -32
app.py CHANGED
@@ -1275,38 +1275,56 @@ with tab2:
1275
  st.session_state['player_summary'] = st.session_state['origin_player_exposures']
1276
  else:
1277
  if type_var == 'Showdown':
1278
- for player in player_names:
1279
- # Create mask for lineups where this player is Captain (first column)
1280
- cpt_mask = display_frame[player_columns[0]] == player
1281
-
1282
- if cpt_mask.any():
1283
- player_stats.append({
1284
- 'Player': f"{player} (CPT)",
1285
- 'Lineup Count': cpt_mask.sum(),
1286
- 'Exposure': cpt_mask.sum() / len(display_frame),
1287
- 'Avg Median': display_frame[cpt_mask]['median'].mean(),
1288
- 'Avg Own': display_frame[cpt_mask]['Own'].mean(),
1289
- 'Avg Dupes': display_frame[cpt_mask]['Dupes'].mean(),
1290
- 'Avg Finish %': display_frame[cpt_mask]['Finish_percentile'].mean(),
1291
- 'Avg Lineup Edge': display_frame[cpt_mask]['Lineup Edge'].mean(),
1292
- })
1293
-
1294
- # Create mask for lineups where this player is FLEX (other columns)
1295
- flex_mask = display_frame[player_columns[1:]].apply(
1296
- lambda row: player in list(row), axis=1
1297
- )
1298
-
1299
- if flex_mask.any():
1300
- player_stats.append({
1301
- 'Player': f"{player} (FLEX)",
1302
- 'Lineup Count': flex_mask.sum(),
1303
- 'Exposure': flex_mask.sum() / len(display_frame),
1304
- 'Avg Median': display_frame[flex_mask]['median'].mean(),
1305
- 'Avg Own': display_frame[flex_mask]['Own'].mean(),
1306
- 'Avg Dupes': display_frame[flex_mask]['Dupes'].mean(),
1307
- 'Avg Finish %': display_frame[flex_mask]['Finish_percentile'].mean(),
1308
- 'Avg Lineup Edge': display_frame[flex_mask]['Lineup Edge'].mean(),
1309
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1310
  else:
1311
  if sport_var == 'CS2':
1312
  # Handle Captain positions
 
1275
  st.session_state['player_summary'] = st.session_state['origin_player_exposures']
1276
  else:
1277
  if type_var == 'Showdown':
1278
+ if sport_var == 'GOLF':
1279
+ for player in player_names:
1280
+ player_mask = display_frame[player_columns].apply(
1281
+ lambda row: player in list(row), axis=1
1282
+ )
1283
+
1284
+ if player_mask.any():
1285
+ player_stats.append({
1286
+ 'Player': player,
1287
+ 'Lineup Count': player_mask.sum(),
1288
+ 'Exposure': player_mask.sum() / len(display_frame),
1289
+ 'Avg Median': display_frame[player_mask]['median'].mean(),
1290
+ 'Avg Own': display_frame[player_mask]['Own'].mean(),
1291
+ 'Avg Dupes': display_frame[player_mask]['Dupes'].mean(),
1292
+ 'Avg Finish %': display_frame[player_mask]['Finish_percentile'].mean(),
1293
+ 'Avg Lineup Edge': display_frame[player_mask]['Lineup Edge'].mean(),
1294
+ })
1295
+ else:
1296
+ for player in player_names:
1297
+ # Create mask for lineups where this player is Captain (first column)
1298
+ cpt_mask = display_frame[player_columns[0]] == player
1299
+
1300
+ if cpt_mask.any():
1301
+ player_stats.append({
1302
+ 'Player': f"{player} (CPT)",
1303
+ 'Lineup Count': cpt_mask.sum(),
1304
+ 'Exposure': cpt_mask.sum() / len(display_frame),
1305
+ 'Avg Median': display_frame[cpt_mask]['median'].mean(),
1306
+ 'Avg Own': display_frame[cpt_mask]['Own'].mean(),
1307
+ 'Avg Dupes': display_frame[cpt_mask]['Dupes'].mean(),
1308
+ 'Avg Finish %': display_frame[cpt_mask]['Finish_percentile'].mean(),
1309
+ 'Avg Lineup Edge': display_frame[cpt_mask]['Lineup Edge'].mean(),
1310
+ })
1311
+
1312
+ # Create mask for lineups where this player is FLEX (other columns)
1313
+ flex_mask = display_frame[player_columns[1:]].apply(
1314
+ lambda row: player in list(row), axis=1
1315
+ )
1316
+
1317
+ if flex_mask.any():
1318
+ player_stats.append({
1319
+ 'Player': f"{player} (FLEX)",
1320
+ 'Lineup Count': flex_mask.sum(),
1321
+ 'Exposure': flex_mask.sum() / len(display_frame),
1322
+ 'Avg Median': display_frame[flex_mask]['median'].mean(),
1323
+ 'Avg Own': display_frame[flex_mask]['Own'].mean(),
1324
+ 'Avg Dupes': display_frame[flex_mask]['Dupes'].mean(),
1325
+ 'Avg Finish %': display_frame[flex_mask]['Finish_percentile'].mean(),
1326
+ 'Avg Lineup Edge': display_frame[flex_mask]['Lineup Edge'].mean(),
1327
+ })
1328
  else:
1329
  if sport_var == 'CS2':
1330
  # Handle Captain positions