NBA Stats (1980-2024)
This comprehensive dataset encompasses a wide array of NBA statistics.
@kaggle.rodneycarroll78_nba_stats_1980_2024
This comprehensive dataset encompasses a wide array of NBA statistics.
@kaggle.rodneycarroll78_nba_stats_1980_2024
There are three informational files: Player Season Info, Player Career Info & Team Abbrevs. Each player was given a unique player ID to facilitate aggregation into career stats.
On the team side, there are 7 files:
totals & opponent totals
per game & opponent per game statistics
per 100 possessions & opponent per 100 possessions statistics (starting from 1974)
team summaries
On the player side, there are 10 files:
player totals
player per game stats
player per 36 minute stats
player per 100 possessions stats (starting from 1974)
player advanced stats
player play by play stats (starting from 1997) - percentage of time spent at different positions, fouls drawn & committed, etc
player shooting stats (starting from 1997) - success rate and attempt rate from different shot distances
end of season teams (All-Defense, All-Rookie, All-League)
end of season team voting (All-League)
all-star selections
awards voting results (Rookie of the Year, Sixth Man of the Year, Most Valuable Player, Defensive Player of the Year, Most Improved Player)
Data Obtained from Basketball Reference
Update 4/28:Dataset now includes complete team data for the 2023-2024
Update 5/3: Dataset now includes advanced player statistics for the 2023-2024 season.
CREATE TABLE advanced (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" DOUBLE,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"mp" DOUBLE,
"per" DOUBLE,
"ts_percent" DOUBLE,
"x3p_ar" DOUBLE,
"f_tr" DOUBLE,
"orb_percent" DOUBLE,
"drb_percent" DOUBLE,
"trb_percent" DOUBLE,
"ast_percent" DOUBLE,
"stl_percent" DOUBLE,
"blk_percent" DOUBLE,
"tov_percent" DOUBLE,
"usg_percent" DOUBLE,
"ows" DOUBLE,
"dws" DOUBLE,
"ws" DOUBLE,
"ws_48" DOUBLE,
"obpm" DOUBLE,
"dbpm" DOUBLE,
"bpm" DOUBLE,
"vorp" DOUBLE
);CREATE TABLE all_star_selections (
"player" VARCHAR,
"team" VARCHAR,
"lg" VARCHAR,
"season" BIGINT,
"replaced" BOOLEAN
);CREATE TABLE end_of_season_teams (
"season" BIGINT,
"lg" VARCHAR,
"type" VARCHAR,
"number_tm" VARCHAR,
"player" VARCHAR,
"position" VARCHAR,
"seas_id" BIGINT,
"player_id" BIGINT,
"birth_year" DOUBLE,
"tm" VARCHAR,
"age" BIGINT
);CREATE TABLE end_of_season_teams_voting (
"season" BIGINT,
"lg" VARCHAR,
"type" VARCHAR,
"number_tm" VARCHAR,
"position" VARCHAR,
"player" VARCHAR,
"age" DOUBLE,
"tm" VARCHAR,
"pts_won" DOUBLE,
"pts_max" DOUBLE,
"share" DOUBLE,
"x1st_tm" DOUBLE,
"x2nd_tm" DOUBLE,
"x3rd_tm" DOUBLE,
"seas_id" BIGINT,
"player_id" BIGINT
);CREATE TABLE opponent_stats_per_100_poss (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" BIGINT,
"mp" BIGINT,
"opp_fg_per_100_poss" DOUBLE,
"opp_fga_per_100_poss" DOUBLE,
"opp_fg_percent" DOUBLE,
"opp_x3p_per_100_poss" DOUBLE,
"opp_x3pa_per_100_poss" DOUBLE,
"opp_x3p_percent" DOUBLE,
"opp_x2p_per_100_poss" DOUBLE,
"opp_x2pa_per_100_poss" DOUBLE,
"opp_x2p_percent" DOUBLE,
"opp_ft_per_100_poss" DOUBLE,
"opp_fta_per_100_poss" DOUBLE,
"opp_ft_percent" DOUBLE,
"opp_orb_per_100_poss" DOUBLE,
"opp_drb_per_100_poss" DOUBLE,
"opp_trb_per_100_poss" DOUBLE,
"opp_ast_per_100_poss" DOUBLE,
"opp_stl_per_100_poss" DOUBLE,
"opp_blk_per_100_poss" DOUBLE,
"opp_tov_per_100_poss" DOUBLE,
"opp_pf_per_100_poss" DOUBLE,
"opp_pts_per_100_poss" DOUBLE
);CREATE TABLE opponent_stats_per_game (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" DOUBLE,
"mp_per_game" DOUBLE,
"opp_fg_per_game" DOUBLE,
"opp_fga_per_game" DOUBLE,
"opp_fg_percent" DOUBLE,
"opp_x3p_per_game" DOUBLE,
"opp_x3pa_per_game" DOUBLE,
"opp_x3p_percent" DOUBLE,
"opp_x2p_per_game" DOUBLE,
"opp_x2pa_per_game" DOUBLE,
"opp_x2p_percent" DOUBLE,
"opp_ft_per_game" DOUBLE,
"opp_fta_per_game" DOUBLE,
"opp_ft_percent" DOUBLE,
"opp_orb_per_game" DOUBLE,
"opp_drb_per_game" DOUBLE,
"opp_trb_per_game" DOUBLE,
"opp_ast_per_game" DOUBLE,
"opp_stl_per_game" DOUBLE,
"opp_blk_per_game" DOUBLE,
"opp_tov_per_game" DOUBLE,
"opp_pf_per_game" DOUBLE,
"opp_pts_per_game" DOUBLE
);CREATE TABLE opponent_totals (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" DOUBLE,
"mp" DOUBLE,
"opp_fg" DOUBLE,
"opp_fga" DOUBLE,
"opp_fg_percent" DOUBLE,
"opp_x3p" DOUBLE,
"opp_x3pa" DOUBLE,
"opp_x3p_percent" DOUBLE,
"opp_x2p" DOUBLE,
"opp_x2pa" DOUBLE,
"opp_x2p_percent" DOUBLE,
"opp_ft" DOUBLE,
"opp_fta" DOUBLE,
"opp_ft_percent" DOUBLE,
"opp_orb" DOUBLE,
"opp_drb" DOUBLE,
"opp_trb" DOUBLE,
"opp_ast" DOUBLE,
"opp_stl" DOUBLE,
"opp_blk" DOUBLE,
"opp_tov" DOUBLE,
"opp_pf" DOUBLE,
"opp_pts" DOUBLE
);CREATE TABLE per_36_minutes (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" DOUBLE,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"gs" DOUBLE,
"mp" DOUBLE,
"fg_per_36_min" DOUBLE,
"fga_per_36_min" DOUBLE,
"fg_percent" DOUBLE,
"x3p_per_36_min" DOUBLE,
"x3pa_per_36_min" DOUBLE,
"x3p_percent" DOUBLE,
"x2p_per_36_min" DOUBLE,
"x2pa_per_36_min" DOUBLE,
"x2p_percent" DOUBLE,
"ft_per_36_min" DOUBLE,
"fta_per_36_min" DOUBLE,
"ft_percent" DOUBLE,
"orb_per_36_min" DOUBLE,
"drb_per_36_min" DOUBLE,
"trb_per_36_min" DOUBLE,
"ast_per_36_min" DOUBLE,
"stl_per_36_min" DOUBLE,
"blk_per_36_min" DOUBLE,
"tov_per_36_min" DOUBLE,
"pf_per_36_min" DOUBLE,
"pts_per_36_min" DOUBLE
);CREATE TABLE player_award_shares (
"season" BIGINT,
"award" VARCHAR,
"player" VARCHAR,
"age" BIGINT,
"tm" VARCHAR,
"first" DOUBLE,
"pts_won" DOUBLE,
"pts_max" DOUBLE,
"share" DOUBLE,
"winner" VARCHAR,
"seas_id" BIGINT,
"player_id" BIGINT
);CREATE TABLE player_career_info (
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"hof" BOOLEAN,
"num_seasons" BIGINT,
"first_seas" BIGINT,
"last_seas" BIGINT
);CREATE TABLE player_per_game (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" DOUBLE,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"gs" DOUBLE,
"mp_per_game" DOUBLE,
"fg_per_game" DOUBLE,
"fga_per_game" DOUBLE,
"fg_percent" DOUBLE,
"x3p_per_game" DOUBLE,
"x3pa_per_game" DOUBLE,
"x3p_percent" DOUBLE,
"x2p_per_game" DOUBLE,
"x2pa_per_game" DOUBLE,
"x2p_percent" DOUBLE,
"e_fg_percent" DOUBLE,
"ft_per_game" DOUBLE,
"fta_per_game" DOUBLE,
"ft_percent" DOUBLE,
"orb_per_game" DOUBLE,
"drb_per_game" DOUBLE,
"trb_per_game" DOUBLE,
"ast_per_game" DOUBLE,
"stl_per_game" DOUBLE,
"blk_per_game" DOUBLE,
"tov_per_game" DOUBLE,
"pf_per_game" DOUBLE,
"pts_per_game" DOUBLE
);CREATE TABLE player_play_by_play (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" BIGINT,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"mp" BIGINT,
"pg_percent" DOUBLE,
"sg_percent" DOUBLE,
"sf_percent" DOUBLE,
"pf_percent" DOUBLE,
"c_percent" DOUBLE,
"on_court_plus_minus_per_100_poss" DOUBLE,
"net_plus_minus_per_100_poss" DOUBLE,
"bad_pass_turnover" BIGINT,
"lost_ball_turnover" BIGINT,
"shooting_foul_committed" BIGINT,
"offensive_foul_committed" BIGINT,
"shooting_foul_drawn" BIGINT,
"offensive_foul_drawn" DOUBLE,
"points_generated_by_assists" BIGINT,
"and1" BIGINT,
"fga_blocked" BIGINT
);CREATE TABLE player_season_info (
"season" BIGINT,
"seas_id" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" DOUBLE,
"lg" VARCHAR,
"tm" VARCHAR,
"experience" BIGINT
);CREATE TABLE player_shooting (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" BIGINT,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"mp" BIGINT,
"fg_percent" DOUBLE,
"avg_dist_fga" DOUBLE,
"percent_fga_from_x2p_range" DOUBLE,
"percent_fga_from_x0_3_range" DOUBLE,
"percent_fga_from_x3_10_range" DOUBLE,
"percent_fga_from_x10_16_range" DOUBLE,
"percent_fga_from_x16_3p_range" DOUBLE,
"percent_fga_from_x3p_range" DOUBLE,
"fg_percent_from_x2p_range" DOUBLE,
"fg_percent_from_x0_3_range" DOUBLE,
"fg_percent_from_x3_10_range" DOUBLE,
"fg_percent_from_x10_16_range" DOUBLE,
"fg_percent_from_x16_3p_range" DOUBLE,
"fg_percent_from_x3p_range" DOUBLE,
"percent_assisted_x2p_fg" DOUBLE,
"percent_assisted_x3p_fg" DOUBLE,
"percent_dunks_of_fga" DOUBLE,
"num_of_dunks" BIGINT,
"percent_corner_3s_of_3pa" DOUBLE,
"corner_3_point_percent" DOUBLE,
"num_heaves_attempted" BIGINT,
"num_heaves_made" BIGINT
);CREATE TABLE player_totals (
"seas_id" BIGINT,
"season" BIGINT,
"player_id" BIGINT,
"player" VARCHAR,
"birth_year" DOUBLE,
"pos" VARCHAR,
"age" DOUBLE,
"experience" BIGINT,
"lg" VARCHAR,
"tm" VARCHAR,
"g" BIGINT,
"gs" DOUBLE,
"mp" DOUBLE,
"fg" BIGINT,
"fga" BIGINT,
"fg_percent" DOUBLE,
"x3p" DOUBLE,
"x3pa" DOUBLE,
"x3p_percent" DOUBLE,
"x2p" BIGINT,
"x2pa" BIGINT,
"x2p_percent" DOUBLE,
"e_fg_percent" DOUBLE,
"ft" BIGINT,
"fta" BIGINT,
"ft_percent" DOUBLE,
"orb" DOUBLE,
"drb" DOUBLE,
"trb" DOUBLE,
"ast" BIGINT,
"stl" DOUBLE,
"blk" DOUBLE,
"tov" DOUBLE,
"pf" BIGINT,
"pts" BIGINT
);CREATE TABLE team_abbrev (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"playoffs" BOOLEAN,
"abbreviation" VARCHAR
);CREATE TABLE team_stats_per_100_poss (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" BIGINT,
"mp" BIGINT,
"fg_per_100_poss" DOUBLE,
"fga_per_100_poss" DOUBLE,
"fg_percent" DOUBLE,
"x3p_per_100_poss" DOUBLE,
"x3pa_per_100_poss" DOUBLE,
"x3p_percent" DOUBLE,
"x2p_per_100_poss" DOUBLE,
"x2pa_per_100_poss" DOUBLE,
"x2p_percent" DOUBLE,
"ft_per_100_poss" DOUBLE,
"fta_per_100_poss" DOUBLE,
"ft_percent" DOUBLE,
"orb_per_100_poss" DOUBLE,
"drb_per_100_poss" DOUBLE,
"trb_per_100_poss" DOUBLE,
"ast_per_100_poss" DOUBLE,
"stl_per_100_poss" DOUBLE,
"blk_per_100_poss" DOUBLE,
"tov_per_100_poss" DOUBLE,
"pf_per_100_poss" DOUBLE,
"pts_per_100_poss" DOUBLE
);CREATE TABLE team_stats_per_game (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" DOUBLE,
"mp_per_game" DOUBLE,
"fg_per_game" DOUBLE,
"fga_per_game" DOUBLE,
"fg_percent" DOUBLE,
"x3p_per_game" DOUBLE,
"x3pa_per_game" DOUBLE,
"x3p_percent" DOUBLE,
"x2p_per_game" DOUBLE,
"x2pa_per_game" DOUBLE,
"x2p_percent" DOUBLE,
"ft_per_game" DOUBLE,
"fta_per_game" DOUBLE,
"ft_percent" DOUBLE,
"orb_per_game" DOUBLE,
"drb_per_game" DOUBLE,
"trb_per_game" DOUBLE,
"ast_per_game" DOUBLE,
"stl_per_game" DOUBLE,
"blk_per_game" DOUBLE,
"tov_per_game" DOUBLE,
"pf_per_game" DOUBLE,
"pts_per_game" DOUBLE
);CREATE TABLE team_summaries (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"age" DOUBLE,
"w" BIGINT,
"l" BIGINT,
"pw" BIGINT,
"pl" BIGINT,
"mov" DOUBLE,
"sos" DOUBLE,
"srs" DOUBLE,
"o_rtg" DOUBLE,
"d_rtg" DOUBLE,
"n_rtg" DOUBLE,
"pace" DOUBLE,
"f_tr" DOUBLE,
"x3p_ar" DOUBLE,
"ts_percent" DOUBLE,
"e_fg_percent" DOUBLE,
"tov_percent" DOUBLE,
"orb_percent" DOUBLE,
"ft_fga" DOUBLE,
"opp_e_fg_percent" DOUBLE,
"opp_tov_percent" DOUBLE,
"opp_drb_percent" DOUBLE,
"opp_ft_fga" DOUBLE,
"arena" VARCHAR
);CREATE TABLE team_totals (
"season" BIGINT,
"lg" VARCHAR,
"team" VARCHAR,
"abbreviation" VARCHAR,
"playoffs" BOOLEAN,
"g" DOUBLE,
"mp" DOUBLE,
"fg" DOUBLE,
"fga" DOUBLE,
"fg_percent" DOUBLE,
"x3p" DOUBLE,
"x3pa" DOUBLE,
"x3p_percent" DOUBLE,
"x2p" DOUBLE,
"x2pa" DOUBLE,
"x2p_percent" DOUBLE,
"ft" DOUBLE,
"fta" DOUBLE,
"ft_percent" DOUBLE,
"orb" DOUBLE,
"drb" DOUBLE,
"trb" DOUBLE,
"ast" DOUBLE,
"stl" DOUBLE,
"blk" DOUBLE,
"tov" DOUBLE,
"pf" DOUBLE,
"pts" DOUBLE
);Anyone who has the link will be able to view this.