def plot_most_common_airball_shots():
    shot_types = {}
    for file in os.listdir(play_by_play_directory):
        temp_game_id = get_game_id(play_by_play_directory + '/' + file)[2:12]
        if temp_game_id in game_ids:
            event_ids = []
            for set in airball_list.get(temp_game_id[2:]):
                event_ids.append([set[0], set[2]])
            for arr in event_ids:
                type_of_shot = get_type_of_shot(play_by_play_directory + '/' + file, arr[0])
                if type_of_shot not in shot_types.keys():
                    shot_types.update({type_of_shot: 1})
                else:
                    shot_types.update({type_of_shot: shot_types[type_of_shot] + 1})
    data = {"x": [], "y": [], "label": []}
    for key, val in shot_types.items():
        data['x'].append(key)
        data['y'].append(val)

    plt.figure(figsize=(50, 40))
    plt.title('Most Common Types of Airballs', fontsize=20)
    plt.xlabel('types', fontsize=15)
    plt.ylabel('# of occurrences', fontsize=15)
    plt.ylim([0, 5000])
    plt.yticks(np.arange(0, 5000, 200))
    plt.bar(data["x"], data["y"])
    plt.savefig(plots_directory + '/plot_types_of_shots.png')
    plt.show()
    #print(shot_types)
    return shot_types
Exemple #2
0
def plot_for_all_files(play_by_play_directory):
    for file in os.listdir(play_by_play_directory):
        try:
            id = get_game_id(play_by_play_directory + '/' + file)
            id = id[2:12]
            eventid = airball_list.get(id[2:])[0][0]
            period = get_period(play_by_play_directory + '/' + file, eventid)
            time_remaining = get_time_remaining_at_eventid(play_by_play_directory + '/' + file, eventid)
            events_after_5 = get_events_after_5_mins.output_list_for_5_mins_after_airball(file)
            events_before = get_all_events_before_airball.output_list_for_before_airball(file)
            date = file[1:11]
            plot_after_airball(date, events_after_5, period, time_remaining)
            plot_before_airball(date, events_before, period, time_remaining)
            print('Plotted events before and after airball for file: ' + file)
        except:
            continue
def get_events_for_before_airball(filename, airball_list, game_ids,
                                  play_by_play_directory, list_of_lists):
    count = 0
    temp_game_id = get_game_id(play_by_play_directory + '/' + filename)[2:12]
    period = get_period(play_by_play_directory + '/' + filename, temp_game_id)
    if temp_game_id in game_ids:
        event_ids = []
        for set in airball_list.get(temp_game_id[2:]):
            event_ids.append([set[0], set[2]])
        for arr in event_ids:
            id = arr[0]
            list_of_plays = get_all_plays_before_event(
                play_by_play_directory + '/' + filename, arr[1], id, [])
            list_of_lists.append(list_of_plays)
            #print(list_of_plays)
        event_ids.clear()
    return list_of_lists
def get_events_before_5_mins(filename, airball_list, game_ids,
                             play_by_play_directory):
    list_of_lists = []
    count = 0
    temp_game_id = get_game_id(play_by_play_directory + '/' + filename, )[2:12]
    if temp_game_id in game_ids:
        event_ids = []
        for set in airball_list.get(temp_game_id[2:]):
            event_ids.append([set[0], set[2]])

        for arr in event_ids:
            period = get_period(play_by_play_directory + '/' + filename,
                                arr[0])
            time_remaining = get_time_remaining_at_eventid(
                play_by_play_directory + '/' + filename, arr[0])
            #print('time remaining ', time_remaining)

            try:
                edited_time = time_remaining[3:]
                end_time = int(edited_time[0:2])
                if end_time < 7:
                    begin_time = end_time + 5
                    final_time = '00:0' + str(
                        begin_time) + ':' + edited_time[3:]
                    #print('begin time ',final_time)
                    #print(final_time, time_remaining)
                    list_of_plays = get_plays_within_times(
                        play_by_play_directory + '/' + filename, arr[1],
                        final_time, time_remaining, period, [])
                    list_of_lists.append(list_of_plays)
                    #print(list_of_plays)
                    count += 1
                else:
                    #print('12:00:00', time_remaining)
                    list_of_plays = get_plays_within_times(
                        play_by_play_directory + '/' + filename, arr[1],
                        '00:12:00', time_remaining, period, [])
                    list_of_lists.append(list_of_plays)
                    #print(list_of_plays)
                    count += 1
            except:
                continue
        event_ids.clear()
    return list_of_lists
Exemple #5
0
def get_events_after_5_mins(filename, airball_list, game_ids,
                            play_by_play_directory):
    list_of_lists = []
    count = 0
    temp_game_id = get_game_id(play_by_play_directory + '/' + filename, )[2:12]
    if temp_game_id in game_ids:
        event_ids = []
        for set in airball_list.get(temp_game_id[2:]):
            event_ids.append([set[0], set[2]])

        for arr in event_ids:
            period = get_period(play_by_play_directory + '/' + filename,
                                arr[0])
            time_remaining = get_time_remaining_at_eventid(
                play_by_play_directory + '/' + filename, arr[0])

            try:
                edited_time = time_remaining[3:]
                begin_time = int(edited_time[0:2])
                if begin_time > 5:
                    end_time = begin_time - 5
                    final_time = '00:0' + str(end_time) + ':' + edited_time[3:]
                    list_of_plays = get_plays_within_times(
                        play_by_play_directory + '/' + filename, arr[1],
                        time_remaining, final_time, period, [])
                    list_of_lists.append(list_of_plays)
                    #print(list_of_plays)
                    count += 1
                else:
                    list_of_plays = get_plays_within_times(
                        play_by_play_directory + '/' + filename, arr[1],
                        time_remaining, "00:00:01", period, [])
                    list_of_lists.append(list_of_plays)
                    #print(list_of_plays)
                    count += 1
            except:
                continue
        event_ids.clear()
    return list_of_lists
Exemple #6
0
def get_percentage_of_events_before_airball(play_by_play_directory):
    total_num_of_airballs = 0
    event_totals = {
        'assist': 0,
        'rebound': 0,
        'free throw': 0,
        'foul': 0,
        'shot': 0,
        'turnover': 0,
        'sub': 0,
        'miss': 0,
        'violation': 0,
        'nothing': 0,
        'end of period': 0,
        'jump ball': 0,
        'start of period': 0,
        'timeout': 0,
        'unknown': 0
    }
    event_bools = event_totals.fromkeys(event_totals, False)
    event_percentages = event_bools.fromkeys(event_bools, 0)
    airball_list = get_airballs('airballs.csv')
    game_ids = []
    for id in airball_list:
        game_ids.append('00' + id)
    #print(airball_list)
    count = 0
    for file in os.listdir(play_by_play_directory):
        #print('game ', file)
        temp_game_id = get_game_id(play_by_play_directory + '/' + file)[2:12]
        events_for_game = get_events_before_5_mins(file, airball_list,
                                                   game_ids,
                                                   play_by_play_directory)
        #print(events_for_game)
        if temp_game_id in game_ids:
            #print('yes')
            try:
                for outer_arr in events_for_game:
                    total_num_of_airballs += 1
                    for arr in outer_arr:
                        event = arr[1]
                        #print(arr[5])
                        if event_bools.get(event) == False:
                            event_bools.update({event: True})
                        elif arr[8] != '':
                            #print(arr[8])
                            event_bools.update({'assist': True})

                #print(event_bools)
                for key in event_bools:
                    if event_bools.get(key) == True:
                        event_totals[key] += 1
                if True not in event_bools.values():
                    event_totals['nothing'] += 1
                event_bools = event_bools.fromkeys(event_bools, False)
                #print(event_totals)

            except:
                continue
    for key in event_totals:
        event_percentages.update(
            {key: float(event_totals.get(key) / total_num_of_airballs)})
    return event_percentages