Finished basic ratings

This commit is contained in:
Cal Corum 2023-10-27 15:27:33 -05:00
parent b5d10f0060
commit 4e60c11b3d

View File

@ -393,13 +393,93 @@ async def get_basic_scouting(cardset_id: list = Query(default=None)):
return of_arm
elif if_arm is not None:
return if_arm
else:
return 1
raw_data['arm_raw'] = raw_data.apply(get_raw_arm, axis=1)
raw_data['arm_rank'] = raw_data['arm_raw'].rank(pct=True)
raw_data['Arm'] = round(raw_data['arm_rank'] * 100)
output = raw_data[['player_name', 'cardset_name', 'Speed', 'Steal', 'Reaction', 'Arm']]
# raw_data.sort_values(by=['player_id'], inplace=True)
def get_raw_fielding(df_data):
if_error, of_error, c_error = 0, 0, 0
denom = 0
if pd.notna(df_data['Error 3B']) or pd.notna(df_data['Error 2B']) or pd.notna(df_data['Error 1B']) or \
pd.notna(df_data['Error SS']):
raw_if = 100
if pd.notna(df_data['Error 3B']):
raw_if -= (df_data['Error 3B'] * 2)
if pd.notna(df_data['Error SS']):
raw_if -= (df_data['Error SS'] * .75)
if pd.notna(df_data['Error 2B']):
raw_if -= (df_data['Error 2B'] * 1.25)
if pd.notna(df_data['Error 1B']):
raw_if -= (df_data['Error 1B'] * 2)
if_error = max(1, raw_if)
denom += 1
if pd.notna(df_data['Error LF']) or pd.notna(df_data['Error CF']) or pd.notna(df_data['Error RF']):
raw_of = 100
if pd.notna(df_data['Error LF']):
raw_of -= (df_data['Error LF'] * 2)
if pd.notna(df_data['Error CF']):
raw_of -= (df_data['Error CF'] * .75)
if pd.notna(df_data['Error RF']):
raw_of -= (df_data['Error RF'] * 1.25)
of_error = max(1, raw_of)
denom += 1
if pd.notna(df_data['Error C']):
c_error = max(100 - (df_data['Error C'] * 5) - df_data['Throw C'] - df_data['PB C'], 1)
denom += 1
return sum([if_error, of_error, c_error]) / max(denom, 1)
raw_data['fld_raw'] = raw_data.apply(get_raw_fielding, axis=1)
raw_data['fld_rank'] = raw_data['fld_raw'].rank(pct=True)
raw_data['Fielding'] = round(raw_data['fld_rank'] * 100)
raw_data['convl_rank'] = raw_data['avg_vl'].rank(pct=True)
raw_data['Contact L'] = round(raw_data['convl_rank'] * 100)
raw_data['convr_rank'] = raw_data['avg_vr'].rank(pct=True)
raw_data['Contact R'] = round(raw_data['convr_rank'] * 100)
raw_data['powvl_rank'] = raw_data['slg_vl'].rank(pct=True)
raw_data['Power L'] = round(raw_data['powvl_rank'] * 100)
raw_data['powvr_rank'] = raw_data['slg_vr'].rank(pct=True)
raw_data['Power R'] = round(raw_data['powvr_rank'] * 100)
def get_raw_vision(df_data):
return (
((((df_data['obp_vr'] * 0.67) + (df_data['obp_vl'] * 0.33)) -
((df_data['avg_vr'] * 0.67) + (df_data['avg_vl'] * 0.33))) * 5) -
(((df_data['strikeout_vl'] * 0.33) + (df_data['strikeout_vr'] * 0.67)) / 208)
)
raw_data['vis_raw'] = raw_data.apply(get_raw_vision, axis=1)
raw_data['vis_rank'] = raw_data['vis_raw'].rank(pct=True)
raw_data['Vision'] = round(raw_data['vis_rank'] * 100)
def get_raw_rating(df_data):
return (
((df_data['Reaction'] + df_data['Arm'] + df_data['Fielding']) * 2) +
(df_data['Speed'] + df_data['Steal']) +
((((df_data['Contact R'] + df_data['Power R']) * 0.67) +
((df_data['Contact L'] + df_data['Power L']) * 0.33) + df_data['Vision'] ) * 6
)
)
raw_data['rat_raw'] = raw_data.apply(get_raw_rating, axis=1)
raw_data['rat_rank'] = raw_data['rat_raw'].rank(pct=True)
raw_data['Rating'] = round(raw_data['rat_rank'] * 100)
output = raw_data[[
'player_name', 'Rating', 'Contact R', 'Contact L', 'Power R', 'Power L', 'Vision', 'Speed',
'Steal', 'Reaction', 'Arm', 'Fielding', 'hand', 'cardset_name'
]]
return Response(content=output.to_csv(index=True), media_type='text/csv')