James McCool
commited on
Commit
·
df09c16
1
Parent(s):
a8c9973
Refactor stack data processing and session state management in app.py
Browse files- Removed the 'stack_frame' from session state upon submission to ensure a clean state for stack selections.
- Introduced new logic to calculate and display stack exposure data across various performance thresholds, enhancing data representation.
- Streamlined variable naming for clarity and improved the overall organization of stack-related data processing.
app.py
CHANGED
|
@@ -114,6 +114,7 @@ with tab2:
|
|
| 114 |
if submitted:
|
| 115 |
if 'player_frame' in st.session_state:
|
| 116 |
del st.session_state['player_frame']
|
|
|
|
| 117 |
# Apply entry name filter if specific entries are selected
|
| 118 |
if entry_parse_var == 'Specific' and entry_names:
|
| 119 |
working_df = working_df[working_df['BaseName'].isin(entry_names)]
|
|
@@ -193,33 +194,49 @@ with tab2:
|
|
| 193 |
player_5per_counts = pd.Series(list(players_5per[player_columns].values.flatten())).value_counts()
|
| 194 |
player_10per_counts = pd.Series(list(players_10per[player_columns].values.flatten())).value_counts()
|
| 195 |
player20_per_counts = pd.Series(list(players_20per[player_columns].values.flatten())).value_counts()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
|
| 197 |
each_frame_set = [contest_players, players_1per, players_5per, players_10per, players_20per]
|
| 198 |
with st.container():
|
| 199 |
tab1, tab2 = st.tabs(['Player Used Info', 'Stack Used Info'])
|
| 200 |
with tab1:
|
| 201 |
-
|
| 202 |
for each_set in [player_counts, player_1per_counts, player_5per_counts, player_10per_counts, player20_per_counts]:
|
| 203 |
set_frame = each_set.to_frame().reset_index().rename(columns={'index': 'Player', 'count': 'Count'})
|
| 204 |
-
set_frame['Percent'] = set_frame['Count'] / len(each_frame_set[
|
| 205 |
set_frame = set_frame[['Player', 'Percent']]
|
| 206 |
-
set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[
|
| 207 |
if 'player_frame' not in st.session_state:
|
| 208 |
st.session_state['player_frame'] = set_frame
|
| 209 |
else:
|
| 210 |
st.session_state['player_frame'] = pd.merge(st.session_state['player_frame'], set_frame, on='Player', how='outer')
|
| 211 |
-
|
| 212 |
st.dataframe(st.session_state['player_frame'].
|
| 213 |
sort_values(by='Exposure Overall', ascending=False).
|
| 214 |
style.background_gradient(cmap='RdYlGn').
|
| 215 |
format(formatter='{:.2%}', subset=st.session_state['player_frame'].select_dtypes(include=['number']).columns),
|
| 216 |
hide_index=True)
|
| 217 |
with tab2:
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
|
| 224 |
|
| 225 |
# Initialize pagination in session state if not exists
|
|
|
|
| 114 |
if submitted:
|
| 115 |
if 'player_frame' in st.session_state:
|
| 116 |
del st.session_state['player_frame']
|
| 117 |
+
del st.session_state['stack_frame']
|
| 118 |
# Apply entry name filter if specific entries are selected
|
| 119 |
if entry_parse_var == 'Specific' and entry_names:
|
| 120 |
working_df = working_df[working_df['BaseName'].isin(entry_names)]
|
|
|
|
| 194 |
player_5per_counts = pd.Series(list(players_5per[player_columns].values.flatten())).value_counts()
|
| 195 |
player_10per_counts = pd.Series(list(players_10per[player_columns].values.flatten())).value_counts()
|
| 196 |
player20_per_counts = pd.Series(list(players_20per[player_columns].values.flatten())).value_counts()
|
| 197 |
+
stack_counts = pd.Series(list(contest_players['stack'])).value_counts()
|
| 198 |
+
stack_1per_counts = pd.Series(list(players_1per['stack'])).value_counts()
|
| 199 |
+
stack_5per_counts = pd.Series(list(players_5per['stack'])).value_counts()
|
| 200 |
+
stack_10per_counts = pd.Series(list(players_10per['stack'])).value_counts()
|
| 201 |
+
stack_20per_counts = pd.Series(list(players_20per['stack'])).value_counts()
|
| 202 |
each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
|
| 203 |
each_frame_set = [contest_players, players_1per, players_5per, players_10per, players_20per]
|
| 204 |
with st.container():
|
| 205 |
tab1, tab2 = st.tabs(['Player Used Info', 'Stack Used Info'])
|
| 206 |
with tab1:
|
| 207 |
+
player_count_var = 0
|
| 208 |
for each_set in [player_counts, player_1per_counts, player_5per_counts, player_10per_counts, player20_per_counts]:
|
| 209 |
set_frame = each_set.to_frame().reset_index().rename(columns={'index': 'Player', 'count': 'Count'})
|
| 210 |
+
set_frame['Percent'] = set_frame['Count'] / len(each_frame_set[player_count_var])
|
| 211 |
set_frame = set_frame[['Player', 'Percent']]
|
| 212 |
+
set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[player_count_var]}'})
|
| 213 |
if 'player_frame' not in st.session_state:
|
| 214 |
st.session_state['player_frame'] = set_frame
|
| 215 |
else:
|
| 216 |
st.session_state['player_frame'] = pd.merge(st.session_state['player_frame'], set_frame, on='Player', how='outer')
|
| 217 |
+
player_count_var += 1
|
| 218 |
st.dataframe(st.session_state['player_frame'].
|
| 219 |
sort_values(by='Exposure Overall', ascending=False).
|
| 220 |
style.background_gradient(cmap='RdYlGn').
|
| 221 |
format(formatter='{:.2%}', subset=st.session_state['player_frame'].select_dtypes(include=['number']).columns),
|
| 222 |
hide_index=True)
|
| 223 |
with tab2:
|
| 224 |
+
stack_count_var = 0
|
| 225 |
+
for each_set in [stack_counts, stack_1per_counts, stack_5per_counts, stack_10per_counts, stack_20per_counts]:
|
| 226 |
+
set_frame = each_set.to_frame().reset_index().rename(columns={'index': 'Stack', 'count': 'Count'})
|
| 227 |
+
set_frame['Percent'] = set_frame['Count'] / len(each_frame_set[stack_count_var])
|
| 228 |
+
set_frame = set_frame[['Stack', 'Percent']]
|
| 229 |
+
set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[stack_count_var]}'})
|
| 230 |
+
if 'stack_frame' not in st.session_state:
|
| 231 |
+
st.session_state['stack_frame'] = set_frame
|
| 232 |
+
else:
|
| 233 |
+
st.session_state['stack_frame'] = pd.merge(st.session_state['stack_frame'], set_frame, on='Stack', how='outer')
|
| 234 |
+
stack_count_var += 1
|
| 235 |
+
st.dataframe(st.session_state['stack_frame'].
|
| 236 |
+
sort_values(by='Exposure Overall', ascending=False).
|
| 237 |
+
style.background_gradient(cmap='RdYlGn').
|
| 238 |
+
format(formatter='{:.2%}', subset=st.session_state['stack_frame'].select_dtypes(include=['number']).columns),
|
| 239 |
+
hide_index=True)
|
| 240 |
|
| 241 |
|
| 242 |
# Initialize pagination in session state if not exists
|