James McCool
commited on
Commit
·
8e43993
1
Parent(s):
a9d2b2a
Add player exposure formatting and enhance dataframe display in app.py
Browse files- Introduced a dictionary for player exposure formatting to standardize percentage displays across the application.
- Updated the logic for displaying player exposure percentages in the dataframe, applying background gradients for improved visual clarity.
- Ensured consistent handling of player counts by referencing the correct data frames for percentage calculations, enhancing overall data representation.
app.py
CHANGED
@@ -17,6 +17,8 @@ from global_func.highlight_rows import highlight_changes, highlight_changes_winn
|
|
17 |
from global_func.load_csv import load_csv
|
18 |
from global_func.find_csv_mismatches import find_csv_mismatches
|
19 |
|
|
|
|
|
20 |
tab1, tab2 = st.tabs(["Data Load", "Contest Analysis"])
|
21 |
with tab1:
|
22 |
if st.button('Clear data', key='reset1'):
|
@@ -195,13 +197,14 @@ with tab2:
|
|
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 |
each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
|
|
|
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(
|
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:
|
@@ -209,7 +212,7 @@ with tab2:
|
|
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 |
with tab2:
|
214 |
stack_counts = pd.Series(list(working_df['stack'])).value_counts()
|
215 |
stack_frame = stack_counts.to_frame().reset_index().rename(columns={'index': 'Stack', 'count': 'Count'})
|
|
|
17 |
from global_func.load_csv import load_csv
|
18 |
from global_func.find_csv_mismatches import find_csv_mismatches
|
19 |
|
20 |
+
player_exposure_format = {'Exposure Overall': '{:.2%}', 'Exposure Top 1%': '{:.2%}', 'Exposure Top 5%': '{:.2%}', 'Exposure Top 10%': '{:.2%}', 'Exposure Top 20%': '{:.2%}'}
|
21 |
+
|
22 |
tab1, tab2 = st.tabs(["Data Load", "Contest Analysis"])
|
23 |
with tab1:
|
24 |
if st.button('Clear data', key='reset1'):
|
|
|
197 |
player_10per_counts = pd.Series(list(players_10per[player_columns].values.flatten())).value_counts()
|
198 |
player20_per_counts = pd.Series(list(players_20per[player_columns].values.flatten())).value_counts()
|
199 |
each_set_name = ['Overall', ' Top 1%', ' Top 5%', 'Top 10%', 'Top 20%']
|
200 |
+
each_frame_set = [contest_players, players_1per, players_5per, players_10per, players_20per]
|
201 |
with st.container():
|
202 |
tab1, tab2 = st.tabs(['Player Used Info', 'Stack Used Info'])
|
203 |
with tab1:
|
204 |
count_var = 0
|
205 |
for each_set in [player_counts, player_1per_counts, player_5per_counts, player_10per_counts, player20_per_counts]:
|
206 |
set_frame = each_set.to_frame().reset_index().rename(columns={'index': 'Player', 'count': 'Count'})
|
207 |
+
set_frame['Percent'] = set_frame['Count'] / len(each_frame_set[count_var])
|
208 |
set_frame = set_frame[['Player', 'Percent']]
|
209 |
set_frame = set_frame.rename(columns={'Percent': f'Exposure {each_set_name[count_var]}'})
|
210 |
if 'player_frame' not in st.session_state:
|
|
|
212 |
else:
|
213 |
st.session_state['player_frame'] = pd.merge(st.session_state['player_frame'], set_frame, on='Player', how='outer')
|
214 |
count_var += 1
|
215 |
+
st.dataframe(st.session_state['player_frame'].style.background_gradient(cmap='RgYlGn').format(player_exposure_format, precision=2), hide_index=True)
|
216 |
with tab2:
|
217 |
stack_counts = pd.Series(list(working_df['stack'])).value_counts()
|
218 |
stack_frame = stack_counts.to_frame().reset_index().rename(columns={'index': 'Stack', 'count': 'Count'})
|