Spaces:
Sleeping
Sleeping
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) | |