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
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
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
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