Added left on base stats
This commit is contained in:
parent
f6e9e6c7fd
commit
b3d2854210
@ -279,7 +279,32 @@ async def get_batting_totals(
|
||||
fn.SUM(StratPlay.sb).alias('sum_sb'), fn.SUM(StratPlay.cs).alias('sum_cs'),
|
||||
fn.SUM(StratPlay.bphr).alias('sum_bphr'), fn.SUM(StratPlay.bpfo).alias('sum_bpfo'),
|
||||
fn.SUM(StratPlay.bp1b).alias('sum_bp1b'), fn.SUM(StratPlay.bplo).alias('sum_bplo'),
|
||||
fn.SUM(StratPlay.wpa).alias('sum_wpa'))
|
||||
fn.SUM(StratPlay.wpa).alias('sum_wpa'),
|
||||
fn.COUNT(StratPlay.on_first_final).filter(
|
||||
StratPlay.on_first_final.is_null(False) & (StratPlay.on_first_final != 4)).alias('count_lo1'),
|
||||
fn.COUNT(StratPlay.on_second_final).filter(
|
||||
StratPlay.on_second_final.is_null(False) & (StratPlay.on_second_final != 4)).alias('count_lo2'),
|
||||
fn.COUNT(StratPlay.on_third_final).filter(
|
||||
StratPlay.on_third_final.is_null(False) & (StratPlay.on_third_final != 4)).alias('count_lo3'),
|
||||
fn.COUNT(StratPlay.on_first).filter(StratPlay.on_first.is_null(False)).alias('count_runner1'),
|
||||
fn.COUNT(StratPlay.on_second).filter(StratPlay.on_second.is_null(False)).alias('count_runner2'),
|
||||
fn.COUNT(StratPlay.on_third).filter(StratPlay.on_third.is_null(False)).alias('count_runner3'),
|
||||
fn.COUNT(StratPlay.on_first_final).filter(
|
||||
StratPlay.on_first_final.is_null(False) & (StratPlay.on_first_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo1_3out'),
|
||||
fn.COUNT(StratPlay.on_second_final).filter(
|
||||
StratPlay.on_second_final.is_null(False) & (StratPlay.on_second_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo2_3out'),
|
||||
fn.COUNT(StratPlay.on_third_final).filter(
|
||||
StratPlay.on_third_final.is_null(False) & (StratPlay.on_third_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo3_3out')
|
||||
# fn.COUNT(StratPlay.on_first).filter(StratPlay.on_first.is_null(False) &
|
||||
# (StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_runner1_3out'),
|
||||
# fn.COUNT(StratPlay.on_second).filter(StratPlay.on_second.is_null(False) &
|
||||
# (StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_runner2_3out'),
|
||||
# fn.COUNT(StratPlay.on_third).filter(StratPlay.on_third.is_null(False) &
|
||||
# (StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_runner3_3out')
|
||||
)
|
||||
.where((StratPlay.game << season_games) & (StratPlay.batter.is_null(False)))
|
||||
.having(fn.SUM(StratPlay.pa) >= min_pa)
|
||||
)
|
||||
@ -372,6 +397,9 @@ async def get_batting_totals(
|
||||
}
|
||||
|
||||
for x in bat_plays:
|
||||
logging.info(
|
||||
f'batter: {x.batter_id} / left on 1: {x.count_lo1} / left on 2: {x.count_lo2} / left on 3: {x.count_lo3}'
|
||||
)
|
||||
this_run = run_plays.where(StratPlay.runner == x.batter)
|
||||
if this_run.count() > 0:
|
||||
sum_sb = this_run[0].sum_sb
|
||||
@ -398,6 +426,11 @@ async def get_batting_totals(
|
||||
if group_by in ['playergame', 'teamgame']:
|
||||
this_game = x.game_id if short_output else model_to_dict(x.game, recurse=False)
|
||||
|
||||
lob_all_rate, lob_2outs_rate = 0, 0
|
||||
if x.count_runner1 + x.count_runner2 + x.count_runner3 > 0:
|
||||
lob_all_rate = (x.count_lo1 + x.count_lo2 + x.count_lo3) / \
|
||||
(x.count_runner1 + x.count_runner2 + x.count_runner3)
|
||||
|
||||
return_stats['stats'].append({
|
||||
'player': x.batter_id if short_output else model_to_dict(x.batter, recurse=False),
|
||||
'team': x.batter_team_id if short_output else model_to_dict(x.batter_team, recurse=False),
|
||||
@ -428,7 +461,10 @@ async def get_batting_totals(
|
||||
'ops': obp + slg,
|
||||
'woba': (.69 * x.sum_bb + .72 * x.sum_hbp + .89 * (x.sum_hit - x.sum_double - x.sum_triple - x.sum_hr) +
|
||||
1.27 * x.sum_double + 1.62 * x.sum_triple + 2.1 * x.sum_hr) / (x.sum_pa - x.sum_ibb),
|
||||
'game': this_game
|
||||
'game': this_game,
|
||||
'lob_all': x.count_lo1 + x.count_lo2 + x.count_lo3,
|
||||
'lob_all_rate': lob_all_rate,
|
||||
'lob_2outs': x.count_lo1_3out + x.count_lo2_3out + x.count_lo3_3out
|
||||
})
|
||||
|
||||
# Get Running Stats
|
||||
@ -471,7 +507,25 @@ async def get_pitching_totals(
|
||||
fn.SUM(StratPlay.bphr).alias('sum_bphr'), fn.SUM(StratPlay.bpfo).alias('sum_bpfo'),
|
||||
fn.SUM(StratPlay.bp1b).alias('sum_bp1b'), fn.SUM(StratPlay.bplo).alias('sum_bplo'),
|
||||
fn.SUM(StratPlay.wild_pitch).alias('sum_wp'), fn.SUM(StratPlay.balk).alias('sum_balk'),
|
||||
fn.SUM(StratPlay.outs).alias('sum_outs'), fn.SUM(StratPlay.e_run).alias('sum_erun'))
|
||||
fn.SUM(StratPlay.outs).alias('sum_outs'), fn.SUM(StratPlay.e_run).alias('sum_erun'),
|
||||
fn.COUNT(StratPlay.on_first_final).filter(
|
||||
StratPlay.on_first_final.is_null(False) & (StratPlay.on_first_final != 4)).alias('count_lo1'),
|
||||
fn.COUNT(StratPlay.on_second_final).filter(
|
||||
StratPlay.on_second_final.is_null(False) & (StratPlay.on_second_final != 4)).alias('count_lo2'),
|
||||
fn.COUNT(StratPlay.on_third_final).filter(
|
||||
StratPlay.on_third_final.is_null(False) & (StratPlay.on_third_final != 4)).alias('count_lo3'),
|
||||
fn.COUNT(StratPlay.on_first).filter(StratPlay.on_first.is_null(False)).alias('count_runner1'),
|
||||
fn.COUNT(StratPlay.on_second).filter(StratPlay.on_second.is_null(False)).alias('count_runner2'),
|
||||
fn.COUNT(StratPlay.on_third).filter(StratPlay.on_third.is_null(False)).alias('count_runner3'),
|
||||
fn.COUNT(StratPlay.on_first_final).filter(
|
||||
StratPlay.on_first_final.is_null(False) & (StratPlay.on_first_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo1_3out'),
|
||||
fn.COUNT(StratPlay.on_second_final).filter(
|
||||
StratPlay.on_second_final.is_null(False) & (StratPlay.on_second_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo2_3out'),
|
||||
fn.COUNT(StratPlay.on_third_final).filter(
|
||||
StratPlay.on_third_final.is_null(False) & (StratPlay.on_third_final != 4) &
|
||||
(StratPlay.starting_outs + StratPlay.outs == 3)).alias('count_lo3_3out'))
|
||||
.where((StratPlay.game << season_games) & (StratPlay.pitcher.is_null(False)))
|
||||
.having(fn.SUM(StratPlay.pa) >= min_pa)
|
||||
)
|
||||
@ -552,6 +606,11 @@ async def get_pitching_totals(
|
||||
this_game = x.game_id if short_output else model_to_dict(x.game, recurse=False)
|
||||
this_dec = all_dec.where((Decision.pitcher == x.pitcher) & (Decision.game == x.game))
|
||||
|
||||
lob_all_rate, lob_2outs_rate = 0, 0
|
||||
if x.count_runner1 + x.count_runner2 + x.count_runner3 > 0:
|
||||
lob_all_rate = (x.count_lo1 + x.count_lo2 + x.count_lo3) / \
|
||||
(x.count_runner1 + x.count_runner2 + x.count_runner3)
|
||||
|
||||
return_stats['stats'].append({
|
||||
'player': x.pitcher_id if short_output else model_to_dict(x.pitcher, recurse=False),
|
||||
'team': x.pitcher_team_id if short_output else model_to_dict(x.pitcher_team, recurse=False),
|
||||
@ -599,7 +658,8 @@ async def get_pitching_totals(
|
||||
'k/9': x.sum_so * 9 / (tot_outs / 3),
|
||||
'bb/9': x.sum_bb * 9 / (tot_outs / 3),
|
||||
'k/bb': x.sum_so / tot_bb,
|
||||
'game': this_game
|
||||
'game': this_game,
|
||||
'lob_2outs': x.count_lo1_3out + x.count_lo2_3out + x.count_lo3_3out
|
||||
})
|
||||
db.close()
|
||||
return return_stats
|
||||
|
||||
Loading…
Reference in New Issue
Block a user