news 2026/8/22 16:58:40

3 分钟跑通 NBA 官方数据:nba_api 从查到用全解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 数据分析,却发现官网没有能直接调用的接口,第三方数据源又时断时续。nba_api 是一个 Python 客户端,直接对接 NBA.com 官方接口,球员统计、球队战绩、实时比分都能拉。pip 装完,3 分钟就能跑通第一个请求。

先看看它能帮你做什么

  • 给球星做生涯数据卡片:查一个球员整个生涯的赛季数据表,直接落成 pandas 表格,做图、写报告都方便。
  • 跟踪一支球队的赛季走势:逐场拿到每队的比分、胜败和各项数据,算胜率、画趋势都行。
  • 搭一个当日比分看板:拉取当天的比赛列表和实时状态,隔几十秒刷一次就是简易直播页。
  • 查球员、球队的 ID:名字换 ID 是最常用的前置操作,这份名单直接打包在库里面,不用发网络请求。
  • 做回合级分析:逐回合(play-by-play)、投篮落点图、胜率变化这类深度数据,对应的端点都有现成的类,100 多个端点基本把 stats.nba.com 覆盖了。

5 分钟上手:装完就拿到第一份数据

最省事的一条命令:

pip install nba_api

想改源码调试的话,克隆仓库再装:git clone https://gitcode.com/gh_mirrors/nb/nba_api,然后pip install -e .

装完直接发第一个请求,下面的示例查勒布朗·詹姆斯的基础信息:

from nba_api.stats.endpoints import commonplayerinfo info = commonplayerinfo.CommonPlayerInfo(player_id=2544) print(info.get_data_frames()[0]) # pandas 表格,需先 pip install pandas print(info.get_dict()) # 或者按字典取

自检方法:能打印出球员信息的 DataFrame、不抛网络异常,就说明装好了、请求也通了。

数据地图:你要找的数据在哪里

维度典型内容获取方式
球员生涯统计、逐场日志、每 36 分钟数据playercareerstatsplayergamelog等端点
球队赛季逐场日志、球队详情、逐年战绩teamgamelogteamdetails等端点
比赛技术统计、投篮图、逐回合、胜率boxscoretraditionalv2shotchartdetailplaybyplayv2
实时当日比分板、单场实时数据nba_api.live.nba.endpoints下的scoreboardboxscore
ID 映射球员/球队名单,名字换 IDnba_api.stats.static.playersteams(内置,不发请求)

每个端点支持哪些参数、返回哪些字段,都有逐条文档,查表即可:端点文档在docs/nba_api/stats/endpoints/,对应的源码在src/nba_api/stats/endpoints/,文件名和端点名一一对应。

三个最常用场景,看完就能抄

场景一:给球星做生涯数据表

思路:静态名单把名字换成 ID,再调生涯统计端点。

from nba_api.stats.static import players from nba_api.stats.endpoints import playercareerstats p = players.find_players_by_full_name('LeBron James')[0] career = playercareerstats.PlayerCareerStats(player_id=p['id']) df = career.get_data_frames()[0] print(df.head())

输出说明:返回的是 DataFrame 列表,第一张表就是生涯数据,GP、PTS、REB、AST 这些列都在,做卡片直接用。

场景二:跟踪一支球队的赛季战绩

思路:拿到球队 ID(湖人固定是 1610612739),按赛季调逐场日志。

from nba_api.stats.endpoints import teamgamelog log = teamgamelog.TeamGameLog(team_id=1610612739, season='2022-23', season_type_all_star='Regular Season') df = log.get_data_frames()[0] print(df[['GAME_DATE', 'MATCHUP', 'WL', 'PTS']].tail(10))

输出说明:每行一场比赛,WL 列是 W 或 L,数一下就知道赛季胜负场。

场景三:拉当日实时比分板

思路:live 模块不需要任何参数,实例化就是发请求。

from nba_api.live.nba.endpoints import scoreboard board = scoreboard.ScoreBoard() games = board.games.get_dict() for g in games: print(g['gameId'], g['gameStatusText'])

输出说明:每行一场比赛的 ID 和状态文本,比如 Final、In Progress,外层再套个循环定时刷新就是简易看板。

这些坑我替你踩过

  • 按名字查球员返回空列表find_players_by_full_name的参数其实是正则表达式,中文全名当然匹配不上英文名单,名字打错也会落空。解法:用短子串搜,比如'james';内置名单是某个赛季的快照,新援可能还没收录,可以用players.get_players()拉全量自己过滤。
  • 偶尔超时或 403:stats.nba.com 有防爬策略,短时间高频请求、数据中心 IP 容易被限。解法:请求之间隔几秒;端点支持proxyheaderstimeout参数(v1.1.0 起),配好代理和 User-Agent 再跑。
  • DataFrame 对不上想取的表:一个端点常返回多个数据集,get_data_frames()返回的是列表,列名各不相同还可能有 None。解法:先print(端点对象.get_available_data())看有哪些表,或直接按属性名取单表,比如career.career_totals_regular_season.get_data_frame()
  • get_data_frames()报缺 pandas:pandas 是可选依赖,不是必装项。解法:pip install pandas;不想装的话用get_dict()get_json()一样能拿数据。

接下来去哪

  • 文档总目录:docs/table_of_contents.md,从结构讲到各端点
  • 每个端点的参数说明:docs/nba_api/stats/endpoints/,一个端点一篇
  • 可运行的 Jupyter 示例:docs/examples/,含基础调用、查比赛、逐回合数据和实时数据
  • 参与贡献:CONTRIBUTING.md,发现新端点或字段变化可以提 issue

别急着铺开,先用players.find_players_by_full_name查一个你最熟的球员的 ID,这是所有后续操作的第一步。

【免费下载链接】nba_apiAn API Client package to access the APIs for NBA.com项目地址: https://gitcode.com/gh_mirrors/nb/nba_api

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 16:57:31

如何用 PyVISA 让 Python 自动操控 GPIB / USB / TCP/IP 测量仪器

如何用 PyVISA 让 Python 自动操控 GPIB / USB / TCP/IP 测量仪器 【免费下载链接】pyvisa A Python package with bindings to the "Virtual Instrument Software Architecture" VISA library, in order to control measurement devices and test equipment via GPI…

作者头像 李华
网站建设 2026/8/22 16:57:00

untrunc:不重新编码修复损坏 MP4/MOV 视频文件

untrunc:不重新编码修复损坏 MP4/MOV 视频文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 很多 MP4/MOV 文件"播不了",并不等…

作者头像 李华
网站建设 2026/8/22 16:56:21

LlamaIndex 系列【4】入门案例(阿里云百炼适配)

文章目录1. 高层概念1.1 大语言模型(LLMs)1.2 智能体应用(Agentic Applications)1.3 智能体(Agents)1.4 检索增强生成(RAG)1.5 五大核心应用形态2. 安装与环境配置2.1 创建工程2.2 安…

作者头像 李华
网站建设 2026/8/22 16:54:56

Java求职Day51:Spring Boot整合与JVM调优实战

1. Java求职学习路线解析:第51天实战指南作为一名经历过Java求职全过程的开发者,我深知系统化学习的重要性。Day51通常意味着学习者已经掌握了Java基础、面向对象编程和部分框架知识,正处于从理论学习向项目实战过渡的关键阶段。这个时间节点…

作者头像 李华
网站建设 2026/8/22 16:54:38

Arcface-PyTorch 完整实操:5 步搞定人脸识别模型训练与 LFW 评估

Arcface-PyTorch 完整实操:5 步搞定人脸识别模型训练与 LFW 评估 【免费下载链接】arcface-pytorch 这是一个arcface-pytorch的源码,可以用于训练自己的模型。 项目地址: https://gitcode.com/gh_mirrors/arc/arcface-pytorch Arcface-PyTorch 是…

作者头像 李华
网站建设 2026/8/22 16:54:30

OpenAI暂停Astra训练警示:AI前沿训练中的网络风险与安全实践

这类消息出来,最值得关注的不是“暂停”这个动作本身,而是它背后指向的“前沿训练”到底在做什么,以及“网络风险”具体指什么。对于开发者、研究者和关注AI安全的人来说,这更像是一个信号,提醒我们在追求模型能力突破…

作者头像 李华