Exemplo n.º 1
0
    def test_get_stats(self):
        df = get_stats('LaMarcus Aldridge') 
        expected_columns = ['Season', 'Age', 'Tm', 'Lg', 'Pos', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
        self.assertListEqual(list(df.columns), expected_columns)

        df = get_stats('LaMarcus Aldridge', career=True)
        expected_columns = ['Season', 'Tm', 'Lg', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
        self.assertListEqual(list(df.columns), expected_columns)

        df = get_stats('LaMarcus Aldridge', playoffs=True, career=True)
        expected_columns = ['Season', 'Tm', 'Lg', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
        self.assertListEqual(list(df.columns), expected_columns)
Exemplo n.º 2
0
    def test_get_stats(self):
        expected_columns = [
            'SEASON', 'AGE', 'TEAM', 'LEAGUE', 'POS', 'G', 'GS', 'MP', 'FG',
            'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT',
            'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV',
            'PF', 'PTS'
        ]
        df = get_stats('LaMarcus Aldridge')
        self.assertCountEqual(list(df.columns), expected_columns)

        df = get_stats('LaMarcus Aldridge', career=True)
        self.assertCountEqual(list(df.columns), expected_columns)

        df = get_stats('LaMarcus Aldridge', playoffs=True, career=True)
        self.assertCountEqual(list(df.columns), expected_columns)
Exemplo n.º 3
0
def player():
    if request.method == 'GET':
        return f"The URL /player is accessed directly. Try going to '/' to search for player"

    form_data = request.form
    name = form_data['player']
    year = form_data['year']
    name = name.title()

    try:
        stats = get_stats(name, 'PER_GAME', ask_matches=False)
    except:
        return render_template('error.html')
    pl = stats[[
        'SEASON', 'TEAM', 'PTS', 'TRB', 'AST', 'STL', 'BLK', 'FG%', '3P%'
    ]]
    cur_season = pl.loc[pl['SEASON'] == year]

    pic = get_player_headshot(name, ask_matches=False)

    return render_template('base.html',
                           data=cur_season.to_html(
                               classes='table table-striped',
                               index=False,
                               col_space=100,
                               justify='match-parent'),
                           name=name,
                           pic=pic,
                           year=year)
Exemplo n.º 4
0
def view_mvp_candidates():
    mvp_candidates = [
        'LeBron James', 'Giannis Antetokounmpo', 'James Harden',
        'Anthony Davis', 'Kawhi Leonard', 'Jimmy Butler', 'Chris Paul'
    ]

    display_rank = 1
    for mvp_candidate in mvp_candidates:
        print(f"Our Ranking #{display_rank}: {mvp_candidate}")
        display_rank += 1

    print()
    mvp_candidate = input("Whose stats would like to see? ")
    # ADD Check Condition Here.
    # Loop if Player not one of the above.
    # Error when entry is 1.
    game_logs = get_game_logs(mvp_candidate,
                              '2019-10-22',
                              '2020-03-01',
                              playoffs=False)
    game_stats = get_stats(mvp_candidate,
                           stat_type='PER_GAME',
                           playoffs=False,
                           career=False)
    print(f"-----------{mvp_candidate}'s 2019-2020 GAME LOGS-----------")
    print(game_logs)
    print(f"-----------{mvp_candidate}'s CAREER GAME STATS-----------")
    print(game_stats)
Exemplo n.º 5
0
def scrap_roster(roster=None, suffixes=None):
    if roster is not None:
        for raw_player_name in roster["PLAYER"]:
            try:
                player_name = clean_player_name(raw_player_name)
                player_data = get_stats(player_name, suffixes=suffixes)
                print(player_data)
            except:
                scrap_failures.append(raw_player_name)
Exemplo n.º 6
0
def player_stats(player, stat_type, playoffs, career):
    print("Saving into excel sheet... ")
    writer = ExcelWriter("./Excel-Sheets/%s_STATS__%s_REGULAR.xlsx" % (player.upper(), stat_type))
    sheet_name = player.upper() + "- REGULAR"
    if playoffs:
        writer = ExcelWriter("./Excel-Sheets/%s_STATS_%s_PLAYOFFS.xlsx" % (player.upper(), stat_type))
        sheet_name = player.upper() + "-PLAYOFFS"

    player_stats_df = get_stats(player, stat_type, playoffs, career)

    player_stats_df.to_excel(writer, sheet_name=sheet_name, startrow=0, startcol=0, index=False, header=True)

    writer.save()
Exemplo n.º 7
0
def get_missing_win_shares(injury_report, team):
    team_injuries = injury_report.loc[injury_report['TEAM'] == team]
    team_injuries = team_injuries.loc[team_injuries['STATUS'] == 'Out']
    team_injuries = list(team_injuries['PLAYER'])
    win_shares = 0
    for player in team_injuries:
        try:
            player_stats = get_stats(player, stat_type='ADVANCED').tail(1)
            if not player_stats.loc[player_stats['SEASON'] == '2019-20'].empty:
                win_shares += list(player_stats['WS'])[0]
        except:
            pass
    return round(win_shares)
Exemplo n.º 8
0
def get_player_df(players, stat_type, stat, playoffs, player_labels):
    """
    Get dataframe from basketball_scraper
    :param players: list of player names
    :return:
    """
    if not player_labels:
        player_labels = players

    players_df = []
    for player, player_label in zip(players, player_labels):
        player_df = bball_players.get_stats(player, stat_type, playoffs)
        player_df = df_format(player_df, stat)
        players_df.append((player_df, player_label))

    return players_df
Exemplo n.º 9
0
def get_playoff_minutes(row):
    p = row['PLAYER']
    print('processing: ' + p)

    # fix encoding issue from bballref table scrape
    # č = ć, but is coming in as just Ä, which is invalid
    try:
        player = p.encode('cp1252').decode()
    except:
        print('encoding error ' + p)

        index = p.find('Ä')
        while index > -1 and index <= len(p):
            try:
                s = 'Ä' + p[index + 1]
                s.encode('cp1252').decode()
                index += 1
            except:
                p = p[:index + 1] + '‡' + p[index + 1:]

            index = p.find('Ä', index)

        player = p.encode('cp1252', 'ignore').decode()
        print('encoding error fixed: ' + player)

    try:
        player_df = get_stats(player,
                              stat_type='TOTALS',
                              playoffs=True,
                              career=True,
                              ask_matches=False)
        if not player_df.empty:
            return player_df['MP'].sum()
    except (ValueError, IndexError):
        return 0
    except:
        print('api error ' + player)

    return 0
Exemplo n.º 10
0
def user_input():
    team_or_player = input("What stats would you like to see: (1)Team or (2)Player ")

    if team_or_player == '1':
        user_team = input("What team would you like to view? ")
        user_season = int(input("Enter the desired season: "))

        user_stats = input("Enter the number for what stat you would like to see: \n1.) Roster List\n"
                           "2.) Team Stats\n"
                           "3.) Team Opponent Stats\n"
                           "4.) Roster Stats\n"
                           "5.) Misc Stats\n")

        print_or_excel = input("Would you like to save information in an excel sheet (Y/N)? ").upper()

        if user_stats == '1':

            if print_or_excel == 'Y':
                roster_list(user_team, user_season)
                print("Saved")

            elif print_or_excel == 'N':
                print(get_roster(user_team, user_season))

        elif user_stats == '2':
            data_format = input("Enter data format: (TOTAL | PER_GAME): ").upper()

            if print_or_excel == 'Y':
                team_stats(user_team, user_season, data_format)
                print(get_team_stats(user_team, user_season, data_format))

            elif print_or_excel == 'N':
                print(get_team_stats(user_team, user_season, data_format))

        elif user_stats == '3':
            data_format = input("Enter data format: (TOTAL | PER_GAME: ").upper()

            if print_or_excel == 'Y':
                team_opp_stats(user_team, user_season, data_format)
                print(get_opp_stats(user_team, user_season, data_format))

            elif print_or_excel == 'N' or 'n':
                print(get_opp_stats(user_team, user_season, data_format))

        elif user_stats == '4':
            user_playoffs = input("Would you like playoff roster stats? (Y/N) ")
            data_format = input("Enter data format: (TOTAL | PER_GAME): ").upper()
            playoffs = False

            if user_playoffs == 'Y':
                playoffs = True
            if print_or_excel == 'Y':
                roster_stats(user_team, user_season, data_format, playoffs)
                print(get_roster_stats(user_team, user_season, data_format, playoffs))
            elif print_or_excel == 'N':
                print(get_roster_stats(user_team, user_season, data_format, playoffs))

        elif user_stats == '5':
            if print_or_excel == 'Y':
                team_misc(user_team, user_season)
                print(get_team_misc(user_team, user_season))
            elif print_or_excel == 'N':
                print(get_team_misc(user_team, user_season))

    elif team_or_player == '2':
        user_player = input('What player do you like to view? ')
        print_or_excel = input("Save into excel sheet? (Y/N): ").upper()

        user_stats = input("Enter the number for what stat you would like to see: \n"
                           "1.) Player Stats\n"
                           "2.) Game Logs\n")
        user_playoffs = input("Playoff Stats? (Y/N): ").upper()

        if user_stats == '1':
            stat_type = input("Enter stat type: (PER_GAME | PER_MINUTE | PER_POSS | ADVANCED): ").upper()
            user_career = input("Career Stats? (Y/N): ").upper()

            if user_playoffs == 'Y':
                playoffs = True
            else:
                playoffs = False

            if user_career == 'Y':
                career = True
            else:
                career = False

            if print_or_excel == "Y":
                player_stats(user_player, stat_type, playoffs, career)
                print(get_stats(user_player, stat_type, playoffs, career))
            elif print_or_excel == "N":
                print(get_stats(user_player, stat_type, playoffs, career))

        elif user_stats == '2':
            user_start_date = input("Enter start date: (YYYY-MM-DD): ").upper()
            user_end_date = input("Enter end date: (YYYY-MM-DD): ")
            if user_playoffs == 'Y':
                playoffs = True
            else:
                playoffs = False

            if print_or_excel == "Y":
                player_game_logs(user_player, user_start_date, user_end_date, playoffs)
                print(get_game_logs(user_player, user_start_date, user_end_date, playoffs))
            elif print_or_excel == "N":
                print(get_game_logs(user_player, user_start_date, user_end_date, playoffs))
Exemplo n.º 11
0
#Get team roster stats
bulls_2020 = get_roster_stats('CHI', 2020)

#Select individual player
bulls_2020[bulls_2020.PLAYER == "Coby White"]
''' Get individual players 

name - Player full name (e.g. 'LaMarcus Aldridge')
stat_type - One of 'PER_GAME', 'PER_MINUTE', 'PER_POSS', 'ADVANCED'
playoffs - Whether to return Playoff stats or not. One of True|False. Default value is False
career - Whether to return career stats or not. One of True|False. Default value is False

'''

coby = get_stats("Coby White",
                 stat_type='ADVANCED',
                 playoffs=False,
                 career=False)
coby.head(10)

d = get_player_headshot('Coby White')

d = get_shot_chart('2019-12-28', 'TOR', 'BOS')

#Import college players
from sportsreference.ncaab.roster import Player as pl

player_ncaa = pl('kenyon-martin-1')
#get available object variables
dir(player_ncaa)
player_ncaa.dataframe.iloc[-2, :]
Exemplo n.º 12
0
#Script to get NBA roster from a certain year
from basketball_reference_scraper.teams import get_roster
roster = get_roster('CLE', 2016)
print("\nCleveland Cavaliers 2016 Roster:")
print(roster)

#Script to retrieve an indiviual player's stats by year
from basketball_reference_scraper.players import get_stats
stats = get_stats('Collin Sexton', stat_type='PER_GAME')
print("\nCollin Sexton Stats:")
print(stats)

#Script to get NBA standing on a certain date
from basketball_reference_scraper.seasons import get_standings
standings = get_standings()
print("\nCurrent NBA Standings:")
print(standings)
Exemplo n.º 13
0
s = get_team_stats('GSW', 2019, data_format='PER_GAME')
print(s)

s = get_opp_stats('GSW', 2019, data_format='PER_GAME')
print(s)

s = get_roster_stats('GSW', 2019, data_format='PER_GAME', playoffs=False)
print(s)

s = get_team_misc('GSW', 2019)
print(s)

from basketball_reference_scraper.players import get_stats, get_game_logs

s = get_stats('Stephen Curry',
              stat_type='PER_GAME',
              playoffs=False,
              career=False)
print(s)

df = get_game_logs('LeBron James', '2010-01-19', '2014-01-20', playoffs=False)
print(df)

from basketball_reference_scraper.seasons import get_schedule, get_standings

s = get_schedule(2018, playoffs=False)
print(s)

s = get_standings(date='2020-01-06')
print(s)

from basketball_reference_scraper.box_scores import get_box_scores
Exemplo n.º 14
0
#Documentation for library
#https://github.com/vishaalagartha/basketball_reference_scraper

#dependencies
import pandas as pd
import numpy as np
import os
from basketball_reference_scraper.players import get_stats, get_game_logs, get_player_headshot
import scipy.stats as st
import matplotlib.pyplot as plt

# GEt stats
player_input = input("Please Enter an NBA Player: ")

player_stats = get_stats(player_input)

#Graphing
x = (player_stats["MP"])
xx = x.dropna()
y = player_stats["FGA"]
yy = y.dropna()
plt.scatter(x, y)
plt.xlabel("Minutes")
plt.ylabel("Points")

#Linear Regression
#import scipy.stats as st
cor = round(st.pearsonr(x, y)[0], 2)
print(f"The correlation between minutes and game score is {cor}")
model = st.linregress(xx, yy)