def test_teams_string_representation(self): expected = """Golden State Warriors (GSW) Houston Rockets (HOU) Denver Nuggets (DEN) Cleveland Cavaliers (CLE) Washington Wizards (WAS) Los Angeles Clippers (LAC) Boston Celtics (BOS) Portland Trail Blazers (POR) Phoenix Suns (PHO) Toronto Raptors (TOR) Oklahoma City Thunder (OKC) Brooklyn Nets (BRK) Minnesota Timberwolves (MIN) San Antonio Spurs (SAS) Indiana Pacers (IND) Charlotte Hornets (CHO) Los Angeles Lakers (LAL) New Orleans Pelicans (NOP) New York Knicks (NYK) Milwaukee Bucks (MIL) Miami Heat (MIA) Atlanta Hawks (ATL) Chicago Bulls (CHI) Sacramento Kings (SAC) Philadelphia 76ers (PHI) Detroit Pistons (DET) Orlando Magic (ORL) Utah Jazz (UTA) Memphis Grizzlies (MEM) Dallas Mavericks (DAL)""" teams = Teams() assert teams.__repr__() == expected
def get_schedule(date): teams = Teams() df_full = pd.DataFrame() for team in teams: schedule = team.schedule df = team.schedule.dataframe df['team_abbr'] = team.abbreviation df_full = pd.concat([df_full, df]) df_full = df_full[df_full['location'] == 'Away'] return df_full[df_full['datetime'].dt.date == date.date()]
def test_invalid_default_year_reverts_to_previous_year( self, *args, **kwargs): flexmock(utils) \ .should_receive('_find_year_for_season') \ .and_return(2022) teams = Teams() for team in teams: assert team._year == '2021'
def test_nba_empty_page_returns_no_teams(self): flexmock(utils) \ .should_receive('_no_data_found') \ .once() flexmock(utils) \ .should_receive('_get_stats_table') \ .and_return(None) teams = Teams() assert len(teams) == 0
def setup_method(self, *args, **kwargs): self.results = { 'rank': 26, 'abbreviation': 'DET', 'name': 'Detroit Pistons', 'games_played': 82, 'minutes_played': 19805, 'field_goals': 3269, 'field_goal_attempts': 7282, 'field_goal_percentage': .449, 'three_point_field_goals': 631, 'three_point_field_goal_attempts': 1915, 'three_point_field_goal_percentage': .330, 'two_point_field_goals': 2638, 'two_point_field_goal_attempts': 5367, 'two_point_field_goal_percentage': .492, 'free_throws': 1140, 'free_throw_attempts': 1586, 'free_throw_percentage': .719, 'offensive_rebounds': 908, 'defensive_rebounds': 2838, 'total_rebounds': 3746, 'assists': 1732, 'steals': 574, 'blocks': 310, 'turnovers': 973, 'personal_fouls': 1467, 'points': 8309, 'opp_field_goals': 3144, 'opp_field_goal_attempts': 6830, 'opp_field_goal_percentage': .460, 'opp_three_point_field_goals': 767, 'opp_three_point_field_goal_attempts': 2098, 'opp_three_point_field_goal_percentage': .366, 'opp_two_point_field_goals': 2377, 'opp_two_point_field_goal_attempts': 4732, 'opp_two_point_field_goal_percentage': .502, 'opp_free_throws': 1346, 'opp_free_throw_attempts': 1726, 'opp_free_throw_percentage': .780, 'opp_offensive_rebounds': 656, 'opp_defensive_rebounds': 2861, 'opp_total_rebounds': 3517, 'opp_assists': 1929, 'opp_steals': 551, 'opp_blocks': 339, 'opp_turnovers': 1046, 'opp_personal_fouls': 1434, 'opp_points': 8401 } self.abbreviations = [ 'BOS', 'CLE', 'TOR', 'WAS', 'ATL', 'MIL', 'IND', 'CHI', 'MIA', 'DET', 'CHO', 'NYK', 'ORL', 'PHI', 'BRK', 'GSW', 'SAS', 'HOU', 'LAC', 'UTA', 'OKC', 'MEM', 'POR', 'DEN', 'NOP', 'DAL', 'SAC', 'MIN', 'LAL', 'PHO' ] flexmock(utils) \ .should_receive('_todays_date') \ .and_return(MockDateTime(YEAR, MONTH)) self.teams = Teams()
def setup_method(self, *args, **kwargs): self.results = { 'rank': 27, 'abbreviation': 'DET', 'name': 'Detroit Pistons', 'games_played': 72, 'minutes_played': 17430, 'field_goals': 2783, 'field_goal_attempts': 6162, 'field_goal_percentage': .452, 'three_point_field_goals': 832, 'three_point_field_goal_attempts': 2370, 'three_point_field_goal_percentage': .351, 'two_point_field_goals': 1951, 'two_point_field_goal_attempts': 3792, 'two_point_field_goal_percentage': .515, 'free_throws': 1278, 'free_throw_attempts': 1683, 'free_throw_percentage': .759, 'offensive_rebounds': 694, 'defensive_rebounds': 2381, 'total_rebounds': 3075, 'assists': 1743, 'steals': 531, 'blocks': 371, 'turnovers': 1075, 'personal_fouls': 1477, 'points': 7676, 'opp_field_goals': 2980, 'opp_field_goal_attempts': 6260, 'opp_field_goal_percentage': .476, 'opp_three_point_field_goals': 817, 'opp_three_point_field_goal_attempts': 2260, 'opp_three_point_field_goal_percentage': .362, 'opp_two_point_field_goals': 2163, 'opp_two_point_field_goal_attempts': 4000, 'opp_two_point_field_goal_percentage': .541, 'opp_free_throws': 1221, 'opp_free_throw_attempts': 1607, 'opp_free_throw_percentage': .760, 'opp_offensive_rebounds': 717, 'opp_defensive_rebounds': 2475, 'opp_total_rebounds': 3192, 'opp_assists': 1785, 'opp_steals': 578, 'opp_blocks': 419, 'opp_turnovers': 1004, 'opp_personal_fouls': 1469, 'opp_points': 7998 } self.abbreviations = [ 'BOS', 'CLE', 'TOR', 'WAS', 'ATL', 'MIL', 'IND', 'CHI', 'MIA', 'DET', 'CHO', 'NYK', 'ORL', 'PHI', 'BRK', 'GSW', 'SAS', 'HOU', 'LAC', 'UTA', 'OKC', 'MEM', 'POR', 'DEN', 'NOP', 'DAL', 'SAC', 'MIN', 'LAL', 'PHO' ] flexmock(utils) \ .should_receive('_todays_date') \ .and_return(MockDateTime(YEAR, MONTH)) self.teams = Teams()
def main(): year = 2021 TeamLists = pd.read_excel('data/TeamLists.xls', sheet_name=0, header=None) TeamLists = TeamLists.to_numpy(dtype=object, copy=True) if year > 2014: TeamList = TeamLists[:, 2] elif year == 2014: TeamList = TeamLists[:, 1] elif year < 2014: TeamList = TeamLists[:, 0] TeamList_Lines = TeamLists[:, 3] now = datetime.datetime.now() datestring = now.strftime("%m_%d_%Y") today = (now - datetime.datetime(year - 1, 10, 12)).days with open('pickles/NBA_Data_pickled/' + str(year) + 'NBAData.pkl', 'rb') as Data: Data_Full = pickle.load(Data) teams = Teams(year) for team in teams: print(team) for i in range(30): if team.name == TeamList[i]: break schedule = team.schedule for game in schedule: game_date = game.datetime daynum = (game_date - datetime.datetime(year - 1, 10, 12)).days if daynum >= today - 30: box = game.boxscore Data_Full[daynum, 7, i] = game.opponent_name Data_Full[daynum, 8, i] = game.points_scored Data_Full[daynum, 9, i] = game.points_allowed Data_Full[daynum, 6, i] = game.location Data_Full[daynum, 0, i] = game.game Data_Full[daynum, 35, i] = game.playoffs Data_Full[daynum, 34, i] = game.streak if game.location == 'Home': Data_Full[daynum, 10, i] = box.home_offensive_rating Data_Full[daynum, 11, i] = box.home_defensive_rating Data_Full[daynum, 12, i] = box.home_effective_field_goal_percentage Data_Full[daynum, 13, i] = box.home_assist_percentage Data_Full[daynum, 14, i] = box.home_assists Data_Full[daynum, 15, i] = box.home_block_percentage Data_Full[daynum, 17, i] = box.home_defensive_rebound_percentage Data_Full[daynum, 18, i] = box.home_field_goal_percentage Data_Full[daynum, 19, i] = box.home_field_goals Data_Full[daynum, 20, i] = box.home_free_throw_attempt_rate Data_Full[daynum, 21, i] = box.home_offensive_rebound_percentage Data_Full[daynum, 22, i] = box.home_steal_percentage Data_Full[daynum, 23, i] = box.home_three_point_field_goal_percentage Data_Full[daynum, 24, i] = box.home_turnover_percentage Data_Full[daynum, 26, i] = box.home_true_shooting_percentage Data_Full[daynum, 27, i] = box.home_free_throws Data_Full[daynum, 28, i] = box.pace elif game.location == 'Away': Data_Full[daynum, 10, i] = box.away_offensive_rating Data_Full[daynum, 11, i] = box.away_defensive_rating Data_Full[daynum, 12, i] = box.away_effective_field_goal_percentage Data_Full[daynum, 13, i] = box.away_assist_percentage Data_Full[daynum, 14, i] = box.away_assists Data_Full[daynum, 15, i] = box.away_block_percentage Data_Full[daynum, 17, i] = box.away_defensive_rebound_percentage Data_Full[daynum, 18, i] = box.away_field_goal_percentage Data_Full[daynum, 19, i] = box.away_field_goals Data_Full[daynum, 20, i] = box.away_free_throw_attempt_rate Data_Full[daynum, 21, i] = box.away_offensive_rebound_percentage Data_Full[daynum, 22, i] = box.away_steal_percentage Data_Full[daynum, 23, i] = box.away_three_point_field_goal_percentage Data_Full[daynum, 24, i] = box.away_turnover_percentage Data_Full[daynum, 26, i] = box.away_true_shooting_percentage Data_Full[daynum, 27, i] = box.away_free_throws Data_Full[daynum, 28, i] = box.pace with open('pickles/NBA_Data_pickled/' + str(year) + 'NBAData.pkl', 'wb') as Data_in: pickle.dump(Data_Full, Data_in) pdb.set_trace()