3行代码拉取NBA官方数据:nba_api 快速上手
3行代码拉取NBA官方数据nba_api 快速上手【免费下载链接】nba_apiAn API Client package to access the APIs for NBA.com项目地址: https://gitcode.com/gh_mirrors/nb/nba_api一、nba_api 解决什么问题nba_api 是 NBA.com 官方数据 API 的 Python 客户端一个类实例化就返回完整 JSON。手动去官网抓数据要翻好几个页面再抄表格这里一次调用就把球员生涯、球队日志、当天比分全部拿到手100 多个端点覆盖统计与实时数据。二、nba_api 安装步骤与第一个调用环境要求一句话Python 3.9依赖requests和numpy要用 Pandas DataFrame 的话再装pandas可选。安装只有一条命令pip install nba_api装完跑这三行能打印出行数就说明请求链路通了from nba_api.stats.endpoints import playercareerstats career playercareerstats.PlayerCareerStats(player_id203999) print(len(career.get_data_frames()[0]), rows)这段代码干了三件事①导入球员生涯统计端点 ②用约基奇的球员ID发起一次真实请求 ③把返回的第一张表转成 DataFrame 并打印行数。如果走git clone参与开发仓库地址是git clone https://gitcode.com/gh_mirrors/nb/nba_api然后pip install -e .即可。三、核心能力拆解从查ID到实时比分 ⚡3.1 按名字找到球员和球队的ID所有端点都要 ID不想背 ID 就用内置静态数据本地匹配不走网络from nba_api.stats.static import players, teams players.find_players_by_full_name(Curry) # [{id: 201939, full_name: Stephen Curry, ...}] teams.find_teams_by_abbreviation(^LAL$) # [{id: 1610612746, full_name: Los Angeles Lakers, ...}]注意参数是正则表达式模糊词会带回一串结果所以示例里球队用了^...$锚定精确匹配。3.2 获取NBA球员生涯数据拿一个球员整个职业生涯的场均和累计数据from nba_api.stats.endpoints import playercareerstats career playercareerstats.PlayerCareerStats(player_id203999) df career.get_data_frames()[0] # 常规赛生涯汇总每行一个赛季 df[[SEASON_ID, GP, PTS, REB, AST]].head()get_data_frames()返回一个 DataFrame 列表[0]是常规赛生涯表包含 GP、PTS、REB、AST 等 20 多列直接接 pandas 分析。3.3 拿到当天所有比赛的实时比分比赛日想看所有场次的实时比分用 live 模块的 ScoreBoardfrom nba_api.live.nba.endpoints import scoreboard board scoreboard.ScoreBoard().get_dict()[scoreboard] for g in board[games]: print(g[gameId], g[homeTeam][score], -, g[awayTeam][score])输出形如0022400012 118 - 104每场比赛还带球队名、节次、剩余时间和双方数据王。四、两个完整工作流 案例A简单查一个球员的生涯场均第1步把名字转成球员IDfrom nba_api.stats.static import players found players.find_players_by_full_name(^LeBron James$) print(found[0][id]) # 2544第2步拿到 ID 之后调生涯端点第3步算场均from nba_api.stats.endpoints import playercareerstats df playercareerstats.PlayerCareerStats(player_id2544).get_data_frames()[0] print(df[[GP, PTS, REB, AST]].mean(numeric_onlyTrue).round(1))输出就是生涯场均得分、篮板、助攻一个数都没手抄。案例B复杂球队战绩查询到胜率结论第1步按队名找到球队IDfrom nba_api.stats.static import teams lakers teams.find_teams_by_full_name(^Los Angeles Lakers$) team_id lakers[0][id]第2步拿到 team_id 之后拉该队整个常规赛的比赛日志from nba_api.stats.endpoints import teamgamelog log teamgamelog.TeamGameLog(team_idteam_id, season2022-23) df log.get_data_frames()[0]第3步按WL列统计胜负并输出结论wins (df[WL] W).sum() print(f2022-23 常规赛: {wins}胜{len(df)-wins}负, 胜率 {wins/len(df):.1%})这条链路是静态ID → 端点请求 → DataFrame 计算 → 结论把season换成别的年份、把队名换成你关注的球队就是自己的赛季分析脚本。五、踩过的坑 ⚠️现象调get_data_frames()报Import Missing - Failed to import DataFrame from pandas.原因pandas是可选依赖没装。解法pip install pandas不想要 DataFrame 就用get_dict()。现象find_players_by_full_name(James)返回一堆人或者空列表导致[0]直接 IndexError。原因参数是正则模式且是模糊搜索拼写对不上就返回[]。解法写^LeBron James$精确锚定取值前先判断if found:。现象season2022或season2022查不到数据。原因season 参数只认YYYY-YY格式的赛季字符串。解法传season2022-23别用整数或单年份。六、想深入的话自定义端点继承 Endpoint 基类填好endpoint名和默认参数就能调 NBA.com 上任何新接口仓库自带 端点文件生成器 可以半自动生成。性能建议查球员/球队 ID 一律走 static 模块数据随包分发不消耗 HTTP 请求批量拉数据时控制并发、加本地缓存。贡献代码按 CONTRIBUTING.md 的规范走发现 NBA.com 上新或下线的端点提 Issue 或 PR 都可以。七、下一步端点文档目录每个端点的参数和返回结构都有说明使用示例代理、自定义请求头、超时配置Jupyter Notebook 实战基础调用、查找比赛、逐回合数据、实时数据打开终端跑pip install nba_api然后回来把第四节案例B里的队名换成你关注的球队。【免费下载链接】nba_apiAn API Client package to access the APIs for NBA.com项目地址: https://gitcode.com/gh_mirrors/nb/nba_api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考