Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -130,6 +130,46 @@ def hitter_seasonlong_build(data_sample):
|
|
130 |
|
131 |
return season_long_table
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
@st.cache_data(show_spinner=False)
|
134 |
def pitcher_seasonlong_build(data_sample):
|
135 |
season_long_table = data_sample[['Player', 'Team']]
|
@@ -197,6 +237,73 @@ def pitcher_seasonlong_build(data_sample):
|
|
197 |
|
198 |
return season_long_table
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
@st.cache_data(show_spinner=False)
|
201 |
def split_frame(input_df, rows):
|
202 |
df = [input_df.loc[i : i + rows - 1, :] for i in range(0, len(input_df), rows)]
|
@@ -275,7 +382,7 @@ with tab1:
|
|
275 |
total_pitchers = indv_pitchers.Player.values.tolist()
|
276 |
total_dates = hitter_gamelog_table.Date.values.tolist()
|
277 |
|
278 |
-
split_var1 = st.radio("What table would you like to view?", ('Season Logs', '
|
279 |
split_var2 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var2')
|
280 |
|
281 |
if split_var2 == 'Specific Teams':
|
@@ -328,7 +435,29 @@ with tab1:
|
|
328 |
mime='text/csv',
|
329 |
)
|
330 |
|
331 |
-
elif split_var1 == '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
332 |
choose_cols = st.container()
|
333 |
with choose_cols:
|
334 |
choose_disp_gamelog = st.multiselect('Which stats would you like to view?', options = hitter_data_cols, default = hitter_data_cols, key='choose_disp_gamelog')
|
|
|
130 |
|
131 |
return season_long_table
|
132 |
|
133 |
+
@st.cache_data(show_spinner=False)
|
134 |
+
def hitter_team_build(data_sample):
|
135 |
+
season_long_table = data_sample[['Team']]
|
136 |
+
season_long_table['G'] = data_sample.groupby(['Team'], sort=False)['G'].transform('sum').astype(int)
|
137 |
+
season_long_table['AB'] = data_sample.groupby(['Team'], sort=False)['AB'].transform('sum').astype(int)
|
138 |
+
season_long_table['PA'] = data_sample.groupby(['Team'], sort=False)['PA'].transform('sum').astype(int)
|
139 |
+
season_long_table['H'] = data_sample.groupby(['Team'], sort=False)['H'].transform('sum').astype(int)
|
140 |
+
season_long_table['1B'] = data_sample.groupby(['Team'], sort=False)['1B'].transform('sum').astype(int)
|
141 |
+
season_long_table['2B'] = data_sample.groupby(['Team'], sort=False)['2B'].transform('sum').astype(int)
|
142 |
+
season_long_table['3B'] = data_sample.groupby(['Team'], sort=False)['3B'].transform('sum').astype(int)
|
143 |
+
season_long_table['HR'] = data_sample.groupby(['Team'], sort=False)['HR'].transform('sum').astype(int)
|
144 |
+
season_long_table['R'] = data_sample.groupby(['Team'], sort=False)['R'].transform('sum').astype(int)
|
145 |
+
season_long_table['RBI'] = data_sample.groupby(['Team'], sort=False)['RBI'].transform('sum').astype(int)
|
146 |
+
season_long_table['BB'] = data_sample.groupby(['Team'], sort=False)['BB'].transform('sum').astype(int)
|
147 |
+
season_long_table['IBB'] = data_sample.groupby(['Team'], sort=False)['IBB'].transform('sum').astype(int)
|
148 |
+
season_long_table['SO'] = data_sample.groupby(['Team'], sort=False)['SO'].transform('sum').astype(int)
|
149 |
+
season_long_table['HBP'] = data_sample.groupby(['Team'], sort=False)['HBP'].transform('sum').astype(int)
|
150 |
+
season_long_table['SF'] = data_sample.groupby(['Team'], sort=False)['SF'].transform('sum').astype(int)
|
151 |
+
season_long_table['SH'] = data_sample.groupby(['Team'], sort=False)['SH'].transform('sum').astype(int)
|
152 |
+
season_long_table['GDP'] = data_sample.groupby(['Team'], sort=False)['GDP'].transform('sum').astype(int)
|
153 |
+
season_long_table['SB'] = data_sample.groupby(['Team'], sort=False)['SB'].transform('sum').astype(int)
|
154 |
+
season_long_table['CS'] = data_sample.groupby(['Team'], sort=False)['CS'].transform('sum').astype(int)
|
155 |
+
season_long_table['Avg AVG'] = data_sample.groupby(['Team'], sort=False)['AVG'].transform('mean').astype(float)
|
156 |
+
season_long_table['Avg SLG'] = data_sample.groupby(['Team'], sort=False)['SLG'].transform('mean').astype(float)
|
157 |
+
season_long_table['Avg wRC+'] = data_sample.groupby(['Team'], sort=False)['wRC+'].transform('mean').astype(float)
|
158 |
+
season_long_table['Avg LD%'] = data_sample.groupby(['Team'], sort=False)['LD%'].transform('mean').astype(float)
|
159 |
+
season_long_table['Avg GB%'] = data_sample.groupby(['Team'], sort=False)['GB%'].transform('mean').astype(float)
|
160 |
+
season_long_table['Avg FB%'] = data_sample.groupby(['Team'], sort=False)['FB%'].transform('mean').astype(float)
|
161 |
+
season_long_table['Avg Hard%'] = data_sample.groupby(['Team'], sort=False)['Hard%'].transform('mean').astype(float)
|
162 |
+
season_long_table['Barrels'] = data_sample.groupby(['Team'], sort=False)['Barrels'].transform('sum').astype(int)
|
163 |
+
season_long_table['Avg Barrel%'] = data_sample.groupby(['Team'], sort=False)['Barrel%'].transform('mean').astype(float)
|
164 |
+
season_long_table = season_long_table.drop_duplicates(subset='Team')
|
165 |
+
|
166 |
+
season_long_table = season_long_table.sort_values(by='Avg wRC+', ascending=False)
|
167 |
+
|
168 |
+
season_long_table = season_long_table.set_axis(['Team', 'G', 'AB', 'PA', 'H', '1B', '2B', '3B', 'HR', 'R', 'RBI', 'BB', 'IBB', 'SO', 'HBP', 'SF', 'SH',
|
169 |
+
'GDP', 'SB', 'CS', 'Avg AVG', 'Avg SLG', 'Avg wRC+', 'Avg LD%', 'Avg GB%', 'Avg FB%', 'Avg Hard%', 'Barrels', 'Avg Barrel%'], axis=1)
|
170 |
+
|
171 |
+
return season_long_table
|
172 |
+
|
173 |
@st.cache_data(show_spinner=False)
|
174 |
def pitcher_seasonlong_build(data_sample):
|
175 |
season_long_table = data_sample[['Player', 'Team']]
|
|
|
237 |
|
238 |
return season_long_table
|
239 |
|
240 |
+
@st.cache_data(show_spinner=False)
|
241 |
+
def pitcher_team_build(data_sample):
|
242 |
+
season_long_table = data_sample[['Team']]
|
243 |
+
season_long_table['G'] = data_sample.groupby(['Team'], sort=False)['G'].transform('sum').astype(int)
|
244 |
+
season_long_table['GS'] = data_sample.groupby(['Team'], sort=False)['GS'].transform('sum').astype(int)
|
245 |
+
season_long_table['CG'] = data_sample.groupby(['Team'], sort=False)['CG'].transform('sum').astype(int)
|
246 |
+
season_long_table['W'] = data_sample.groupby(['Team'], sort=False)['W'].transform('sum').astype(int)
|
247 |
+
season_long_table['L'] = data_sample.groupby(['Team'], sort=False)['L'].transform('sum').astype(int)
|
248 |
+
season_long_table['Avg ERA'] = data_sample.groupby(['Team'], sort=False)['ERA'].transform('mean').astype(float)
|
249 |
+
season_long_table['ShO'] = data_sample.groupby(['Team'], sort=False)['ShO'].transform('sum').astype(int)
|
250 |
+
season_long_table['SV'] = data_sample.groupby(['Team'], sort=False)['SV'].transform('sum').astype(int)
|
251 |
+
season_long_table['HLD'] = data_sample.groupby(['Team'], sort=False)['HLD'].transform('sum').astype(int)
|
252 |
+
season_long_table['BS'] = data_sample.groupby(['Team'], sort=False)['BS'].transform('sum').astype(int)
|
253 |
+
season_long_table['IP'] = data_sample.groupby(['Team'], sort=False)['IP'].transform('sum').astype(int)
|
254 |
+
season_long_table['TBF'] = data_sample.groupby(['Team'], sort=False)['TBF'].transform('sum').astype(int)
|
255 |
+
season_long_table['H'] = data_sample.groupby(['Team'], sort=False)['H'].transform('sum').astype(int)
|
256 |
+
season_long_table['R'] = data_sample.groupby(['Team'], sort=False)['R'].transform('sum').astype(int)
|
257 |
+
season_long_table['ER'] = data_sample.groupby(['Team'], sort=False)['ER'].transform('sum').astype(int)
|
258 |
+
season_long_table['HR'] = data_sample.groupby(['Team'], sort=False)['HR'].transform('sum').astype(int)
|
259 |
+
season_long_table['BB'] = data_sample.groupby(['Team'], sort=False)['BB'].transform('sum').astype(int)
|
260 |
+
season_long_table['IBB'] = data_sample.groupby(['Team'], sort=False)['IBB'].transform('sum').astype(int)
|
261 |
+
season_long_table['HBP'] = data_sample.groupby(['Team'], sort=False)['HBP'].transform('sum').astype(int)
|
262 |
+
season_long_table['WP'] = data_sample.groupby(['Team'], sort=False)['WP'].transform('sum').astype(int)
|
263 |
+
season_long_table['BK'] = data_sample.groupby(['Team'], sort=False)['BK'].transform('sum').astype(int)
|
264 |
+
season_long_table['SO'] = data_sample.groupby(['Team'], sort=False)['SO'].transform('sum').astype(int)
|
265 |
+
season_long_table['Avg K/9'] = data_sample.groupby(['Team'], sort=False)['K/9'].transform('mean').astype(float)
|
266 |
+
season_long_table['Avg BB/9'] = data_sample.groupby(['Team'], sort=False)['BB/9'].transform('mean').astype(float)
|
267 |
+
season_long_table['Avg WHIP'] = data_sample.groupby(['Team'], sort=False)['WHIP'].transform('mean').astype(float)
|
268 |
+
season_long_table['Avg BABIP'] = data_sample.groupby(['Team'], sort=False)['BABIP'].transform('mean').astype(float)
|
269 |
+
season_long_table['Avg LOB%'] = data_sample.groupby(['Team'], sort=False)['LOB%'].transform('mean').astype(int)
|
270 |
+
season_long_table['Avg FIP'] = data_sample.groupby(['Team'], sort=False)['FIP'].transform('mean').astype(float)
|
271 |
+
season_long_table['Avg xFIP'] = data_sample.groupby(['Team'], sort=False)['xFIP'].transform('mean').astype(float)
|
272 |
+
season_long_table['Avg K%'] = data_sample.groupby(['Team'], sort=False)['K%'].transform('mean').astype(float)
|
273 |
+
season_long_table['Avg BB%'] = data_sample.groupby(['Team'], sort=False)['BB%'].transform('mean').astype(float)
|
274 |
+
season_long_table['Avg SIERA'] = data_sample.groupby(['Team'], sort=False)['SIERA'].transform('mean').astype(float)
|
275 |
+
season_long_table['Avg LD%'] = data_sample.groupby(['Team'], sort=False)['LD%'].transform('mean').astype(float)
|
276 |
+
season_long_table['Avg GB%'] = data_sample.groupby(['Team'], sort=False)['GB%'].transform('mean').astype(float)
|
277 |
+
season_long_table['Avg FB%'] = data_sample.groupby(['Team'], sort=False)['FB%'].transform('mean').astype(float)
|
278 |
+
season_long_table['Avg HR/FB'] = data_sample.groupby(['Team'], sort=False)['HR/FB'].transform('mean').astype(float)
|
279 |
+
season_long_table['Avg Hard%'] = data_sample.groupby(['Team'], sort=False)['Hard%'].transform('mean').astype(float)
|
280 |
+
season_long_table['Barrels'] = data_sample.groupby(['Team'], sort=False)['Barrels'].transform('sum').astype(int)
|
281 |
+
season_long_table['Avg Barrel%'] = data_sample.groupby(['Team'], sort=False)['Barrel%'].transform('mean').astype(float)
|
282 |
+
season_long_table['Avg xERA'] = data_sample.groupby(['Team'], sort=False)['xERA'].transform('mean').astype(float)
|
283 |
+
season_long_table['Avg vFA'] = data_sample.groupby(['Team'], sort=False)['vFA'].transform('mean').astype(float)
|
284 |
+
season_long_table['Avg vFT'] = data_sample.groupby(['Team'], sort=False)['vFT'].transform('mean').astype(float)
|
285 |
+
season_long_table['Avg vFC'] = data_sample.groupby(['Team'], sort=False)['vFC'].transform('mean').astype(float)
|
286 |
+
season_long_table['Avg vFS'] = data_sample.groupby(['Team'], sort=False)['vFS'].transform('mean').astype(float)
|
287 |
+
season_long_table['Avg vFO'] = data_sample.groupby(['Team'], sort=False)['vFO'].transform('mean').astype(float)
|
288 |
+
season_long_table['Avg vSI'] = data_sample.groupby(['Team'], sort=False)['vSI'].transform('mean').astype(float)
|
289 |
+
season_long_table['Avg vSL'] = data_sample.groupby(['Team'], sort=False)['vSL'].transform('mean').astype(float)
|
290 |
+
season_long_table['Avg vCU'] = data_sample.groupby(['Team'], sort=False)['vCU'].transform('mean').astype(float)
|
291 |
+
season_long_table['Avg vKC'] = data_sample.groupby(['Team'], sort=False)['vKC'].transform('mean').astype(float)
|
292 |
+
season_long_table['Avg vEP'] = data_sample.groupby(['Team'], sort=False)['vEP'].transform('mean').astype(float)
|
293 |
+
season_long_table['Avg vCH'] = data_sample.groupby(['Team'], sort=False)['vCH'].transform('mean').astype(float)
|
294 |
+
season_long_table['Avg vSC'] = data_sample.groupby(['Team'], sort=False)['vSC'].transform('mean').astype(float)
|
295 |
+
season_long_table['Avg vKN'] = data_sample.groupby(['Team'], sort=False)['vKN'].transform('mean').astype(float)
|
296 |
+
season_long_table = season_long_table.drop_duplicates(subset='Team')
|
297 |
+
|
298 |
+
season_long_table = season_long_table.sort_values(by='SO', ascending=False)
|
299 |
+
|
300 |
+
season_long_table = season_long_table.set_axis(['Team', 'G', 'GS', 'CG', 'W', 'L', 'Avg ERA', 'ShO', 'SV', 'HLD', 'BS', 'IP', 'TBF', 'H', 'R', 'ER', 'HR',
|
301 |
+
'BB', 'IBB', 'HBP', 'WP', 'BK', 'SO', 'Avg K/9', 'Avg BB/9', 'Avg WHIP', 'Avg BABIP', 'Avg LOB%', 'Avg FIP', 'Avg xFIP', 'Avg K%',
|
302 |
+
'Avg BB%', 'Avg SIERA', 'Avg LD%', 'Avg GB%', 'Avg FB%', 'Avg HR/FB', 'Avg Hard%', 'Barrels', 'Avg Barrel%', 'Avg xERA', 'Avg vFA',
|
303 |
+
'Avg vFT', 'Avg vFC', 'Avg vFS', 'Avg vFO', 'Avg vSI', 'Avg vSL', 'Avg vCU', 'Avg vKC', 'Avg vEP', 'Avg vCH', 'Avg vSC', 'Avg vKN'], axis=1)
|
304 |
+
|
305 |
+
return season_long_table
|
306 |
+
|
307 |
@st.cache_data(show_spinner=False)
|
308 |
def split_frame(input_df, rows):
|
309 |
df = [input_df.loc[i : i + rows - 1, :] for i in range(0, len(input_df), rows)]
|
|
|
382 |
total_pitchers = indv_pitchers.Player.values.tolist()
|
383 |
total_dates = hitter_gamelog_table.Date.values.tolist()
|
384 |
|
385 |
+
split_var1 = st.radio("What table would you like to view?", ('Season Logs', 'Game logs', 'Team Logs'), key='split_var1')
|
386 |
split_var2 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var2')
|
387 |
|
388 |
if split_var2 == 'Specific Teams':
|
|
|
435 |
mime='text/csv',
|
436 |
)
|
437 |
|
438 |
+
elif split_var1 == 'Team Logs':
|
439 |
+
choose_cols = st.container()
|
440 |
+
with choose_cols:
|
441 |
+
choose_disp = st.multiselect('Which stats would you like to view?', options = season_hitter_data_cols, default = season_hitter_data_cols, key='col_display')
|
442 |
+
disp_stats = basic_season_cols + choose_disp
|
443 |
+
display = st.container()
|
444 |
+
working_data = working_data[working_data['Date'] >= low_date]
|
445 |
+
working_data = working_data[working_data['Date'] <= high_date]
|
446 |
+
working_data = working_data[working_data['Team'].isin(team_var1)]
|
447 |
+
team_table = hitter_team_build(working_data)
|
448 |
+
team_table = team_table.set_index('Team')
|
449 |
+
|
450 |
+
team_table_disp = team_table.reindex(disp_stats,axis="columns")
|
451 |
+
team_table_disp = team_table_disp.drop(['Team', 'Date'], axis=1)
|
452 |
+
display.dataframe(team_table_disp.style.format(precision=2), height=750, use_container_width = True)
|
453 |
+
st.download_button(
|
454 |
+
label="Export hitter team logs Model",
|
455 |
+
data=convert_df_to_csv(season_long_table),
|
456 |
+
file_name='Seasonlogs_Hitter_View.csv',
|
457 |
+
mime='text/csv',
|
458 |
+
)
|
459 |
+
|
460 |
+
elif split_var1 == 'Game logs':
|
461 |
choose_cols = st.container()
|
462 |
with choose_cols:
|
463 |
choose_disp_gamelog = st.multiselect('Which stats would you like to view?', options = hitter_data_cols, default = hitter_data_cols, key='choose_disp_gamelog')
|