Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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')
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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(
        {
Ejemplo n.º 5
0
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: