コード例 #1
0
    def __get_team_gamelog(self, team_id):
        """Hidden method to get a given team's gamelog
        
        Args:
            team_id (int): Team ID
        
        Returns:
            pd.DataFrame: Team's gamelog and game number
        """
        team_gamelog = teamgamelog.TeamGameLog(team_id=team_id)
        logger.debug("Getting teams gamelogs")
        team_gamelog = team_gamelog.get_data_frames()[0]

        team_gamelog["GAME_DATE"] = pd.to_datetime(team_gamelog["GAME_DATE"])

        team_gamelog = team_gamelog.sort_values("GAME_DATE")

        team_gamelog = team_gamelog.reset_index()

        team_gamelog = team_gamelog.drop(["index"], axis=1)

        team_gamelog.loc[:, "GAME_NUMBER"] = team_gamelog.index + 1

        cols_to_keep = [
            "Team_ID",
            "Game_ID",
            "GAME_DATE",
            "MATCHUP",
            "GAME_NUMBER",
            "WL",
        ]

        team_gamelog = team_gamelog[cols_to_keep]

        return team_gamelog
コード例 #2
0
def get_games_api(team_ids):
    print("Loading game lists...")
    team_games = []
    all_games = []
    for tid in team_ids:
        team_log = teamgamelog.TeamGameLog(season=SEASON,
                                           season_type_all_star=SEASON_TYPE,
                                           team_id=tid).get_dict()
        results = team_log["resultSets"][0]["rowSet"]
        game_ids = [res[GAMELOG_GAME_ID_INDEX] for res in results]
        dates = [
            datetime.strptime(res[GAMELOG_DATE_INDEX].replace(",", ""),
                              "%b %d %Y") for res in results
        ]

        for pair in zip(dates, game_ids):
            bisect.insort_left(all_games, pair)
        # Reverse the game id list!
        team_games.append((tid, game_ids[::-1]))
        name = teams.find_team_name_by_id(tid)["full_name"]
        print(name + " done...")

    # deduplicate games
    all_games = OrderedDict((x, True) for x in all_games).keys()
    return team_games, list(all_games)
コード例 #3
0
def print_boxscore(team_abbr):
    game_id = (teamgamelog.TeamGameLog(
        teams.find_team_by_abbreviation(
            team_abbr.lower())["id"]).get_data_frames()[0].iloc[0].Game_ID)

    b = (boxscoretraditionalv2.BoxScoreTraditionalV2(
        game_id).get_data_frames()[0].dropna())
    b["PLAYER"] = b["PLAYER_NAME"].apply(
        lambda s: s.ljust(b.PLAYER_NAME.str.len().max(), " "))
    b.MIN = b.MIN.str.rjust(5, "0")
    for field in ["FGM", "FGA", "FG3M", "FG3A", "FTM", "FTA"]:
        b[field] = b[field].fillna(0).astype(int)

    b["FG"] = (b["FGM"].map(str) + "-" + b["FGA"].map(str)).str.pad(5)
    b["FG3"] = (b["FG3M"].map(str) + "-" + b["FG3A"].map(str)).str.pad(5)
    b["FT"] = (b["FTM"].map(str) + "-" + b["FTA"].map(str)).str.pad(5)

    for team_name, bscore in b.groupby("TEAM_ABBREVIATION"):
        print(team_name)

        tabulate.PRESERVE_WHITESPACE = True
        outb = bscore[[
            "PLAYER", "MIN", "FG", "FG3", "FT", "REB", "AST", "STL", "BLK",
            "TO", "PF", "PTS"
        ]]
        print(tabulate.tabulate(outb, headers="keys", showindex="never"))
        tabulate.PRESERVE_WHITESPACE = False
コード例 #4
0
def pts_of_team(team):
    team_games = teamgamelog.TeamGameLog(
        team_id=team["id"]).get_normalized_dict()["TeamGameLog"]
    team_pct = [
        game["W_PCT"] for game in team_games if
        datetime.datetime.strptime(game["GAME_DATE"], "%b %d, %Y") <= date_time
    ][0]
    return team_pct * 10
コード例 #5
0
ファイル: nba_team.py プロジェクト: ethanfuerst/nba-figures
 def get_season(self, season, season_type):
     '''
     
     '''
     # - Overview of games including ids
     # - team game log
     log = teamgamelog.TeamGameLog(team_id=self.id,
                                   season=season,
                                   season_type_all_star=season_type)
     return log.get_data_frames()[0]
コード例 #6
0
ファイル: PlayerProjections.py プロジェクト: chadk94/NbaML
def teamopponentstatpull(teamabb, season=2020): ##retrieve a team's entire opponent box scores over a season
    team=teams.find_team_by_abbreviation(teamabb)
    games=teamgamelog.TeamGameLog(team_id=team.get("id"),season=season)
    games=(games.get_data_frames())[0]
    gameids=games['Game_ID']
    outcome=pd.DataFrame()
    for i in range (len (gameids)):
        temp=gamestatgen(gameids[i],teamabb)
        outcome=outcome.append(temp)
    outcome=outcome.dropna()
    return outcome
コード例 #7
0
def build_games_for_team(team):
    gpbp = teamgamelog.TeamGameLog(team_id=team_to_id[team], headers=headers)
    tgl = gpbp.get_data_frames()[0]
    game_ids = tgl['Game_ID'].values
    games = []
    matchups = tgl['MATCHUP'].values
    for i in range(len(matchups)):
        curr = matchups[i]
        is_home = True
        if '@' in curr:
            is_home = False
        opponent = curr[-3:]
        games.append((game_ids[i], is_home, opponent))
    return games
コード例 #8
0
def generate_win_probability_team(team, NUMBER_GAMES):
    gpbp = teamgamelog.TeamGameLog(team_id=team_to_id[team], headers=headers)
    tgl = gpbp.get_data_frames()[0]
    games = tgl['Game_ID'].values
    matchups = tgl['MATCHUP'].values
    results = tgl['WL'].values
    i = 0
    selected_games = games[0:NUMBER_GAMES]
    for game in selected_games:
        wpp = winprobabilitypbp.WinProbabilityPBP(game_id=game, headers=headers)
        wp = wpp.get_data_frames()[0]
        plot_game_win_probability(wp, matchups[i])
        print("This game resulted with %s getting the %s" % (team, results[i]))
        print("====================================================================")
        i += 1
コード例 #9
0
def pts_of_matchup(team1, team2):
    team_id = teams.find_teams_by_full_name(team1)[0]["id"]
    team_games = teamgamelog.TeamGameLog(
        team_id=team_id).get_normalized_dict()["TeamGameLog"]

    opponent_abb = teams.find_teams_by_full_name(team2)[0]["abbreviation"]
    games_by_opponent = [
        game for game in team_games
        if game["MATCHUP"].split(" ")[2] == opponent_abb and
        datetime.datetime.strptime(game["GAME_DATE"], "%b %d, %Y") <= date_time
    ]
    wins_by_opponent = [
        game for game in games_by_opponent if game["WL"] == "W"
    ]
    if games_by_opponent == []:
        return 0
    return (len(wins_by_opponent) / len(games_by_opponent)) * 10
コード例 #10
0
def get_team_info(game_id, season, season_type):
    # Create Box Score Traditional Object and get DataFrame
    traditional = boxscoretraditionalv2.BoxScoreTraditionalV2(game_id=game_id)
    teams_df = traditional.team_stats.get_data_frame()

    # Determine The Two Teams That Played In The Game #
    teams = teams_df['TEAM_ID'].unique()

    ### Figure Out Which Team Won The Game ###

    # Create a game log object and dataframe for the first team in the teams list
    game_log = teamgamelog.TeamGameLog(team_id=teams[0],
                                       season=season,
                                       season_type_all_star=season_type)
    game_log_df = game_log.team_game_log.get_data_frame()

    # Filter that teams game log to be only the specific game we are evaluating
    game_log_df = game_log_df[game_log_df['Game_ID'] == game_id]
    # Print basic info about the game for tracking purposes as code is running, game date, two teams playing, if first team won or lost game
    print(game_log_df.iloc[0]['GAME_DATE'], " ",
          game_log_df.iloc[0]['MATCHUP'], " ", game_log_df.iloc[0]['WL'])

    # If team[0] won the game, set their id to the winning_team variable, else set team[1]
    # If there is an @ the first team is away, else they are home. This is important for the play_by_play dataframe
    if game_log_df.iloc[0]['WL'] == 'W' and '@' in game_log_df.iloc[0][
            'MATCHUP']:
        winning_team = teams[0]
        losing_team = teams[1]
        home_away = 1
    elif game_log_df.iloc[0]['WL'] == 'W' and '@' not in game_log_df.iloc[0][
            'MATCHUP']:
        winning_team = teams[0]
        losing_team = teams[1]
        home_away = 0
    elif game_log_df.iloc[0]['WL'] == 'L' and '@' not in game_log_df.iloc[0][
            'MATCHUP']:
        winning_team = teams[1]
        losing_team = teams[0]
        home_away = 1
    else:
        winning_team = teams[1]
        losing_team = teams[0]
        home_away = 0

    return losing_team, winning_team, home_away
コード例 #11
0
def getNbaScore():
    nba_teams = teams.get_teams()
    raptors = [team for team in nba_teams if team['abbreviation'] == 'TOR'][0]
    raptors_id = raptors['id']

    rapsGames = teamgamelog.TeamGameLog(team_id=raptors_id,
                                        season_all="2018-19",
                                        season_type_all_star='Regular Season')
    mostRecentGame = pd.DataFrame(rapsGames.get_data_frames()[0]).iloc[0]
    gameId = mostRecentGame['Game_ID']
    matchup = mostRecentGame['MATCHUP']
    win = mostRecentGame['WL']
    wins = mostRecentGame['W']
    losses = mostRecentGame['L']
    torScore = mostRecentGame['PTS']

    gamesResult = leaguegamefinder.LeagueGameFinder()
    all_games = gamesResult.get_data_frames()[0]
    opponentGame = all_games[all_games.GAME_ID == gameId]
    opponentGame = opponentGame[
        opponentGame['TEAM_ABBREVIATION'] != 'TOR'].iloc[0]
    opponentScore = opponentGame['PTS']
    gameDate = getDay(opponentGame['GAME_DATE'])

    statsResult = teamplayerdashboard.TeamPlayerDashboard(team_id=raptors_id,
                                                          last_n_games=1)
    playerStats = pd.DataFrame(statsResult.get_data_frames()[1])
    key_player = playerStats.sort_values(by=['PTS'], ascending=False).iloc[0]
    key_player_name = key_player['PLAYER_NAME']
    key_player_pts = key_player['PTS']
    key_player_ast = key_player['AST']
    key_player_reb = key_player['REB']

    return "Latest Game from {}: {}\nThe Raps took a {} making their record {}W / {}L \nScore: {} : {}\nKey Player: {}\nStats:\n\tPoints: {}\n\tAssists: {}\n\tRebounds: {}".format(
        gameDate, matchup, win, wins, losses, torScore, opponentScore,
        key_player_name, key_player_pts, key_player_ast, key_player_reb)
コード例 #12
0
def build_table():
    '''
        Downloads statistics of non-play-off games per specified seasons per all commands as dataframes.
        Per every game there is stat regarding both team. Dataframes are serialized and compiled to big one
        
    '''
    seasons = [
        '2008-09', '2009-10', '2010-11', '2011-12', '2012-13', '2013-14',
        '2014-15', '2015-16', '2016-17', '2017-18', '2018-19'
    ]
    dir_path = "../data/all_games_per_seasone/"

    nba_teams = teams.get_teams()
    teams_fullnames_dict = {m['full_name']: m['id'] for m in nba_teams}

    train_data = pd.DataFrame()
    print("start")
    for season in seasons:
        season_data = pd.DataFrame()
        print(season)
        for name, team_id in teams_fullnames_dict.items():
            print(name)
            time.sleep(1)
            season_team_data = teamgamelog.TeamGameLog(
                team_id, season_all=season).get_data_frames()[0]
            season_data = season_data.append(season_team_data)

        season_data.sort_values(by=['Game_ID'], inplace=True)
        season_data.reset_index(drop=True, inplace=True)
        serialize(data=season_data, dir_path=dir_path, filename=season)
        train_data = train_data.append(season_data, )

    train_data.reset_index(drop=True, inplace=True)
    serialize(data=train_data, dir_path=dir_path, filename="all_seasons")

    return train_data
コード例 #13
0
    for player in player_dict:
        if player['full_name'] == name:
            the_factor = player['id']

    gamelog = playergamelog.PlayerGameLog(player_id=the_factor, season='2020')
    df = gamelog.get_data_frames()

    str_matchup = str(df[0].MATCHUP[0])
    str_matchup = str_matchup[:-2]
    the_team_factor = 'null'
    team_dict = teams.get_teams()
    for team in team_dict:
        if team['abbreviation'] in str_matchup:
            the_team_factor = team['id']

    team_game_log = teamgamelog.TeamGameLog(team_id=the_team_factor,
                                            season='2020')
    tdf = team_game_log.get_data_frames()

    next_games = playernextngames.PlayerNextNGames(player_id=the_factor,
                                                   number_of_games='1')
    ndf = next_games.get_data_frames()

    oppo_stats = leaguestandings.LeagueStandings(league_id='00', season='2020')
    odf = oppo_stats.get_data_frames()

    PTS = df[0].PTS

    def PTS_TO_LINE(PTS, line):
        avg = sum(PTS) / len(PTS)
        std = statistics.stdev(PTS)
        if line < avg and line > avg - std:
コード例 #14
0
import os
from nba_api.stats.static import teams
from nba_api.stats.endpoints import teamgamelog
import pandas as pd

teamsList = teams.get_teams()
abbrNameTransList = {}
teamGameLogs = {}
for x in teamsList:
    abbrNameTransList[x['abbreviation']] = x['full_name']
    print(x['abbreviation'])
    teamGameLogs[x['abbreviation']] = (teamgamelog.TeamGameLog(x['id']))

print(teamsList)
df = pd.DataFrame()
for key, value in teamGameLogs.items():
    df = df.append(pd.DataFrame(value.team_game_log.get_data_frame()),
                   ignore_index=True)

homeDf = df.loc[df['MATCHUP'].str.contains('@')]
homeDf[['team', 'ignore']] = homeDf['MATCHUP'].str.split(' @ ', expand=True)

awayDf = df.loc[df['MATCHUP'].str.contains(' vs. ')]
awayDf[['team', 'ignore']] = awayDf['MATCHUP'].str.split(' vs. ', expand=True)

matchupDF = homeDf.merge(awayDf,
                         how="inner",
                         on="Game_ID",
                         suffixes=('_away', '_home'))

matchupDF['abbr_home'] = matchupDF['team_home']
コード例 #15
0
#print(df_teamStats) #Check if data frame is correctly filled

df_teamStats.to_pickle(
    "/Users/anshumandash/nba_analysis_project/df_teamStats.pkl")

df_season_game_log = pd.DataFrame()

for i in range(0, len(df_teamStats), 1):
    #for i in range(0,2,1):
    #nbaTeamStatsDataFrame = df_teamStats.loc[[i],["TEAM_ID","TEAM_NAME","GP","PTS"]] These work right now
    #print(nbaTeamStatsDataFrame)

    nbaTeamID = df_teamStats.loc[i]['TEAM_ID']

    nbaSeasonGameLog = teamgamelog.TeamGameLog(
        season="2019-20",
        team_id=nbaTeamID,
        season_type_all_star="Regular Season")

    df2 = nbaSeasonGameLog.get_data_frames()[0]
    df_season_game_log = df_season_game_log.append(
        pd.DataFrame(df2)
    )  #https://stackoverflow.com/questions/37009287/using-pandas-append-within-for-loop/37009377

df_season_game_log.to_pickle(
    "/Users/anshumandash/nba_analysis_project/df_season_game_log.pkl")
#print(df_season_game_log)

summaryBoxScoreDataFrame = pd.DataFrame()
filtered_df_season_game_log = df_season_game_log.drop_duplicates(
    subset=['Game_ID']).reset_index(drop=True)
コード例 #16
0
ファイル: main.py プロジェクト: IsaacKrieger/CS-final-project
            p += 1
        else:
            team1_Score += (max_points - (i * points_change))
            team2_Score += (max_points - (i * points_change))
            o += 1
            p += 1


#getting team IDs given the names seen above
Team1 = [x for x in teams if x['full_name'] == a][0]
Team1_id = Team1['id']
Team2 = [x for x in teams if x['full_name'] == b][0]
Team2_id = Team2['id']

#find games played by a team, to see stats for the team for a given season
Team1_Current = teamgamelog.TeamGameLog(Team1_id).get_data_frames()[0]
Team2_Current = teamgamelog.TeamGameLog(Team2_id).get_data_frames()[0]

#find current roster for each team
Team1_Roster = commonteamroster.CommonTeamRoster(Team1_id).get_data_frames()[0]
Team2_Roster = commonteamroster.CommonTeamRoster(Team2_id).get_data_frames()[0]

#find player ids for everyone on both teams
Team1_PlayerIds = Team1_Roster[['PLAYER_ID']]
Team1_PlayerIds = convert(Team1_PlayerIds, 'PLAYER_ID')

Team2_PlayerIds = Team2_Roster[['PLAYER_ID']]
Team2_PlayerIds = convert(Team2_PlayerIds, 'PLAYER_ID')

#determining the lenght of each team
Team1_length = len(Team1_PlayerIds)
コード例 #17
0
ファイル: Untitled.py プロジェクト: ybefidi/Project-1
from nba_api.stats.endpoints import teamgamelog
from nba_api.stats.static import teams

team = teams.get_teams()
for t in team:

    data = teamgamelog.TeamGameLog(team_id=t['id']).team_game_log.get_data_frame()
    print(data)
    
コード例 #18
0
     per_mode36='PerGame',
     player_id=playerData).season_totals_regular_season.get_data_frame(
     )
 dt = datetime.datetime(date[0], date[1], date[2])
 if len(str(date[2])) == 1:
     hurtDay = '0' + str(date[2])
 else:
     hurtDay = str(date[2])
 if date[1] >= 10:
     seasonDate = f'{date[0]}-{str(date[0]+1)}'.replace('20', '')
 else:
     seasonDate = f'{date[0]-1}-{str(date[0])}'.replace('20', '')
 playerInfo = playerInfo[playerInfo['SEASON_ID'] == seasonDate]
 try:
     seasonSchedule = teamgamelog.TeamGameLog(
         season=seasonDate, team_id=playerInfo.iloc[0]
         ['TEAM_ID']).team_game_log.get_data_frame()
     missedGame = seasonSchedule[
         seasonSchedule['GAME_DATE'] ==
         f'{dt.strftime("%b").upper()} {hurtDay}, {date[0]}']
     #print(missedGame)
     prevGames = []
     for prevDate in range(1, 8):
         prevD = dt - datetime.timedelta(prevDate)
         prevGame = seasonSchedule[
             seasonSchedule['GAME_DATE'] ==
             f'{prevD.strftime("%b %d, %Y").upper()}']
         try:
             prevGame.iloc[0]['Game_ID']
             prevGames.append(prevGame)
         except:
コード例 #19
0
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://stats.nba.com/',
    'Accept-Encoding': 'gzip, deflate, br',
    'Connection': 'keep-alive',
}

# getting dictionary of all teams
teams_dict = teams.get_teams()

# getting the lakers 2020 game log
lakers = [
    team for team in teams_dict if team["full_name"] == "Los Angeles Lakers"
][0]
lakersGameLog = teamgamelog.TeamGameLog(
    team_id=lakers['id'],
    season="2019-20",
    season_type_all_star="Regular Season").get_data_frames()[0]

# getting the clippers 2020 game log
clippers = [
    team for team in teams_dict if team["full_name"] == "Los Angeles Clippers"
][0]
clippersGameLog = teamgamelog.TeamGameLog(
    team_id=clippers['id'],
    season="2019-20",
    season_type_all_star="Regular Season").get_data_frames()[0]

# extracting the data for points scored for each team
lakers2020Points = [pts for pts in lakersGameLog['PTS']]
totalLakersPoints = 0
コード例 #20
0
ファイル: main.py プロジェクト: sidp16/nba-stat-scraping
from NBA_Player.statistics import Statistics
from NBA_Player.box_scores import BoxScores

# To check what these sets of data offer offer (which variables I can use)
teams_dict = teams.get_teams()
team_details = [team for team in teams_dict]
data = endpoints.leagueleaders.LeagueLeaders(stat_category_abbreviation='FGA')
leaders = data.league_leaders.get_data_frame()
lakers = [
    team for team in teams_dict if team["full_name"] == "Los Angeles Lakers"
][0]
player_dict = players.get_players()
lakersStats = teamyearbyyearstats.TeamYearByYearStats(
    team_id=lakers['id']).get_data_frames()[0]
lakersRegularSznGameLog = teamgamelog.TeamGameLog(
    team_id=lakers['id'],
    season="2019-20",
    season_type_all_star="Regular Season").get_data_frames()[0]

# Linear regression model class can take in two viable variables and creates
# a linear regression graph plotting them against each other
# model1 = RegressionModel('PTS', 'AST', 'AST', [1, 2, 5, 8, 12])
# model1.draw()

# Creating an NBA Player using class
lebron = NBAPlayer(fullname='LeBron James',
                   playerTeam="Los Angeles Lakers",
                   opponentTeam="Golden State Warriors")

# Can get career / season wide box score logs
lbjCareerBoxScores = BoxScores.careerLog(player=lebron)
lbj2020BoxScores = BoxScores.seasonLog(player=lebron, season="2019")
コード例 #21
0
def get_team_game_log(team_id, year):
    return teamgamelog.TeamGameLog(team_id=team_id,
                                   season=year).get_data_frames()[0]
コード例 #22
0
from nba_api.stats.endpoints import teamgamelog
import pandas as pd
import time

# load team and players dfs
nba_teams_df = pd.read_csv('nba_teams_df.csv')
nba_players_df = pd.read_csv('nba_players_df.csv')

# Season.default = '2019-20'

appended_data = []

for i in range(0, len(nba_teams_df)):
    print('Getting team log for ' + nba_teams_df['Full_name'][i] + ' ...')
    appended_data.append(pd.DataFrame(teamgamelog.TeamGameLog(team_id=nba_teams_df['ID'][i]).get_data_frames()[0]))
    time.sleep(10)

all_game_data = pd.concat(appended_data)

# write to csv
all_game_data.to_csv('2019_20_all_game_data.csv', index=False)
コード例 #23
0
from nba_api.stats.static import players


nba_players = players.get_players()

nba_players[:3]


kareem = playercareerstats.PlayerCareerStats(player_id="76003")

kareem.get_data_frames()[0]

### get all games from a team (current season, Atlanta 1610612737)
from nba_api.stats.endpoints import teamgamelog

gamelog = teamgamelog.TeamGameLog(team_id="1610612737")

gamelog.get_data_frames()[0]

## get play by play from desired game (0021900543 ATL vs DEN)
from nba_api.stats.endpoints import playbyplay

gamepbp = playbyplay.PlayByPlay(game_id="0021900543")

gamepbp.get_data_frames()[0].sort_values("EVENTNUM")

## get traditional box score from the same game
from nba_api.stats.endpoints import boxscoretraditionalv2

boxscore = boxscoretraditionalv2.BoxScoreTraditionalV2(game_id="0021900543")