Installation

$ pip install nba_stats_tracking

Code Examples

Aggregating Multiple Tracking Shot Stat Filters and/or Seasons

The following will get aggregate player stats for Catch and Shoot, Open or Wide-Open shots in the Regular Season and Playoffs from 2013-14 to 2019-20:

from nba_stats_tracking import tracking_shots
from nba_stats_tracking.models.request import SeasonType
from nba_stats_tracking.models.tracking_shots import CloseDefDist, GeneralRange

seasons = ['2013-14', '2014-15', '2015-16', '2016-17', '2017-18', '2018-19', '2019-20']
season_types = [SeasonType.regular_season, SeasonType.playoffs]
def_distances = [CloseDefDist.range_6_plus_ft, CloseDefDist.range_4_6_ft]
general_ranges = [GeneralRange.catch_and_shoot]

stats, league_totals = tracking_shots.aggregate_full_season_tracking_shot_stats_for_seasons(
    'player',
    seasons,
    season_types,
    CloseDefDistRange=def_distances,
    GeneralRange=general_ranges
)

for stat in stats:
    print(stat)
print(league_totals)

Generating Tracking Shot Game Logs

The following gets player game logs for Open and Wide Open Catch and Shoot shots for games from 02/02/2020 to 02/03/2020:

from datetime import date

from nba_stats_tracking import tracking_shots
from nba_stats_tracking.models.tracking_shots import CloseDefDist, GeneralRange

def_distances = [CloseDefDist.range_6_plus_ft, CloseDefDist.range_4_6_ft]
general_ranges = [GeneralRange.catch_and_shoot]
date_from = date(2020, 2, 2)
date_to = date(2020, 2, 3)

game_logs = tracking_shots.generate_tracking_shot_game_logs(
    tracking_shots.EntityType.player,
    date_from,
    date_to,
    CloseDefDistRange=def_distances,
    GeneralRange=general_ranges
)
for game_log in game_logs:
    print(game_log)

Aggregating Multiple Tracking Shot Stat Filters and Grouping by Season

The following gets player stats for Catch and Shoot, Open or Wide-Open shots in the Regular Season from 2013-14 to 2019-20 and groups the results by season:

from nba_stats_tracking import tracking_shots
from nba_stats_tracking.models.request import SeasonType
from nba_stats_tracking.models.tracking_shots import CloseDefDist, GeneralRange

seasons = ['2013-14', '2014-15', '2015-16', '2016-17', '2017-18', '2018-19', '2019-20']
season_types = [SeasonType.regular_season]
def_distances = [CloseDefDist.range_6_plus_ft, CloseDefDist.range_4_6_ft]
general_ranges = [GeneralRange.catch_and_shoot]

stats = tracking_shots.get_tracking_shot_stats(
    tracking_shots.EntityType.player,
    seasons,
    season_types,
    CloseDefDistRange=def_distances,
    GeneralRange=general_ranges
)

for stat in stats:
    print(stat)

Aggregating Multiple Seasons of Tracking Stats

The following gets player speed and distance stats from 2018-19 to 2019-20:

from nba_stats_tracking import tracking
from nba_stats_tracking.models.request import SeasonType
from nba_stats_tracking.models.tracking import TrackingMeasureType, PlayerOrTeam

stat_measure = TrackingMeasureType.speed_distance
seasons = ['2018-19', '2019-20']
season_types = [SeasonType.regular_season]
stats, league_totals = tracking.aggregate_full_season_tracking_stats_for_seasons(
    stat_measure,
    seasons,
    season_types,
    PlayerOrTeam.player
)

for stat in stats:
    print(stat)

print('-----------------------')
print(league_totals)

Generating Tracking Game Logs

The following gets player game logs for all tracking stats for games on 02/02/2020:

from datetime import date

from nba_stats_tracking import tracking
from nba_stats_tracking.helpers import get_team_id_maps_for_date, get_player_team_map_for_date
from nba_stats_tracking.models.tracking import TrackingMeasureType, PlayerOrTeam

game_date = date(2020, 2, 2)

team_id_game_id_map, team_id_opponent_team_id_map = get_team_id_maps_for_date(game_date)
player_id_team_id_map = get_player_team_map_for_date(game_date)

for stat_measure in TrackingMeasureType:
    game_logs = tracking.generate_tracking_game_logs(
        stat_measure,
        PlayerOrTeam.player,
        game_date,
        game_date,
        team_id_game_id_map=team_id_game_id_map,
        team_id_opponent_team_id_map=team_id_opponent_team_id_map,
        player_id_team_id_map=player_id_team_id_map,
    )
    for game_log in game_logs:
        print(game_log)

Get Opponent Tracking Stats For An Individual Team

The following gets opponent catch and shoot stats for the Boston Celtics in 2019-20

from nba_stats_tracking import tracking
from nba_stats_tracking.models.request import SeasonType
from nba_stats_tracking.models.tracking import TrackingMeasureType, PlayerOrTeam

stat_measure = TrackingMeasureType.catch_and_shoot
seasons = ['2019-20']
season_types = [SeasonType.regular_season]
opponent_team_id = 1610612738

stats, league_totals = tracking.aggregate_full_season_tracking_stats_for_seasons(
    stat_measure,
    seasons,
    season_types,
    PlayerOrTeam.player,
    OpponentTeamID=opponent_team_id
)

for stat in stats:
    print(stat)
print(league_totals)

Get Matchup stats for game id

The following gets matchup data for a single game id

from nba_stats_tracking import matchups

game_id = "0022100831"
results = matchups.get_matchup_results_for_game_id(game_id)
print(results)