James McCool
commited on
Commit
·
6e9c2dc
1
Parent(s):
93913de
Enhance team filtering functionality in Streamlit app for pitcher and hitter tabs
Browse files- Added filtering options for team selection in both pitcher and hitter tabs, allowing users to view data for specific teams.
- Updated the display logic to ensure that selected teams are reflected in the dataframes for 'True AVG Splits', 'HWSr Splits', and various baseline tables.
- Improved user experience by integrating team selection into the current slate overview and active baselines displays.
- src/streamlit_app.py +43 -6
src/streamlit_app.py
CHANGED
@@ -117,20 +117,33 @@ with pitcher_tab:
|
|
117 |
|
118 |
if table_var_sp == 'True AVG Splits':
|
119 |
disp_raw = true_avg_split
|
|
|
|
|
|
|
|
|
120 |
disp_raw = disp_raw[['Player', 'Handedness', 'Team', 'Opp', 'Opp LHH', 'Opp RHH', 'True AVG (LHH)', 'True AVG (RHH)', 'True AVG (Overall)', 'Weighted True AVG']]
|
121 |
st.session_state['sp_disp_frame'] = disp_raw
|
122 |
elif table_var_sp == 'HWSr Splits':
|
123 |
disp_raw = true_avg_split
|
|
|
|
|
|
|
|
|
124 |
disp_raw = disp_raw[['Player', 'Handedness', 'Team', 'Opp', 'Opp LHH', 'Opp RHH', 'HWSr (LHH)', 'HWSr (RHH)', 'HWSr (Overall)', 'Weighted HWSr']]
|
125 |
st.session_state['sp_disp_frame'] = disp_raw
|
126 |
elif table_var_sp == 'Current Slate Overview':
|
127 |
st.session_state['sp_disp_frame'] = starting_pitchers
|
128 |
elif table_var_sp == 'Active Baselines':
|
129 |
disp_raw = pitcher_info
|
|
|
130 |
if splits_var_sp != 'Overall':
|
131 |
disp_raw = disp_raw[disp_raw['Set'] == splits_var_sp]
|
132 |
else:
|
133 |
disp_raw = disp_raw[disp_raw['Set'] == 'RHH']
|
|
|
|
|
|
|
|
|
134 |
disp_raw = disp_raw[['Names', 'DK_Salary', 'FD_Salary', 'Team', 'Opp', 'Opp_TT', 'Hand', 'K%', 'BB%', 'True AVG', 'xSLG', 'xBA', 'Hits', 'xHRs', 'xHR/PA']]
|
135 |
positive_set = ['K%']
|
136 |
st.session_state['sp_disp_frame'] = disp_raw
|
@@ -163,7 +176,7 @@ with hitter_tab:
|
|
163 |
with col1:
|
164 |
site_var_hitter = st.selectbox('Site', ['DraftKings', 'FanDuel'], key = 'site_var_hitter')
|
165 |
with col2:
|
166 |
-
table_var_hitter = st.selectbox('Table', ['Active Baselines', 'League Aggregate Baselines', 'League Short Term Baselines', 'League Long Term Baselines'], key = 'table_var_hitter')
|
167 |
with col3:
|
168 |
splits_var_hitter = st.selectbox('Splits', ['Overall', 'RHP', 'LHP'], key = 'splits_var_hitter')
|
169 |
with col4:
|
@@ -176,15 +189,39 @@ with hitter_tab:
|
|
176 |
st.write('All teams selected')
|
177 |
|
178 |
if table_var_hitter == 'Current Slate Overview':
|
179 |
-
|
|
|
|
|
|
|
|
|
180 |
elif table_var_hitter == 'Active Baselines':
|
181 |
-
|
|
|
|
|
|
|
|
|
|
|
182 |
elif table_var_hitter == 'League Aggregate Baselines':
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
184 |
elif table_var_hitter == 'League Short Term Baselines':
|
185 |
-
|
|
|
|
|
|
|
|
|
|
|
186 |
elif table_var_hitter == 'League Long Term Baselines':
|
187 |
-
|
|
|
|
|
|
|
|
|
|
|
188 |
|
189 |
hitter_disp_container = st.container(border = True)
|
190 |
hitter_disp_container = hitter_disp_container.empty()
|
|
|
117 |
|
118 |
if table_var_sp == 'True AVG Splits':
|
119 |
disp_raw = true_avg_split
|
120 |
+
|
121 |
+
if team_var_sp is not None:
|
122 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_sp)]
|
123 |
+
|
124 |
disp_raw = disp_raw[['Player', 'Handedness', 'Team', 'Opp', 'Opp LHH', 'Opp RHH', 'True AVG (LHH)', 'True AVG (RHH)', 'True AVG (Overall)', 'Weighted True AVG']]
|
125 |
st.session_state['sp_disp_frame'] = disp_raw
|
126 |
elif table_var_sp == 'HWSr Splits':
|
127 |
disp_raw = true_avg_split
|
128 |
+
|
129 |
+
if team_var_sp is not None:
|
130 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_sp)]
|
131 |
+
|
132 |
disp_raw = disp_raw[['Player', 'Handedness', 'Team', 'Opp', 'Opp LHH', 'Opp RHH', 'HWSr (LHH)', 'HWSr (RHH)', 'HWSr (Overall)', 'Weighted HWSr']]
|
133 |
st.session_state['sp_disp_frame'] = disp_raw
|
134 |
elif table_var_sp == 'Current Slate Overview':
|
135 |
st.session_state['sp_disp_frame'] = starting_pitchers
|
136 |
elif table_var_sp == 'Active Baselines':
|
137 |
disp_raw = pitcher_info
|
138 |
+
|
139 |
if splits_var_sp != 'Overall':
|
140 |
disp_raw = disp_raw[disp_raw['Set'] == splits_var_sp]
|
141 |
else:
|
142 |
disp_raw = disp_raw[disp_raw['Set'] == 'RHH']
|
143 |
+
|
144 |
+
if team_var_sp is not None:
|
145 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_sp)]
|
146 |
+
|
147 |
disp_raw = disp_raw[['Names', 'DK_Salary', 'FD_Salary', 'Team', 'Opp', 'Opp_TT', 'Hand', 'K%', 'BB%', 'True AVG', 'xSLG', 'xBA', 'Hits', 'xHRs', 'xHR/PA']]
|
148 |
positive_set = ['K%']
|
149 |
st.session_state['sp_disp_frame'] = disp_raw
|
|
|
176 |
with col1:
|
177 |
site_var_hitter = st.selectbox('Site', ['DraftKings', 'FanDuel'], key = 'site_var_hitter')
|
178 |
with col2:
|
179 |
+
table_var_hitter = st.selectbox('Table', ['Current Slate Overview', 'Active Baselines', 'League Aggregate Baselines', 'League Short Term Baselines', 'League Long Term Baselines'], key = 'table_var_hitter')
|
180 |
with col3:
|
181 |
splits_var_hitter = st.selectbox('Splits', ['Overall', 'RHP', 'LHP'], key = 'splits_var_hitter')
|
182 |
with col4:
|
|
|
189 |
st.write('All teams selected')
|
190 |
|
191 |
if table_var_hitter == 'Current Slate Overview':
|
192 |
+
disp_raw = slate_hitters
|
193 |
+
|
194 |
+
if team_var_hitter is not None:
|
195 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_hitter)]
|
196 |
+
st.session_state['hitter_disp_frame'] = disp_raw
|
197 |
elif table_var_hitter == 'Active Baselines':
|
198 |
+
disp_raw = hitter_info
|
199 |
+
|
200 |
+
if team_var_hitter is not None:
|
201 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_hitter)]
|
202 |
+
|
203 |
+
st.session_state['hitter_disp_frame'] = disp_raw
|
204 |
elif table_var_hitter == 'League Aggregate Baselines':
|
205 |
+
disp_raw = hitter_agg
|
206 |
+
|
207 |
+
if team_var_hitter is not None:
|
208 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_hitter)]
|
209 |
+
|
210 |
+
st.session_state['hitter_disp_frame'] = disp_raw
|
211 |
elif table_var_hitter == 'League Short Term Baselines':
|
212 |
+
disp_raw = hitter_short
|
213 |
+
|
214 |
+
if team_var_hitter is not None:
|
215 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_hitter)]
|
216 |
+
|
217 |
+
st.session_state['hitter_disp_frame'] = disp_raw
|
218 |
elif table_var_hitter == 'League Long Term Baselines':
|
219 |
+
disp_raw = hitter_long
|
220 |
+
|
221 |
+
if team_var_hitter is not None:
|
222 |
+
disp_raw = disp_raw[disp_raw['Team'].isin(team_var_hitter)]
|
223 |
+
|
224 |
+
st.session_state['hitter_disp_frame'] = disp_raw
|
225 |
|
226 |
hitter_disp_container = st.container(border = True)
|
227 |
hitter_disp_container = hitter_disp_container.empty()
|