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.

Files changed (1) hide show
  1. app.py +26 -9
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
- count_var = 0
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[count_var])
205
  set_frame = set_frame[['Player', 'Percent']]
206
- set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[count_var]}'})
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
- count_var += 1
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
- stack_counts = pd.Series(list(working_df['stack'])).value_counts()
219
- stack_frame = stack_counts.to_frame().reset_index().rename(columns={'index': 'Stack', 'count': 'Count'})
220
- stack_frame['Percent'] = stack_frame['Count'] / len(working_df)
221
- stack_frame = stack_frame[['Stack', 'Percent']]
222
- st.dataframe(stack_frame)
 
 
 
 
 
 
 
 
 
 
 
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