Added ratings post and positions post - to be tested

This commit is contained in:
Cal Corum 2024-10-25 07:48:56 -05:00
parent 5c6d706160
commit b3cce68576

View File

@ -581,9 +581,7 @@ def calc_positions(bs: pd.DataFrame) -> pd.DataFrame:
async def get_or_post_players(stat_df: pd.DataFrame, bat_card_df: pd.DataFrame, bat_rat_df: pd.DataFrame, def_rat_df: pd.DataFrame) -> pd.DataFrame:
# Columns: bbref_id, player_id
# all_bbref_ids = []
# all_player_ids = []
# Refactor this to support batters or pitchers, make stat dfs optional and send to getorpostbatters/getorpostpitchers
all_players = []
dev_count = 0
@ -662,7 +660,6 @@ async def get_or_post_players(stat_df: pd.DataFrame, bat_card_df: pd.DataFrame,
dev_count += 1
# new_data = {'key_bbref': all_bbref_ids, 'player_id': all_player_ids}
players_df = pd.DataFrame(all_players).set_index('bbref_id')
return players_df
@ -690,6 +687,47 @@ async def post_batting_cards(cards_df: pd.DataFrame):
raise ValueError(e_msg)
async def post_batting_ratings(ratings_df: pd.DataFrame):
all_ratings = []
def append_ratings(row):
vl = row['ratings_vL']
vl['player_id'] = row['player_id']
vr = row['ratings_vR']
vr['player_id'] = row['player_id']
all_ratings.append(vl)
all_ratings.append(vr)
ratings_df.apply(append_ratings, axis=1)
resp = await db_put('battingcardratings', payload={'ratings': all_ratings}, timeout=6)
if resp is not None:
return True
else:
e_msg = 'Unable to post batting ratings'
logging.debug(e_msg, stack_info=True)
raise ValueError(e_msg)
async def post_positions(pos_df: pd.DataFrame):
all_pos = []
def append_positions(row):
new_val = row.to_dict()
new_val['player_id'] = int(row['player_id'])
all_pos.append(new_val)
pos_df.apply(append_positions, axis=1)
resp = await db_put('cardpositions', payload={'positions': all_pos}, timeout=6)
if resp is not None:
return True
else:
e_msg = 'Unable to post positions'
logging.debug(e_msg, stack_info=True)
raise ValueError(e_msg)
async def post_batter_data(bs: pd.DataFrame, bc: pd.DataFrame, br: pd.DataFrame, dr: pd.date_range) -> int:
all_players = await get_or_post_players(bs, bc, br, dr)
@ -704,9 +742,26 @@ async def post_batter_data(bs: pd.DataFrame, bc: pd.DataFrame, br: pd.DataFrame,
await post_batting_cards(bc)
# Post Batting Ratings
br = pd.merge(
left=br,
right=all_players,
how='right', #'left',
left_on='key_bbref',
right_on='bbref_id'
)
await post_batting_ratings(br)
# Post Positions
pass
dr = pd.merge(
left=dr,
right=all_players,
how='right', # 'left',
left_on='key_bbref',
right_on='bbref_id'
)
await post_positions(dr)
return len(all_players)
async def run_batters(data_input_path: str, start_date: int, end_date: int, post_data: bool = False, season_pct: float = 1.0):