File size: 1,811 Bytes
91793e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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)