Spaces:
Sleeping
Sleeping
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')
|