Jon Solow
Add footballguys queries and Targets page
91793e3
raw
history blame
1.81 kB
from domain.teams import NFLTeam, ALL_TEAMS
from queries.footballguys.helpers import parse_snaps, parse_targets, parse_redzone
from typing import List, Callable, Optional
import pandas as pd
def add_team_name_columns(team_df: pd.DataFrame, team_short_name: str, team_name: str):
team_df.insert(0, "TEAM", team_short_name)
team_df.insert(1, "TEAM_NAME", team_name)
def apply_intended_column_sorting(df: pd.DataFrame, first_columns: List[str]) -> pd.DataFrame:
first_columns_in_df = [col for col in first_columns if col in df.columns]
remaining_columns = [col for col in df.columns if col not in first_columns_in_df]
return df[first_columns_in_df + remaining_columns]
def get_all_teams_stat_type(
all_teams_list: List[NFLTeam],
parsing_function: Callable,
store_key: str,
intended_first_columns: Optional[List[str]] = None,
):
team_df_list = []
for team in all_teams_list:
team_df = parsing_function(team.footballguys_short_name)
add_team_name_columns(team_df, team.team_short_name, team.team_name)
team_df_list.append(team_df)
df = pd.concat(team_df_list)
if intended_first_columns:
df = apply_intended_column_sorting(df, intended_first_columns)
print(f"footballguy {store_key} loaded")
return df
def request_stat(stat_name: str) -> pd.DataFrame:
intended_col_sort = None
if stat_name == "targets":
parse_fxn = parse_targets
intended_col_sort = ["TEAM", "TEAM_NAME", "POS", "name", "total"]
elif stat_name == "snap-counts":
parse_fxn = parse_snaps
elif stat_name == "redzone":
parse_fxn = parse_redzone
intended_col_sort = ["TEAM", "TEAM_NAME", "POS", "name", "total"]
return get_all_teams_stat_type(ALL_TEAMS, parse_fxn, stat_name, intended_col_sort)