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)