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
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 |
-
|
| 1279 |
-
|
| 1280 |
-
|
| 1281 |
-
|
| 1282 |
-
|
| 1283 |
-
|
| 1284 |
-
|
| 1285 |
-
|
| 1286 |
-
|
| 1287 |
-
|
| 1288 |
-
|
| 1289 |
-
|
| 1290 |
-
|
| 1291 |
-
|
| 1292 |
-
|
| 1293 |
-
|
| 1294 |
-
|
| 1295 |
-
|
| 1296 |
-
|
| 1297 |
-
|
| 1298 |
-
|
| 1299 |
-
|
| 1300 |
-
|
| 1301 |
-
|
| 1302 |
-
|
| 1303 |
-
|
| 1304 |
-
|
| 1305 |
-
|
| 1306 |
-
|
| 1307 |
-
|
| 1308 |
-
|
| 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
|