James McCool
commited on
Commit
·
69a388c
1
Parent(s):
9803c42
Refactor stacking logic in 'app.py' by replacing hardcoded exclusions with a dynamic stack column dictionary for various sports, improving maintainability and clarity in player stacking calculations.
Browse files
app.py
CHANGED
|
@@ -30,7 +30,13 @@ from global_func.reassess_edge import reassess_edge
|
|
| 30 |
|
| 31 |
freq_format = {'Finish_percentile': '{:.2%}', 'Lineup Edge': '{:.2%}', 'Win%': '{:.2%}'}
|
| 32 |
stacking_sports = ['MLB', 'NHL', 'NFL', 'LOL', 'NCAAF']
|
| 33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
player_wrong_names_mlb = ['Enrique Hernandez', 'Joseph Cantillo', 'Mike Soroka', 'Jakob Bauers', 'Temi Fágbénlé']
|
| 35 |
player_right_names_mlb = ['Kike Hernandez', 'Joey Cantillo', 'Michael Soroka', 'Jake Bauers', 'Temi Fagbenle']
|
| 36 |
|
|
@@ -441,22 +447,21 @@ if selected_tab == 'Data Load':
|
|
| 441 |
# Update projections with matched names
|
| 442 |
projections['player_names'] = projections['player_names'].map(lambda x: projections_match_dict.get(x, x))
|
| 443 |
st.session_state['projections_df'] = projections
|
| 444 |
-
st.session_state['stack_columns'] = [col for col in st.session_state['portfolio'].columns if col not in exclude_stacks]
|
| 445 |
|
| 446 |
if sport_var in stacking_sports:
|
| 447 |
team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
|
| 448 |
st.session_state['portfolio']['Stack'] = st.session_state['portfolio'].apply(
|
| 449 |
lambda row: Counter(
|
| 450 |
-
team_dict.get(player, '') for player in row[
|
| 451 |
if team_dict.get(player, '') != ''
|
| 452 |
-
).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[
|
| 453 |
axis=1
|
| 454 |
)
|
| 455 |
st.session_state['portfolio']['Size'] = st.session_state['portfolio'].apply(
|
| 456 |
lambda row: Counter(
|
| 457 |
-
team_dict.get(player, '') for player in row[
|
| 458 |
if team_dict.get(player, '') != ''
|
| 459 |
-
).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[
|
| 460 |
axis=1
|
| 461 |
)
|
| 462 |
st.session_state['stack_dict'] = dict(zip(st.session_state['portfolio'].index, st.session_state['portfolio']['Stack']))
|
|
|
|
| 30 |
|
| 31 |
freq_format = {'Finish_percentile': '{:.2%}', 'Lineup Edge': '{:.2%}', 'Win%': '{:.2%}'}
|
| 32 |
stacking_sports = ['MLB', 'NHL', 'NFL', 'LOL', 'NCAAF']
|
| 33 |
+
stack_column_dict = {
|
| 34 |
+
'MLB': ['C', 'C/1B', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 35 |
+
'NHL': ['C', 'W', 'D'],
|
| 36 |
+
'NFL': ['QB', 'WR1', 'WR2', 'WR3', 'FLEX'],
|
| 37 |
+
'LOL': ['TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 38 |
+
'NCAAF': ['QB', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 39 |
+
}
|
| 40 |
player_wrong_names_mlb = ['Enrique Hernandez', 'Joseph Cantillo', 'Mike Soroka', 'Jakob Bauers', 'Temi Fágbénlé']
|
| 41 |
player_right_names_mlb = ['Kike Hernandez', 'Joey Cantillo', 'Michael Soroka', 'Jake Bauers', 'Temi Fagbenle']
|
| 42 |
|
|
|
|
| 447 |
# Update projections with matched names
|
| 448 |
projections['player_names'] = projections['player_names'].map(lambda x: projections_match_dict.get(x, x))
|
| 449 |
st.session_state['projections_df'] = projections
|
|
|
|
| 450 |
|
| 451 |
if sport_var in stacking_sports:
|
| 452 |
team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
|
| 453 |
st.session_state['portfolio']['Stack'] = st.session_state['portfolio'].apply(
|
| 454 |
lambda row: Counter(
|
| 455 |
+
team_dict.get(player, '') for player in row[stack_column_dict[sport_var]]
|
| 456 |
if team_dict.get(player, '') != ''
|
| 457 |
+
).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[stack_column_dict[sport_var]]) else '',
|
| 458 |
axis=1
|
| 459 |
)
|
| 460 |
st.session_state['portfolio']['Size'] = st.session_state['portfolio'].apply(
|
| 461 |
lambda row: Counter(
|
| 462 |
+
team_dict.get(player, '') for player in row[stack_column_dict[sport_var]]
|
| 463 |
if team_dict.get(player, '') != ''
|
| 464 |
+
).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[stack_column_dict[sport_var]]) else 0,
|
| 465 |
axis=1
|
| 466 |
)
|
| 467 |
st.session_state['stack_dict'] = dict(zip(st.session_state['portfolio'].index, st.session_state['portfolio']['Stack']))
|