Beispiel #1
0
    def __init__(self,
                 db=None,
                 cache_name='nbacom-agent',
                 cookies=None,
                 table_names=None):
        '''
        Args:
            db (NBAPostgres): instance
            cache_name (str): for scraper cache_name
            cookies: cookie jar
            table_names (dict): Database table names

        '''
        logging.getLogger(__name__).addHandler(logging.NullHandler())
        self.scraper = NBAComScraper(cache_name=cache_name, cookies=cookies)
        self.parser = NBAComParser()
        self.db = db
        if table_names:
            self.table_names = table_names
        else:
            self.table_names = {
                'pgl': 'player_gamelogs',
                'tgl': 'team_gamelogs',
                'seas': 'season',
                'pl': 'player',
                'ps': 'playerstats_daily',
                'ts': 'teamstats_daily',
                'tod': 'team_opponent_dashboard',
                'pbs': 'player_boxscores_combined',
                'tbs': 'team_boxscores_combined',
                'box2': 'game_boxscores',
                'tm': 'team'
            }
Beispiel #2
0
    def __init__(self, db=None):
        logging.getLogger(__name__).addHandler(logging.NullHandler())
        self._dk_players = []
        self.scraper = NBAComScraper()
        self.parser = NBAComParser()

        if db:
            self.nbadb = db
Beispiel #3
0
 def __init__(self, db=None, cache_name=None, cookies=None):
     '''
     Arguments:
         cache_name: str for scraper cache_name
         cookies: cookie jar
         db: NBAComPg instance
     '''
     self.scraper = NBAComScraper(cache_name=cache_name, cookies=cookies)
     self.parser = NBAComParser()
     if db:
         self.db = db
         self.insert_db = True
     else:
         self.insert_db = False
Beispiel #4
0
 def __init__(self, db=None, cache_name=None, cookies=None):
     '''
     Arguments:
         cache_name: str for scraper cache_name
         cookies: cookie jar
         db: NBAComPg instance
     '''
     logging.getLogger(__name__).addHandler(logging.NullHandler())
     self.scraper = NBAComScraper(cache_name=cache_name, cookies=cookies)
     self.parser = NBAComParser()
     if db:
         self.db = db
         self.insert_db = True
     else:
         self.insert_db = False
Beispiel #5
0
 def setUp(self):
     logging.getLogger(__name__).addHandler(logging.NullHandler())
     self.nbs = NBAComScraper()
     self.nbp = NBAComParser()
Beispiel #6
0
def load_data(per_mode, playerpool_size, thresh_gp, thresh_min, lastn=0,
              season_code=None, sortcol=None, fn=None):
    '''
    Loads data from nba.com or csv file

    Args:
        per_mode (str): 'Totals', 'PerGame', 'Per48'
        playerpool_size (int): number of players in pool
        thresh_gp (int): minimum number of games played
        thresh_min (int): minimum number of minutes played
        lastn (int): last number of games, default 0
        season_code (str): '2017-18', etc., default None
        sortcol (str): sort, default None
        fn (str): filename of csv, default None

    Returns:
        DataFrame

    '''
    if fn:
        df = pd.read_csv(fn)
    else:
        scraper = NBAComScraper(cache_name='fbasim')
        parser = NBAComParser()
        if not season_code:
            season_code = current_season_code()
        content = scraper.playerstats(season_code, per_mode, lastn)
        df = pd.DataFrame(parser.playerstats(content, per_mode))       
        df['MIN'] = df['MIN'].astype(int)
        df = df.rename(index=str, columns={"TEAM_ABBREVIATION": "TEAM"})

    # account for gp & minutes thresholds
    if thresh_gp and thresh_min:
        crit = (df.GP >= thresh_gp) & (df.MIN >= thresh_min)
        nthresh = len(df[crit])
        if nthresh > playerpool_size:
            df = df[crit][0:playerpool_size]
        else:
            df = df[crit]    
    elif thresh_gp:
        crit = df.GP >= thresh_gp
        nthresh = len(df[crit])
        if nthresh > playerpool_size:
            df = df[0:playerpool_size]
        else:
            df = df[crit] 
    elif thresh_min:
        crit = df.MIN >= thresh_min
        nthresh = len(df[crit])
        if nthresh > playerpool_size:
            df = df[0:playerpool_size]
        else:
            df = df[crit]       
    
    # need index for joins in the sim
    df.set_index('PLAYER_ID')
        
    if sortcol:
        return df.sort_values(sortcol, ascending=False)
    else:
        return df