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'})
         | 
