用 Python 创建 NBA 得分图表

659 查看

在这篇文章中,我研究了如何提取一个篮球运动员的得分图数据,然后使用 matplotlibseaborn 绘制得分图。

获取数据

从 stats.nba.com 获取数据是非常简单的。虽然 NBA 没有提供一个公共的 API,但是实际上我们可以通过使用 requests 库来访问 NBA 用在 stats.nba.com 上的 API。Greg Reda 发布的这篇博客很好地解释了如何访问这个 API(或者为任意 web 应用找到一个 API 来完成上述问题)。

我们将会使用这个 URL 来获取 James Harden 的得分图数据。

上述 URL 发送给我们一个 JSON 文件,该文件包含我们想要的数据。也要注意到 URL 包含了用于访问数据的各种 API 参数。URL 中被设置为 201935 的 PlayerID 参数就是 James Harden 的 PlayerID

现在让我们使用 requests 库来获取我们想要的数据。

利用获取到的得分图数据创建一个 pandas DataFrame

 

上述的得分图数据包含了 2014-15 常规赛期间 James Harden 所有的投篮出手次数。我们想要的数据在 LOC_XLOC_Y 中。这是每次投篮出手位置的坐标值,然后就可以在代表篮球场的一组坐标轴上绘制这些坐标值了。

绘制得分图数据

让我们快速地绘制数据,看看数据是如何分布的。

注意到上述的图表没能很好的表示数据。横坐标轴上的值与实际的相反了。下面只把右边的投篮绘制出来,看看问题出在哪里。