Multichem commited on
Commit
88eb52f
·
1 Parent(s): 577e4ba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -19
app.py CHANGED
@@ -42,7 +42,15 @@ percentages_format = {'Pts% Boost': '{:.2%}', 'Reb% Boost': '{:.2%}', 'Ast% Boos
42
  @st.cache_resource(ttl = 600)
43
  def init_baselines():
44
  sh = gcservice_account.open_by_url(DEM_data)
45
-
 
 
 
 
 
 
 
 
46
  worksheet = sh.worksheet('PG_DEM_Calc')
47
  raw_display = pd.DataFrame(worksheet.get_values())
48
  raw_display.columns = raw_display.iloc[0]
@@ -107,34 +115,45 @@ def init_baselines():
107
  export_dem = overall_dem[['Team', 'Acro', 'G', 'Pts% Boost', 'Reb% Boost', 'Ast% Boost', '3p% Boost',
108
  'Stl Boost%', 'Blk Boost%', 'TOV Boost%', 'FPPM', 'FPPM Boost', 'position']]
109
 
110
- return export_dem
111
 
112
  def convert_df_to_csv(df):
113
  return df.to_csv().encode('utf-8')
114
 
115
- overall_dem = init_baselines()
116
 
117
  col1, col2 = st.columns([1, 9])
118
  with col1:
119
  if st.button("Reset Data", key='reset1'):
120
  st.cache_data.clear()
121
- overall_dem = init_baselines()
122
- split_var1 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var1')
123
- if split_var1 == 'Specific Teams':
124
- team_var1 = st.multiselect('Which teams would you like to include in the tables?', options = overall_dem['Acro'].unique(), key='team_var1')
125
- elif split_var1 == 'All':
126
- team_var1 = overall_dem.Acro.values.tolist()
127
- split_var2 = st.radio("Would you like to view all positions or specific ones?", ('All', 'Specific Positions'), key='split_var2')
128
- if split_var2 == 'Specific Positions':
129
- pos_var1 = st.multiselect('Which teams would you like to include in the tables?', options = overall_dem['position'].unique(), key='pos_var1')
130
- elif split_var2 == 'All':
131
- pos_var1 = overall_dem.position.values.tolist()
 
 
 
 
132
  with col2:
133
- dem_display = overall_dem[overall_dem['Acro'].isin(team_var1)]
134
- dem_display = dem_display[dem_display['position'].isin(pos_var1)]
135
- dem_display = dem_display.sort_values(by='FPPM Boost', ascending=False)
136
- dem_display.rename(columns={"Team": "Team (Giving Boost)"}, inplace = True)
137
- dem_display = dem_display.set_index('Team (Giving Boost)')
 
 
 
 
 
 
 
138
  st.dataframe(dem_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(percentages_format, precision=2), use_container_width = True)
139
  st.download_button(
140
  label="Export DEM Numbers",
 
42
  @st.cache_resource(ttl = 600)
43
  def init_baselines():
44
  sh = gcservice_account.open_by_url(DEM_data)
45
+
46
+ worksheet = sh.worksheet('DEM Matchups')
47
+ raw_display = pd.DataFrame(worksheet.get_values())
48
+ raw_display.columns = raw_display.iloc[0]
49
+ raw_display = raw_display[1:]
50
+ raw_display = raw_display.reset_index(drop=True)
51
+ matchups = raw_display[raw_display['Var'] != ""]
52
+ matchups_dict = dict(zip(matchups['Team'], matchups['Opp']))
53
+
54
  worksheet = sh.worksheet('PG_DEM_Calc')
55
  raw_display = pd.DataFrame(worksheet.get_values())
56
  raw_display.columns = raw_display.iloc[0]
 
115
  export_dem = overall_dem[['Team', 'Acro', 'G', 'Pts% Boost', 'Reb% Boost', 'Ast% Boost', '3p% Boost',
116
  'Stl Boost%', 'Blk Boost%', 'TOV Boost%', 'FPPM', 'FPPM Boost', 'position']]
117
 
118
+ return export_dem, matchups, matchups_dict
119
 
120
  def convert_df_to_csv(df):
121
  return df.to_csv().encode('utf-8')
122
 
123
+ overall_dem, matchups, matchups_dict = init_baselines()
124
 
125
  col1, col2 = st.columns([1, 9])
126
  with col1:
127
  if st.button("Reset Data", key='reset1'):
128
  st.cache_data.clear()
129
+ overall_dem, matchups, matchups_dict = init_baselines()
130
+ split_var1 = st.radio("View all teams or just this main slate's matchups?", ('Slate Matchups', 'All'), key='split_var1')
131
+ if split_var1 == 'Slate Matchups':
132
+ view_var1 = matchups.Opp.values.tolist()
133
+ if split_var1 == 'All':
134
+ split_var2 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var2')
135
+ if split_var2 == 'Specific Teams':
136
+ team_var1 = st.multiselect('Which teams would you like to include in the tables?', options = overall_dem['Acro'].unique(), key='team_var1')
137
+ elif split_var2 == 'All':
138
+ team_var1 = overall_dem.Acro.values.tolist()
139
+ split_var3 = st.radio("Would you like to view all positions or specific ones?", ('All', 'Specific Positions'), key='split_var3')
140
+ if split_var3 == 'Specific Positions':
141
+ pos_var1 = st.multiselect('Which teams would you like to include in the tables?', options = overall_dem['position'].unique(), key='pos_var1')
142
+ elif split_var3 == 'All':
143
+ pos_var1 = overall_dem.position.values.tolist()
144
  with col2:
145
+ if split_var1 == 'Slate Matchups':
146
+ dem_display = overall_dem[overall_dem['Acro'].isin(view_var1)]
147
+ dem_display['Team (Getting Boost)'] = dem_display['Acro'].map(matchups_dict)
148
+ dem_display.rename(columns={"Acro": "Opp (Giving Boost)"}, inplace = True)
149
+ dem_display = dem_display.set_index('Team (Getting Boost)')
150
+ dem_display = dem_display.sort_values(by='FPPM Boost', ascending=False)
151
+ elif split_var1 == 'All':
152
+ dem_display = overall_dem[overall_dem['Acro'].isin(team_var1)]
153
+ dem_display = dem_display[dem_display['position'].isin(pos_var1)]
154
+ dem_display = dem_display.sort_values(by='FPPM Boost', ascending=False)
155
+ dem_display.rename(columns={"Team": "Team (Giving Boost)"}, inplace = True)
156
+ dem_display = dem_display.set_index('Team (Giving Boost)')
157
  st.dataframe(dem_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(percentages_format, precision=2), use_container_width = True)
158
  st.download_button(
159
  label="Export DEM Numbers",