def prep_player_stats(extension):
    '''
    Prepare the player stats for the database.
        Parameters:
            extension (string): The URL extension of a given player (e.g. 'hardenja01')
        Returns:
            A Pandas dataframe containing player stats, transformed for the database.
    '''
    df = players.get_career_player_stats(extension, 'game')
    cols = [
        'year', 'age', 'tm', 'lg', 'pos', 'g', 'gs', 'mp', 'fg', 'fga', 'fgp',
        'three', 'threeA', 'threeP', 'two', 'twoA', 'twoP', 'efg', 'ft', 'fta',
        'ftp', 'orb', 'drb', 'trb', 'ast', 'stl', 'blk', 'tov', 'pf', 'pts'
    ]
    pre_cols = [
        'Season', 'Age', 'Tm', 'Lg', 'Pos', 'G', 'GS', 'MP', 'FG', 'FGA',
        'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA',
        'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'
    ]
    df = df.drop(df[df['Season'].str.contains("season")].index)
    df = df.drop(df[df['Season'].str.contains("Career")].index)
    for stat in pre_cols:
        if not df.columns.isin([stat]).any():
            df[stat] = 0
    renames = {pre_cols[i]: cols[i] for i in range(len(cols))}
    df = df.rename(columns=renames)
    df['playerid'] = extension
    df['year'] = df['year'].apply(db.prep_year)
    return df
    def test_get_game_stats(self):
        fields = [
            'Season', 'Age', 'Tm', 'Lg', 'Pos', 'G', 'GS', 'MP', 'FG', 'FGA',
            'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA',
            'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'
        ]
        measurements = ['game', 'playoffGame']
        for item in measurements:
            name = "tatumja01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jordami01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jamesle01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)
    def test_career_highs(self):
        fields = [
            'Season', 'Age', 'Tm', 'Lg', 'MP', 'FG', 'FGA', '3P', '3PA', '2P',
            '2PA', 'FT', 'FTA', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK',
            'TOV', 'PF', 'PTS', 'GmSc'
        ]
        measurements = ['careerHighs', 'playoffCareerHighs']
        for item in measurements:
            name = "bealbr01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jordami01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jamesle01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)
    def test_shooting_stats(self):
        fields = [
            'Season', 'Age', 'Tm', 'Lg', 'Pos', 'G', 'MP', 'FG%', 'Dist.',
            '2P', '0-3', '3-10', '10-16', '16-3P', '3P', '2P', '0-3', '3-10',
            '10-16', '16-3P', '3P', '2P', '3P', '%FGA', '#', '%3PA', '3P%',
            'Att.', '#'
        ]
        measurements = ['shooting', 'playoffShooting']
        for item in measurements:
            name = "bealbr01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jordami01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)

            name = "jamesle01"
            df = players.get_career_player_stats(name, item)
            self.assertCountEqual(list(df.columns), fields)
 def test_min_stats_fail(self):
     name = "dowhyt01"
     fields = [
         'Season', 'Age', 'Tm', 'Lg', 'Pos', 'G', 'GS', 'MP', 'FG', 'FGA',
         'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'FT', 'FTA', 'FT%',
         'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'
     ]
     measurements = ['min', 'playoffMin']
     for item in measurements:
         df = players.get_career_player_stats(name, item)
         self.assertCountEqual(list(df.columns), fields)