def team_game_log(): with sql_query.SqlQuery() as query: for season in range(1995, 2021): season_games = endpoints.LeagueGameLog( season=season, headers=constant.headers).get_normalized_dict( )['LeagueGameLog'] game_data = [] # array of tuples to hold teams season games for game in season_games: # iterate over teams games played in a season home = False win = False opponent_id = constant.team_abbr[re.split( r'\W\s', game['MATCHUP'])[1]] if not re.findall('@', game['MATCHUP'] ): # if not away team set home team to true home = True if game['WL'] is 'W': # if team won set win to true win = True game_data.append( [game['GAME_ID'], game['TEAM_ID'], home, opponent_id, win]) query.insert_many( game_data, 'team_event', ) time.sleep(random.randint(4, 7))
def nba_seasons(): season = 1970 # start season tuple_list = [] # list of tuples holds season data while season < 2021: year = str(season) + "-" + str(season + 1) tuple_list.append((season + 210000, year)) season += 1 with sql_query.SqlQuery() as query: # insert into sql table5 query.insert_many(tuple_list, table='season')
def league_game_logs(): with sql_query.SqlQuery() as query: for season in range(1995, 2021): # loop through seasons we want season_games = endpoints.LeagueGameLog( season=season, headers=constant.headers).get_normalized_dict( )['LeagueGameLog'] season_game_data = [ ] # list of tuples representing a season, each tuple object representing a game in the season for x in range(0, len(season_games), 2): game = season_games[x] season_id = int(game['SEASON_ID']) + 190000 season_game_data.append( (game['GAME_ID'], game['GAME_DATE'], season_id, 21)) print(season_game_data) if len(season_game_data) > 0: query.insert_many(season_game_data, table='event')
def active_player_seasons(): upper = UPPER_RANGE lower = LOWER_RANGE with sql_query.SqlQuery() as query: active_players = query.get_table('player', '*', 'WHERE is_active = 1 ', dataframe=False) a = 0 for x in range(0, len(active_players)): a = a + 1 if a > 513: player_id = active_players[x][0] # current player_id season_logs = endpoints.CommonPlayerInfo( player_id, headers=constant.headers) team_id = season_logs.get_normalized_dict( )['CommonPlayerInfo'][0]['TEAM_ID'] seasons = season_logs.get_data_frames()[ 2] # available seasons for player seasons = seasons[(seasons['SEASON_ID'] > lower) & (seasons['SEASON_ID'] < upper )] # filtering out preseason and playoffs seasons = seasons.astype(int) seasons['player_id'] = player_id seasons = seasons[['player_id', 'SEASON_ID']] seasons.columns = ['player_id', 'season_id'] seasons['season_id'] += 190000 arg = f"WHERE id={player_id}" query.insert_many(seasons, 'player_season') print(team_id) if team_id != 0: query.update_row(team_id, 'player', 'team_id', arg) print(a) time.sleep(random.randint(2, 4))
def nba_players(): with sql_query.SqlQuery() as query: df = pd.DataFrame(players.get_players()) query.insert_many(df, table='player')
def nba_teams(): teams = pd.DataFrame(teams_nba.get_teams()) teams = teams.drop(columns='year_founded', axis=0) teams = teams.drop(columns='nickname', axis=0) with sql_query.SqlQuery() as query: query.insert_many(teams, 'team', True)
def team_game_event(): with sql_query.SqlQuery() as query: team_seasons = query.get_table( 'team', dataframe=False ) # gets avaliable seasons for every active player from sql database len_team_seasons = len(team_seasons) for x in range( 0, len_team_seasons ): # for each team season in seasons starting with first active time.sleep(2) team_season_games = endpoints.TeamGameLog( team_id=team_seasons[x][0], season=2019, #just did it season by season headers=constant.headers).get_normalized_dict()['TeamGameLog'] # player game event data game_frame = pd.DataFrame( team_season_games) # holds season of games for player game_frame = game_frame.rename( columns={ 'Team_ID': 'team_id', 'Game_ID': 'event_id', 'GAME_DATE': 'game_date', 'MIN': 'min', 'FGM': 'fgm', 'FGA': 'fga', 'FG_PCT': 'fg_pct', 'FG3M': 'fg3m', 'FG3A': 'fg3a', 'FG3_PCT': 'fg3_pct', 'FTM': 'ftm', 'FTA': 'fta', 'FT_PCT': 'ft_pct', 'OREB': 'oreb', 'DREB': 'dreb', 'REB': 'reb', 'AST': 'ast', 'STL': 'stl', 'BLK': 'blk', 'TOV': 'tov', 'PF': 'pf', 'PTS': 'pts' }) if len(game_frame) > 0: game_frame['team_id'] = game_frame['MATCHUP'].str.extract( r'(^\w{3})') #get first team initiasls game_frame['opponent_id'] = game_frame['MATCHUP'].str.extract( r'\W\s(\w{3})') #get second team initials game_frame['team_id'] = game_frame['team_id'].map( constant.team_id) #map first team to our team id game_frame['opponent_id'] = game_frame['opponent_id'].map( constant.team_id) #map second team to team id team_basic_stats = game_frame.iloc[:, [1, 0, 27] + list(range(8, 27))] #print(player_basic_stats) query.insert_many(team_basic_stats, "basketball_team_game_basic") print(x)
def player_game_log(): with sql_query.SqlQuery() as query: players_seasons = query.get_table( 'player_season', dataframe=False ) # gets avaliable seasons for every active player from sql database len_players_seasons = len(players_seasons) a = 2559 for x in range( 2560, len_players_seasons ): # for each player season in seasons starting with first active time.sleep(2) player_season_games = endpoints.PlayerGameLog( player_id=players_seasons[x][0], season=players_seasons[x][1] - 210000, headers=constant.headers).get_normalized_dict( )['PlayerGameLog'] # player game event data game_frame = pd.DataFrame( player_season_games) # holds season of games for player game_frame = game_frame.rename( columns={ 'SEASON_ID': 'season_id', 'Player_ID': 'player_id', 'Game_ID': 'event_id', 'GAME_DATE': 'game_date', 'MIN': 'min', 'FGM': 'fgm', 'FGA': 'fga', 'FG_PCT': 'fg_pct', 'FG3M': 'fg3m', 'FG3A': 'fg3a', 'FG3_PCT': 'fg3_pct', 'FTM': 'ftm', 'FTA': 'fta', 'FT_PCT': 'ft_pct', 'OREB': 'oreb', 'DREB': 'dreb', 'REB': 'reb', 'AST': 'ast', 'STL': 'stl', 'BLK': 'blk', 'TOV': 'tov', 'PF': 'pf', 'PTS': 'pts' }) game_frame['team_id'] = game_frame['MATCHUP'].str.extract( r'(^\w{3})') #get first team initiasls game_frame['opponent_id'] = game_frame['MATCHUP'].str.extract( r'\W\s(\w{3})') #get second team initials game_frame['team_id'] = game_frame['team_id'].map( constant.team_id) #map first team to our team id game_frame['opponent_id'] = game_frame['opponent_id'].map( constant.team_id) #map second team to team id game_frame['season_id'] = game_frame['season_id'].astype( int) + 190000 #set our identifier before it player_event = game_frame.iloc[:, [2, 1, 27, 28, 0]] player_basic_stats = game_frame.iloc[:, [2, 1] + list(range(6, 25))] query.insert_many(player_event, "player_event") query.insert_many(player_basic_stats, "basketball_player_game_basic") a = a + 1 print(a)