Пример #1
0
 def test_outputting_2019_regular_season_box_scores_for_avery_bradley_as_csv(
         self):
     regular_season_player_box_scores(
         player_identifier="bradlav01",
         season_end_year=2019,
         output_type=OutputType.CSV,
         output_file_path="./test-avery-2019.csv")
def set_season_schedule(player_ids):
    df = pd.DataFrame()
    for id in player_ids:
        client.regular_season_player_box_scores(
            player_identifier=id,
            season_end_year=2020,
            output_type=OutputType.CSV,
            output_file_path=f"./csv/boxscores/{id}_box_scores.csv")
    for id in player_ids:
        df_season_schedule = pd.read_csv(
            f"./csv/boxscores/{id}_box_scores.csv")
        df_season_schedule['slug'] = id
        df = pd.concat([df, df_season_schedule])

    df['date'] = pd.to_datetime(df['date'])
    dates = df['date']
    dates = dates.reset_index()
    dates = dates.date.unique()
    dates.sort()
    last_game_date = pd.Timestamp((max(dates))).to_datetime64()
    game_fifteen_date = pd.Timestamp(dates[-14]).to_datetime64()
    boxscores = (df.loc[(df['date'] >= game_fifteen_date)
                        & (df['date'] <= last_game_date)])
    boxscores = boxscores.reset_index()
    return boxscores
 def test_outputting_2019_regular_season_box_scores_for_avery_bradley_as_csv(self):
     output_file_path = os.path.join(
         os.path.dirname(__file__),
         "./output/test-avery-2019.csv",
     )
     regular_season_player_box_scores(
         player_identifier="bradlav01",
         season_end_year=2019,
         output_type=OutputType.CSV,
         output_file_path=output_file_path,
     )
Пример #4
0
 def test_get_first_20202_regular_season_box_score_for_russell_westbrook(
         self):
     result = regular_season_player_box_scores(
         player_identifier="westbru01", season_end_year=2020)
     self.assertEqual(
         datetime.strptime("2019-10-24", "%Y-%m-%d").date(),
         result[0]["date"])
     self.assertEqual(Team.HOUSTON_ROCKETS, result[0]["team"])
     self.assertEqual(Outcome.LOSS, result[0]["outcome"])
     self.assertEqual(1972, result[0]["seconds_played"])
     self.assertEqual(Team.MILWAUKEE_BUCKS, result[0]["opponent"])
     self.assertEqual(7, result[0]["made_field_goals"])
     self.assertEqual(17, result[0]["attempted_field_goals"])
     self.assertEqual(3, result[0]["made_three_point_field_goals"])
     self.assertEqual(7, result[0]["attempted_three_point_field_goals"])
     self.assertEqual(7, result[0]["made_free_throws"])
     self.assertEqual(11, result[0]["attempted_free_throws"])
     self.assertEqual(4, result[0]["offensive_rebounds"])
     self.assertEqual(12, result[0]["defensive_rebounds"])
     self.assertEqual(7, result[0]["assists"])
     self.assertEqual(2, result[0]["steals"])
     self.assertEqual(1, result[0]["blocks"])
     self.assertEqual(3, result[0]["turnovers"])
     self.assertEqual(3, result[0]["personal_fouls"])
     self.assertEqual(24, result[0]["points_scored"])
     self.assertEqual(23.1, result[0]["game_score"])
     self.assertEqual(0, result[0]["plus_minus"])
 def test_outputting_2019_regular_season_box_scores_for_avery_bradley_as_json(self):
     results = regular_season_player_box_scores(
         player_identifier="bradlav01",
         season_end_year=2019,
         output_type=OutputType.JSON,
     )
     self.assertIsNotNone(results)
     self.assertEqual(63, len(json.loads(results)))
def getSeasonHigh(season):
    seasonHigh = client.regular_season_player_box_scores(
        player_identifier="cartevi01",
        season_end_year=season,
    )

    gameTotals = [dict_item['points_scored'] for dict_item in seasonHigh]

    return max(gameTotals)
 def test_get_season_box_scores_removes_games_that_player_did_not_participate_in(self):
     # Jabari Brown was a DNP in his first game in the gamelog for the 2014-2015 season
     # https://www.basketball-reference.com/players/b/brownja01/gamelog/2015
     # The date for the DNP was 2015-03-10 while the first game he was active was on 2015-03-12
     # The first game that is returned should be on 2015-03-12
     results = regular_season_player_box_scores(player_identifier="brownja01", season_end_year=2015)
     self.assertIsNotNone(results)
     self.assertEqual(19, len(results))
     self.assertEqual(datetime.strptime("2015-03-12", "%Y-%m-%d").date(), results[0]["date"])
Пример #8
0
    def test_outputting_2019_regular_season_box_scores_for_avery_bradley_as_csv(
            self):
        output_file_path = os.path.join(
            os.path.dirname(__file__),
            "./output/test-avery-2019.csv",
        )
        expected_file_path = os.path.join(
            os.path.dirname(__file__), "./output/expected/test-avery-2019.csv")
        regular_season_player_box_scores(
            player_identifier="bradlav01",
            season_end_year=2019,
            output_type=OutputType.CSV,
            output_file_path=output_file_path,
        )
        with open(output_file_path, 'r', encoding="utf8") as output_file, \
                open(expected_file_path, 'r', encoding="utf8") as expected_file:
            output_lines = output_file.readlines()
            expected_lines = expected_file.readlines()

        self.assertEqual(output_lines, expected_lines)
        os.remove(output_file_path)
def get_player_boxscores(starting_year, year_range, player):
    player_avg = 0
    total_games_vs_opp = 0
    for val in range(year_range):
        try:
            boxscores = client.regular_season_player_box_scores(
                player_identifier=play['identifier'],
                season_end_year=starting_year + val,
            )
        except client.InvalidPlayerAndSeason:
            continue

        for game in boxscores:
            if game['opponent'].name == opp:
                player_avg += FantasySites.calculate_fantasy_value(
                    game, fantasy_site)
                total_games_vs_opp += 1

    return player_avg / total_games_vs_opp, total_games_vs_opp
Пример #10
0
def player_stats(value):
    data = []
    for i in range(2020, 1990, -1):
        total_assists = 0
        total_steals = 0
        total_blocks = 0
        total_rebounds = 0
        total_points = 0
        total_seconds_played = 0
        try:
            current_season = client.regular_season_player_box_scores(
                player_identifier=value, season_end_year=i)

            for game in current_season:
                total_assists += game["assists"]
                total_steals += game["steals"]
                total_blocks += game["blocks"]
                total_rebounds += game["offensive_rebounds"] + game[
                    "defensive_rebounds"]
                total_points += game["points_scored"]
                total_seconds_played += game["seconds_played"]

            total_assists /= len(current_season)
            total_steals /= len(current_season)
            total_blocks /= len(current_season)
            total_rebounds /= len(current_season)
            total_points /= len(current_season)
            total_seconds_played /= len(current_season)
            total_seconds_played /= 60

            data.append({
                "season": i,
                "assist": total_assists,
                "steal": total_steals,
                "block": total_blocks,
                "rebound": total_rebounds,
                "point": total_points,
                "minutes": total_seconds_played
            })
        except InvalidPlayerAndSeason:
            break
    return data
Пример #11
0
from basketball_reference_web_scraper import client
from basketball_reference_web_scraper.data import OutputType
import csv
import sys

bbref_name_map = {}
with open('./nba/inputs/{}/bbref.csv'.format(sys.argv[1]), 'rt') as f:
    data = csv.reader(f)
    for row in data:
        if row[0] == 'Player Name':
            continue
        else:
            bbref_name_map[row[0]] = row[1]

for name in bbref_name_map.keys():
    print(name.replace(" ", "").replace(".", "").lower())
    client.regular_season_player_box_scores(
        player_identifier=bbref_name_map[name],
        season_end_year=sys.argv[2],
        output_type=OutputType.CSV,
        output_file_path="./nba/inputs/{}/players/{}.csv".format(
            sys.argv[1],
            name.replace(" ", "").replace(".", "").lower()))
Пример #12
0
        season_end_year=2020,
        output_type=OutputType.CSV,
        output_file_path=
        "C:\\Users\\NWHAL\\Documents\\nba_project\\2020_player_season_totals.csv"
    )

    print("collecting advanced player stats")
    client.players_advanced_season_totals(
        season_end_year=2020,
        output_type=OutputType.CSV,
        output_file_path=
        "C:\\Users\\NWHAL\\Documents\\nba_project\\2020_advanced_player_season_totals.csv"
    )


'''client.play_by_play(
    home_team=Team.BOSTON_CELTICS, 
    year=2018, month=10, day=16, 
    output_type=OutputType.CSV, 
    output_file_path="./2018_10_06_BOS_PBP.csv"
)

client.regular_season_player_box_scores(
    player_identifier="westbru01", 
    season_end_year=2018, 
    output_type=OutputType.CSV, 
    output_file_path="./2017_2018_russell_westbrook_regular_season_box_scores.csv"
)

client.search(
    term="Ko",
 def test_get_2019_regular_season_box_scores_for_russell_westbrook(self):
     result = regular_season_player_box_scores(player_identifier="westbru01", season_end_year=2019)
     self.assertIsNotNone(result)
     self.assertEqual(len(result), 73)
def get_player_box_scores(player_slug_year):
    '''
    Get game by game player box scores.
    
    Input:
        player_slug_year: pandas data frame of name, slug, and season_end_year 
                          (see the function find_player_name_active_years for more info)

    Returns:
        player_game_raw_data: game by game box score data for every player queried.
        
    Returns raw data.
    '''

    player_slug_year = player_slug_year.reset_index()
    player_slug_year = player_slug_year.drop(columns=['index'])

    player_game_raw_data = pd.DataFrame()
    counter = 0
    error_counter = 0
    error_gate = 0

    while counter < len(player_slug_year):
        player_name = player_slug_year['name'][counter]
        identifier = player_slug_year['slug'][counter]
        year = player_slug_year['season_end_year'][counter]

        try:
            temp = pd.DataFrame(
                client.regular_season_player_box_scores(
                    player_identifier=identifier, season_end_year=year))
            temp['name'] = player_name
            temp['slug'] = identifier
            temp['season_end_year'] = year

            player_game_raw_data = pd.concat([player_game_raw_data, temp],
                                             axis=0)
        except:
            temp = pd.DataFrame()

        if len(temp) > 0:
            print(
                f'Player {counter + 1} out of {len(player_slug_year)} completed'
            )
            counter += 1
        else:
            print(
                f'!!Player {counter + 1} out of {len(player_slug_year)} retrying'
            )
            from basketball_reference_web_scraper import client
            time.sleep(5)
            error_counter += 1

            if error_counter == 9:
                print(
                    f'!!SKIPPED Player {counter + 1} out of {len(player_slug_year)} retrying'
                )
                counter += 1
                error_counter = 0
                error_gate = 1

    player_game_raw_data = player_game_raw_data.reset_index()
    player_game_raw_data = player_game_raw_data.drop(columns=['index'])

    return player_game_raw_data, error_gate
Пример #15
0
from basketball_reference_web_scraper import client
from basketball_reference_web_scraper.data import OutputType, Team
print(client.season_schedule(season_end_year=2021))
client.players_advanced_season_totals(
    season_end_year=2018, 
    output_type=OutputType.CSV, 
    output_file_path="./2017_2018_player_season_totals.csv"
)

client.play_by_play(
    home_team=Team.BOSTON_CELTICS, 
    year=2018, month=10, day=16, 
    output_type=OutputType.CSV, 
    output_file_path="./2018_10_06_BOS_PBP.csv"
)

client.regular_season_player_box_scores(
    player_identifier="westbru01", 
    season_end_year=2018, 
    output_type=OutputType.CSV, 
    output_file_path="./2017_2018_russell_westbrook_regular_season_box_scores.csv"
)