James McCool commited on
Commit
32f717b
·
1 Parent(s): e2120eb

Refactor app.py: Improve tab layout and statistics display for simulation results

Browse files

Adjusted the indentation and structure of the tab and container sections to enhance readability. Updated the summary statistics display for winning frames, maintaining the existing gradient styling and formatting for key metrics.

Files changed (1) hide show
  1. app.py +74 -74
app.py CHANGED
@@ -500,80 +500,80 @@ with tab1:
500
  team_working['Exposure'] = team_working['Freq']/(1000)
501
  st.session_state.team_freq = team_working.copy()
502
 
503
- with st.container():
504
- if st.button("Reset Sim", key='reset_sim'):
505
- for key in st.session_state.keys():
506
- del st.session_state[key]
507
- if 'player_freq' in st.session_state:
508
- player_split_var2 = st.radio("Are you wanting to isolate any lineups with specific players?", ('Full Players', 'Specific Players'), key='player_split_var2')
509
- if player_split_var2 == 'Specific Players':
510
- find_var2 = st.multiselect('Which players must be included in the lineups?', options = st.session_state.player_freq['Player'].unique())
511
- elif player_split_var2 == 'Full Players':
512
- find_var2 = st.session_state.player_freq.Player.values.tolist()
513
-
514
- if player_split_var2 == 'Specific Players':
515
- st.session_state.Sim_Winner_Display = st.session_state.Sim_Winner_Frame[np.equal.outer(st.session_state.Sim_Winner_Frame.to_numpy(), find_var2).any(axis=1).all(axis=1)]
516
- if player_split_var2 == 'Full Players':
517
- st.session_state.Sim_Winner_Display = st.session_state.Sim_Winner_Frame
518
- if 'Sim_Winner_Display' in st.session_state:
519
- st.dataframe(st.session_state.Sim_Winner_Display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
520
- if 'Sim_Winner_Export' in st.session_state:
521
- st.download_button(
522
- label="Export Full Frame",
523
- data=st.session_state.Sim_Winner_Export.to_csv().encode('utf-8'),
524
- file_name='MLB_consim_export.csv',
525
- mime='text/csv',
526
- )
527
- tab1, tab2 = st.tabs(['Winning Frame Statistics', 'Flex Exposure Statistics'])
528
-
529
- with tab1:
530
- if 'Sim_Winner_Display' in st.session_state:
531
- # Create a new dataframe with summary statistics
532
- summary_df = pd.DataFrame({
533
- 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
534
- 'Salary': [
535
- st.session_state.Sim_Winner_Display['salary'].min(),
536
- st.session_state.Sim_Winner_Display['salary'].mean(),
537
- st.session_state.Sim_Winner_Display['salary'].max(),
538
- st.session_state.Sim_Winner_Display['salary'].std()
539
- ],
540
- 'Proj': [
541
- st.session_state.Sim_Winner_Display['proj'].min(),
542
- st.session_state.Sim_Winner_Display['proj'].mean(),
543
- st.session_state.Sim_Winner_Display['proj'].max(),
544
- st.session_state.Sim_Winner_Display['proj'].std()
545
- ],
546
- 'Own': [
547
- st.session_state.Sim_Winner_Display['Own'].min(),
548
- st.session_state.Sim_Winner_Display['Own'].mean(),
549
- st.session_state.Sim_Winner_Display['Own'].max(),
550
- st.session_state.Sim_Winner_Display['Own'].std()
551
- ],
552
- 'Fantasy': [
553
- st.session_state.Sim_Winner_Display['Fantasy'].min(),
554
- st.session_state.Sim_Winner_Display['Fantasy'].mean(),
555
- st.session_state.Sim_Winner_Display['Fantasy'].max(),
556
- st.session_state.Sim_Winner_Display['Fantasy'].std()
557
- ],
558
- 'GPP_Proj': [
559
- st.session_state.Sim_Winner_Display['GPP_Proj'].min(),
560
- st.session_state.Sim_Winner_Display['GPP_Proj'].mean(),
561
- st.session_state.Sim_Winner_Display['GPP_Proj'].max(),
562
- st.session_state.Sim_Winner_Display['GPP_Proj'].std()
563
- ]
564
- })
565
-
566
- # Set the index of the summary dataframe as the "Metric" column
567
- summary_df = summary_df.set_index('Metric')
568
-
569
- # Display the summary dataframe
570
- st.subheader("Winning Frame Statistics")
571
- st.dataframe(summary_df.style.format({
572
- 'Salary': '{:.2f}',
573
- 'Proj': '{:.2f}',
574
- 'Fantasy': '{:.2f}',
575
- 'GPP_Proj': '{:.2f}'
576
- }).background_gradient(cmap='RdYlGn', axis=0, subset=['Salary', 'Proj', 'Own', 'Fantasy', 'GPP_Proj']), use_container_width=True)
577
 
578
  with tab2:
579
  if 'Sim_Winner_Display' in st.session_state:
 
500
  team_working['Exposure'] = team_working['Freq']/(1000)
501
  st.session_state.team_freq = team_working.copy()
502
 
503
+ with st.container():
504
+ if st.button("Reset Sim", key='reset_sim'):
505
+ for key in st.session_state.keys():
506
+ del st.session_state[key]
507
+ if 'player_freq' in st.session_state:
508
+ player_split_var2 = st.radio("Are you wanting to isolate any lineups with specific players?", ('Full Players', 'Specific Players'), key='player_split_var2')
509
+ if player_split_var2 == 'Specific Players':
510
+ find_var2 = st.multiselect('Which players must be included in the lineups?', options = st.session_state.player_freq['Player'].unique())
511
+ elif player_split_var2 == 'Full Players':
512
+ find_var2 = st.session_state.player_freq.Player.values.tolist()
513
+
514
+ if player_split_var2 == 'Specific Players':
515
+ st.session_state.Sim_Winner_Display = st.session_state.Sim_Winner_Frame[np.equal.outer(st.session_state.Sim_Winner_Frame.to_numpy(), find_var2).any(axis=1).all(axis=1)]
516
+ if player_split_var2 == 'Full Players':
517
+ st.session_state.Sim_Winner_Display = st.session_state.Sim_Winner_Frame
518
+ if 'Sim_Winner_Display' in st.session_state:
519
+ st.dataframe(st.session_state.Sim_Winner_Display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
520
+ if 'Sim_Winner_Export' in st.session_state:
521
+ st.download_button(
522
+ label="Export Full Frame",
523
+ data=st.session_state.Sim_Winner_Export.to_csv().encode('utf-8'),
524
+ file_name='MLB_consim_export.csv',
525
+ mime='text/csv',
526
+ )
527
+ tab1, tab2 = st.tabs(['Winning Frame Statistics', 'Flex Exposure Statistics'])
528
+
529
+ with tab1:
530
+ if 'Sim_Winner_Display' in st.session_state:
531
+ # Create a new dataframe with summary statistics
532
+ summary_df = pd.DataFrame({
533
+ 'Metric': ['Min', 'Average', 'Max', 'STDdev'],
534
+ 'Salary': [
535
+ st.session_state.Sim_Winner_Display['salary'].min(),
536
+ st.session_state.Sim_Winner_Display['salary'].mean(),
537
+ st.session_state.Sim_Winner_Display['salary'].max(),
538
+ st.session_state.Sim_Winner_Display['salary'].std()
539
+ ],
540
+ 'Proj': [
541
+ st.session_state.Sim_Winner_Display['proj'].min(),
542
+ st.session_state.Sim_Winner_Display['proj'].mean(),
543
+ st.session_state.Sim_Winner_Display['proj'].max(),
544
+ st.session_state.Sim_Winner_Display['proj'].std()
545
+ ],
546
+ 'Own': [
547
+ st.session_state.Sim_Winner_Display['Own'].min(),
548
+ st.session_state.Sim_Winner_Display['Own'].mean(),
549
+ st.session_state.Sim_Winner_Display['Own'].max(),
550
+ st.session_state.Sim_Winner_Display['Own'].std()
551
+ ],
552
+ 'Fantasy': [
553
+ st.session_state.Sim_Winner_Display['Fantasy'].min(),
554
+ st.session_state.Sim_Winner_Display['Fantasy'].mean(),
555
+ st.session_state.Sim_Winner_Display['Fantasy'].max(),
556
+ st.session_state.Sim_Winner_Display['Fantasy'].std()
557
+ ],
558
+ 'GPP_Proj': [
559
+ st.session_state.Sim_Winner_Display['GPP_Proj'].min(),
560
+ st.session_state.Sim_Winner_Display['GPP_Proj'].mean(),
561
+ st.session_state.Sim_Winner_Display['GPP_Proj'].max(),
562
+ st.session_state.Sim_Winner_Display['GPP_Proj'].std()
563
+ ]
564
+ })
565
+
566
+ # Set the index of the summary dataframe as the "Metric" column
567
+ summary_df = summary_df.set_index('Metric')
568
+
569
+ # Display the summary dataframe
570
+ st.subheader("Winning Frame Statistics")
571
+ st.dataframe(summary_df.style.format({
572
+ 'Salary': '{:.2f}',
573
+ 'Proj': '{:.2f}',
574
+ 'Fantasy': '{:.2f}',
575
+ 'GPP_Proj': '{:.2f}'
576
+ }).background_gradient(cmap='RdYlGn', axis=0, subset=['Salary', 'Proj', 'Own', 'Fantasy', 'GPP_Proj']), use_container_width=True)
577
 
578
  with tab2:
579
  if 'Sim_Winner_Display' in st.session_state: