nesticot commited on
Commit
35b2ec5
·
verified ·
1 Parent(s): df60c4c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -1
app.py CHANGED
@@ -27,6 +27,7 @@ import joblib
27
  in_zone_model = joblib.load('joblib_model/in_zone_model_knn_20240410.joblib')
28
  px_model = joblib.load('joblib_model/linear_reg_model_x.joblib')
29
  pz_model = joblib.load('joblib_model/linear_reg_model_z.joblib')
 
30
 
31
  def percentile(n):
32
  def percentile_(x):
@@ -301,6 +302,9 @@ exit_velo_df_codes_summ = exit_velo_df_codes.groupby(['batter_id','batter_name',
301
  tb = ('tb','sum'),
302
  woba = ('woba','sum'),
303
  woba_codes = ('woba_codes','sum'),
 
 
 
304
  hard_hit = ('hard_hit','sum'),
305
  barrel = ('barrel','sum'),
306
  sweet_spot = ('sweet_spot','sum'),
@@ -357,9 +361,13 @@ exit_velo_df_codes_summ['whiff_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_
357
 
358
  exit_velo_df_codes_summ['swstr_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_velo_df_codes_summ.pitches[x] if exit_velo_df_codes_summ.pitches[x] != 0 else np.nan for x in range(len(exit_velo_df_codes_summ))]
359
 
 
 
 
 
360
  exit_velo_df_codes_summ = exit_velo_df_codes_summ.dropna(subset=['bip'])
361
 
362
- woba_list = ['woba']
363
  pa_list = ['k','bb','bb_minus_k']
364
  balls_in_play_list = ['hard_hit','launch_speed','launch_speed_90','launch_angle','barrel','sweet_spot']
365
  pitches_list = ['zone_percent','swing_percent','sw_str','csw']
@@ -375,6 +383,7 @@ plot_dict = {
375
  'bb_minus_k':{'x_axis':'Plate Appearances','y_axis':'BB-K%','title':'BB-K%','x_value':'bb_minus_k','x_range':[-0.3,-0.2,-0.1,0,0.1,0.2],'percent':True,'percentile_label':'bb_minus_k_percent','flip_p':False,'percentile':False,'avg_adjust':False},
376
  'csw':{'x_axis':'Pitches','y_axis':'CSW%','title':'CSW%','x_value':'csw','x_range':[.2,.25,.3,.35,.4],'percent':True,'percentile_label':'csw_percent','flip_p':True,'percentile':False,'avg_adjust':False},
377
  'woba':{'x_axis':'wOBA PA','y_axis':'wOBA','title':'wOBA','x_value':'woba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'woba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
 
378
  'launch_speed':{'x_axis':'Balls In Play','y_axis':'Exit Velocity','title':'Exit Velocity','x_value':'launch_speed','x_range':[85,90,95,100],'percent':False,'percentile_label':'launch_speed','flip_p':False,'percentile':False,'avg_adjust':False},
379
  'launch_speed_90':{'x_axis':'Balls In Play','y_axis':'90th Percentile Exit Velocity','title':'90th Percentile Exit Velocity','x_value':'launch_speed','x_range':[95,100,105,110,115],'percent':False,'percentile_label':'launch_speed_90','flip_p':False,'percentile':True,'avg_adjust':False},
380
  'hard_hit':{'x_axis':'Balls In Play','y_axis':'HardHit%','title':'HardHit%','x_value':'hard_hit','x_range':[0.2,0.3,0.4,0.5,0.6,0.7],'percent':True,'percentile_label':'hard_hit_percent','flip_p':False,'percentile':False,'avg_adjust':False},
@@ -413,6 +422,7 @@ plot_dict_small = {
413
  'bb_minus_k':'BB-K%',
414
  'csw':'CSW%',
415
  'woba':'wOBA',
 
416
  'launch_speed':'Exit Velocity',
417
  'launch_speed_90':'90th Percentile Exit Velocity',
418
  'hard_hit':'HardHit%',
 
27
  in_zone_model = joblib.load('joblib_model/in_zone_model_knn_20240410.joblib')
28
  px_model = joblib.load('joblib_model/linear_reg_model_x.joblib')
29
  pz_model = joblib.load('joblib_model/linear_reg_model_z.joblib')
30
+ xwoba_model = joblib.load('joblib_model/xwoba_model.joblib')
31
 
32
  def percentile(n):
33
  def percentile_(x):
 
302
  tb = ('tb','sum'),
303
  woba = ('woba','sum'),
304
  woba_codes = ('woba_codes','sum'),
305
+ xwoba = ('xwoba','sum'),
306
+ xwoba_contact = ('xwoba_contact','sum'),
307
+ woba_codes = ('woba_codes','sum'),
308
  hard_hit = ('hard_hit','sum'),
309
  barrel = ('barrel','sum'),
310
  sweet_spot = ('sweet_spot','sum'),
 
361
 
362
  exit_velo_df_codes_summ['swstr_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_velo_df_codes_summ.pitches[x] if exit_velo_df_codes_summ.pitches[x] != 0 else np.nan for x in range(len(exit_velo_df_codes_summ))]
363
 
364
+ df_summ['xwoba_percent'] = [df_summ.xwoba[x]/df_summ.woba_codes[x] if df_summ.woba_codes[x] != 0 else np.nan for x in range(len(df_summ))]
365
+ df_summ['xwoba_percent_contact'] = [df_summ.xwoba_contact[x]/df_summ.bip[x] if df_summ.bip[x] != 0 else np.nan for x in range(len(df_summ))]
366
+
367
+
368
  exit_velo_df_codes_summ = exit_velo_df_codes_summ.dropna(subset=['bip'])
369
 
370
+ woba_list = ['woba','xwoba']
371
  pa_list = ['k','bb','bb_minus_k']
372
  balls_in_play_list = ['hard_hit','launch_speed','launch_speed_90','launch_angle','barrel','sweet_spot']
373
  pitches_list = ['zone_percent','swing_percent','sw_str','csw']
 
383
  'bb_minus_k':{'x_axis':'Plate Appearances','y_axis':'BB-K%','title':'BB-K%','x_value':'bb_minus_k','x_range':[-0.3,-0.2,-0.1,0,0.1,0.2],'percent':True,'percentile_label':'bb_minus_k_percent','flip_p':False,'percentile':False,'avg_adjust':False},
384
  'csw':{'x_axis':'Pitches','y_axis':'CSW%','title':'CSW%','x_value':'csw','x_range':[.2,.25,.3,.35,.4],'percent':True,'percentile_label':'csw_percent','flip_p':True,'percentile':False,'avg_adjust':False},
385
  'woba':{'x_axis':'wOBA PA','y_axis':'wOBA','title':'wOBA','x_value':'woba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'woba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
386
+ 'xwoba':{'x_axis':'xwOBA PA','y_axis':'xwOBA','title':'xwOBA','x_value':'xwoba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'xwoba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
387
  'launch_speed':{'x_axis':'Balls In Play','y_axis':'Exit Velocity','title':'Exit Velocity','x_value':'launch_speed','x_range':[85,90,95,100],'percent':False,'percentile_label':'launch_speed','flip_p':False,'percentile':False,'avg_adjust':False},
388
  'launch_speed_90':{'x_axis':'Balls In Play','y_axis':'90th Percentile Exit Velocity','title':'90th Percentile Exit Velocity','x_value':'launch_speed','x_range':[95,100,105,110,115],'percent':False,'percentile_label':'launch_speed_90','flip_p':False,'percentile':True,'avg_adjust':False},
389
  'hard_hit':{'x_axis':'Balls In Play','y_axis':'HardHit%','title':'HardHit%','x_value':'hard_hit','x_range':[0.2,0.3,0.4,0.5,0.6,0.7],'percent':True,'percentile_label':'hard_hit_percent','flip_p':False,'percentile':False,'avg_adjust':False},
 
422
  'bb_minus_k':'BB-K%',
423
  'csw':'CSW%',
424
  'woba':'wOBA',
425
+ 'xwoba':'xwOBA',
426
  'launch_speed':'Exit Velocity',
427
  'launch_speed_90':'90th Percentile Exit Velocity',
428
  'hard_hit':'HardHit%',