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