def determine_from_listed_position(): general_stats_ep = GeneralPlayerStats() guards = general_stats_ep.get_data({'Season': '2017-18', 'PlayerPosition': 'G'}) forwards = general_stats_ep.get_data({'Season': '2017-18', 'PlayerPosition': 'F'}) centers = general_stats_ep.get_data({'Season': '2017-18', 'PlayerPosition': 'C'}) guards['G'] = 1 forwards['F'] = 1 centers['C'] = 1 merge_df = pd.merge(guards, forwards, on=['PLAYER_NAME', 'PLAYER_ID', 'TEAM_ABBREVIATION', 'TEAM_ID'], how='outer') merge_df = pd.merge(merge_df, centers, on=['PLAYER_NAME', 'PLAYER_ID', 'TEAM_ABBREVIATION', 'TEAM_ID'], how='outer') merge_df = merge_df[['PLAYER_NAME', 'PLAYER_ID', 'TEAM_ABBREVIATION', 'TEAM_ID', 'G', 'F', 'C']] merge_df = merge_df.fillna(0) conditions = [ ((merge_df['G'] == 1) & (merge_df['F'] == 0) & (merge_df['C'] == 0)), ((merge_df['F'] == 1) & (merge_df['C'] == 0)), (merge_df['C'] == 1) ] choices = ['Guard', 'Wing', 'Big'] merge_df['POSITION'] = np.select(conditions, choices, default='None') return merge_df
def compare_to_normal_offense(): matchup_ep = Matchups() general_stats_ep = GeneralPlayerStats() matchup_df = matchup_ep.aggregate_data(override_file=False) matchup_df['EFG'] = ((matchup_df['FG3M'] * 3) + ((matchup_df['FGM'] - matchup_df['FG3M']) * 2)) / (matchup_df['FGA']) * 50 general_stats_df = general_stats_ep.get_data( {'Season': '2017-18', 'PerMode': 'Per100Possessions', 'MeasureType': 'Base'}, override_file=True) stat_cols = ['AST', 'FG3A', 'FG3M', 'FGA', 'FGM', 'FTM'] general_stats_df = general_stats_df[['PLAYER_NAME'] + stat_cols] general_stats_df['OFF_PLAYER_EFG'] = ((general_stats_df['FG3M'] * 3) + ( (general_stats_df['FGM'] - general_stats_df['FG3M']) * 2)) / (general_stats_df['FGA']) * 50 for sc in stat_cols: general_stats_df = general_stats_df.rename(columns={sc: 'OFF_PLAYER_' + sc + '_PER_100'}) matchup_df = pd.merge(matchup_df, general_stats_df, left_on='OFF_PLAYER', right_on='PLAYER_NAME', how='left') for sc in stat_cols: matchup_df[sc + '_ABOVE_EXP'] = matchup_df[sc] - (matchup_df['OFF_PLAYER_' + sc + '_PER_100'] / 100 * matchup_df['POSS']) matchup_df['EFG_ABOVE_EXP'] = matchup_df['EFG'] - matchup_df['OFF_PLAYER_EFG'] matchup_df.to_csv(data_dir + 'Matchup_per_100_comp.csv')
def compare_to_normal_offense(): matchup_ep = Matchups() general_stats_ep = GeneralPlayerStats() matchup_df = matchup_ep.aggregate_data(override_file=False) matchup_df['EFG'] = ((matchup_df['FG3M'] * 3) + ((matchup_df['FGM'] - matchup_df['FG3M']) * 2)) / ( matchup_df['FGA']) * 50 general_stats_df = general_stats_ep.get_data( { 'Season': '2017-18', 'PerMode': 'Per100Possessions', 'MeasureType': 'Base' }, override_file=True) stat_cols = ['AST', 'FG3A', 'FG3M', 'FGA', 'FGM', 'FTM'] general_stats_df = general_stats_df[['PLAYER_NAME'] + stat_cols] general_stats_df['OFF_PLAYER_EFG'] = ((general_stats_df['FG3M'] * 3) + ( (general_stats_df['FGM'] - general_stats_df['FG3M']) * 2)) / ( general_stats_df['FGA']) * 50 for sc in stat_cols: general_stats_df = general_stats_df.rename( columns={sc: 'OFF_PLAYER_' + sc + '_PER_100'}) matchup_df = pd.merge(matchup_df, general_stats_df, left_on='OFF_PLAYER', right_on='PLAYER_NAME', how='left') for sc in stat_cols: matchup_df[sc + '_ABOVE_EXP'] = matchup_df[sc] - ( matchup_df['OFF_PLAYER_' + sc + '_PER_100'] / 100 * matchup_df['POSS']) matchup_df[ 'EFG_ABOVE_EXP'] = matchup_df['EFG'] - matchup_df['OFF_PLAYER_EFG'] matchup_df.to_csv(data_dir + 'Matchup_per_100_comp.csv')
pass_ep = PlayerPassDashboard() general_ep = GeneralPlayerStats() season = '2017-18' team_id = '1610612740' team_name = 'Pelicans' per_mode = 'PerGame' games_filter = 30 minutes_filter = 25 data_override = False general_df = general_ep.get_data( { 'Season': season, 'PerMode': per_mode, 'MeasureType': 'Base', 'TeamID': team_id }, override_file=data_override) general_df = general_df[general_df['GP'] >= games_filter] general_df = general_df[general_df['MIN'] >= minutes_filter] general_df = general_df.sort_values(by='MIN', ascending=False) players = general_df['PLAYER_ID'].tolist() df = pd.DataFrame() for ix, player in general_df.iterrows(): player_pass_df = pass_ep.get_data( {
import plotly.plotly as py import plotly.graph_objs as go pass_ep = PlayerPassDashboard() general_ep = GeneralPlayerStats() season = '2017-18' team_id = '1610612740' team_name = 'Pelicans' per_mode = 'PerGame' games_filter = 30 minutes_filter = 25 data_override = False general_df = general_ep.get_data({'Season': season, 'PerMode': per_mode, 'MeasureType': 'Base', 'TeamID': team_id}, override_file=data_override) general_df = general_df[general_df['GP'] >= games_filter] general_df = general_df[general_df['MIN'] >= minutes_filter] general_df = general_df.sort_values(by='MIN', ascending=False) players = general_df['PLAYER_ID'].tolist() df = pd.DataFrame() for ix, player in general_df.iterrows(): player_pass_df = pass_ep.get_data( {'Season': season, 'PerMode': per_mode, 'PlayerID': player.PLAYER_ID, 'TeamID': player.TEAM_ID}, override_file=data_override) if len(player_pass_df) == 0: