Add ignore_limits parameter

This commit is contained in:
Cal Corum 2023-11-29 10:34:10 -06:00
parent 80d5bc9763
commit 14bf66212e
4 changed files with 27 additions and 17 deletions

View File

@ -59,14 +59,18 @@ async def pd_battingcardratings_df(cardset_id: int):
# return pd.DataFrame(bcr_query['ratings']).rename(columns={'battingcard': 'battingcard_id'})
def get_batting_stats(file_path: str = None, start_date: datetime.datetime = None, end_date: datetime.datetime = None):
def get_batting_stats(
file_path: str = None, start_date: datetime.datetime = None, end_date: datetime.datetime = None,
ignore_limits: bool = False):
min_vl = 20 if not ignore_limits else 1
min_vr = 40 if not ignore_limits else 1
if file_path is not None:
vl_basic = pd.read_csv(f'{file_path}vlhp-basic.csv').query('PA >= 20')
vr_basic = pd.read_csv(f'{file_path}vrhp-basic.csv').query('PA >= 40')
vl_basic = pd.read_csv(f'{file_path}vlhp-basic.csv').query(f'PA >= {min_vl}')
vr_basic = pd.read_csv(f'{file_path}vrhp-basic.csv').query(f'PA >= {min_vr}')
total_basic = pd.merge(vl_basic, vr_basic, on="playerId", suffixes=('_vL', '_vR'))
vl_rate = pd.read_csv(f'{file_path}vlhp-rate.csv').query('PA >= 20')
vr_rate = pd.read_csv(f'{file_path}vrhp-rate.csv').query('PA >= 40')
vl_rate = pd.read_csv(f'{file_path}vlhp-rate.csv').query(f'PA >= {min_vl}')
vr_rate = pd.read_csv(f'{file_path}vrhp-rate.csv').query(f'PA >= {min_vr}')
total_rate = pd.merge(vl_rate, vr_rate, on="playerId", suffixes=('_vL', '_vR'))
return pd.merge(total_basic, total_rate, on="playerId", suffixes=('', '_rate'))
@ -384,12 +388,12 @@ async def post_player_updates(
async def run_batters(
cardset: dict, input_path: str, post_players: bool, card_base_url: str, release_directory: str,
player_description: str, season_pct: float, post_batters: bool, pull_fielding: bool, season: int,
is_liveseries: bool):
is_liveseries: bool, ignore_limits: bool):
print(f'Pulling PD player IDs...')
pd_players = await pd_players_df(cardset['id'])
print('Reading batting stats...')
all_stats = get_batting_stats(file_path=input_path)
all_stats = get_batting_stats(file_path=input_path, ignore_limits=ignore_limits)
print(f'Processed {len(all_stats.values)} batters\n')
bat_step1 = match_player_lines(all_stats, pd_players)
if post_players:

View File

@ -75,7 +75,7 @@ async def url_get(url: str, timeout: int = 3):
else:
e = await r.text()
logging.error(e)
raise ValueError(f'DB: {r.text()}')
raise ValueError(f'DB: {e}')
async def db_patch(endpoint: str, object_id: int, params: list, api_ver: int = 2, timeout: int = 3):

View File

@ -71,13 +71,14 @@ async def main(args):
post_players = True if 'post_players' not in arg_data or arg_data['post_players'].lower() == 'true' else False
pull_fielding = True if 'pull_fielding' not in arg_data or arg_data['pull_fielding'].lower() == 'true' else False
is_liveseries = True if 'is_liveseries' not in arg_data or arg_data['is_liveseries'].lower() == 'true' else False
ignore_limits = False if 'ignore_limits' not in arg_data or arg_data['ignore_limits'].lower() == 'false' else True
start_time = datetime.datetime.now()
release_directory = f'{start_time.year}-{start_time.month}-{start_time.day}'
data = await batters.creation.run_batters(
cardset, input_path, post_players, CARD_BASE_URL, release_directory, player_description, season_pct,
post_batters, pull_fielding, season, is_liveseries
post_batters, pull_fielding, season, is_liveseries, ignore_limits
)
print(f'Batter updates are complete')
@ -88,7 +89,7 @@ async def main(args):
data = await pitchers.creation.run_pitchers(
cardset, input_path, CARD_BASE_URL, season, release_directory, player_description, season_pct, post_players,
post_pitchers, is_liveseries
post_pitchers, is_liveseries, ignore_limits
)
pitching_stats = data['pitching_stats']

View File

@ -10,15 +10,19 @@ from defenders import calcs_defense as cde
from . import calcs_pitcher as cpi
def get_pitching_stats(file_path: str = None, start_date: datetime.datetime = None, end_date: datetime.datetime = None):
def get_pitching_stats(
file_path: str = None, start_date: datetime.datetime = None, end_date: datetime.datetime = None,
ignore_limits: bool = False):
print('Reading pitching stats...')
min_vl = 20 if not ignore_limits else 1
min_vr = 40 if not ignore_limits else 1
if file_path is not None:
vl_basic = pd.read_csv(f'{file_path}vlhh-basic.csv').query('TBF >= 20')
vr_basic = pd.read_csv(f'{file_path}vrhh-basic.csv').query('TBF >= 40')
vl_basic = pd.read_csv(f'{file_path}vlhh-basic.csv').query(f'TBF >= {min_vl}')
vr_basic = pd.read_csv(f'{file_path}vrhh-basic.csv').query(f'TBF >= {min_vr}')
total_basic = pd.merge(vl_basic, vr_basic, on="playerId", suffixes=('_vL', '_vR'))
vl_rate = pd.read_csv(f'{file_path}vlhh-rate.csv').query('TBF >= 20')
vr_rate = pd.read_csv(f'{file_path}vrhh-rate.csv').query('TBF >= 40')
vl_rate = pd.read_csv(f'{file_path}vlhh-rate.csv').query(f'TBF >= {min_vl}')
vr_rate = pd.read_csv(f'{file_path}vrhh-rate.csv').query(f'TBF >= {min_vr}')
total_rate = pd.merge(vl_rate, vr_rate, on="playerId", suffixes=('_vL', '_vR'))
return pd.merge(total_basic, total_rate, on="playerId", suffixes=('', '_rate'))
@ -468,11 +472,12 @@ async def post_player_updates(
async def run_pitchers(
cardset: dict, input_path: str, card_base_url: str, season: int, release_directory: str,
player_description: str, season_pct: float, post_players: bool, post_pitchers: bool, is_liveseries: bool):
player_description: str, season_pct: float, post_players: bool, post_pitchers: bool, is_liveseries: bool,
ignore_limits: bool):
print(f'Pulling PD player IDs...')
pd_players = await pd_players_df(cardset['id'])
all_stats = get_pitching_stats(file_path=input_path)
all_stats = get_pitching_stats(file_path=input_path, ignore_limits=ignore_limits)
print(f'Processed {len(all_stats.values)} pitchers\n')
print(f'Pulling pitcher defense...')