用 Python 自动获取NBA现役球员的职业生涯数据曲线

简介: 用 Python 自动获取NBA现役球员的职业生涯数据曲线

前言

作为一个看了多年篮球的 NBA球迷,一直在想用 python 和篮球一起来写点什么

加上最近在学习 pyecharts ,所以就有了下面这篇文章:

根据输入的球队和球员名字,自动生成该球员职业生涯数据曲线图!

✨ 效果

640.gif

火箭哈登

640.gif

勇士格林

我只挑了两个球员,感兴趣的朋友可以在后台回复 “nba” 获取源码。

输入自己喜爱的球队和球员名称即可

通过这些曲线图,球星的职业生涯的数据一目了然:

不得不说登哥每年数据都在上升

而勇士的格林自从拿了大合同,数据全面下滑,哈哈

怎么做的?

1.首先需要了解 pyecharts 的折线图用法

2.基本的爬虫

因为坚持原创,精力也有限,所以程序暂时只支持湖人,火箭,勇士这三支比较热门的球队

如果对其他球队也有需求,可以联系我添加进去。

Line:折线/面积图

折线图是用折线将各个数据点标志连接起来的图表,用于展现数据的变化趋势。

折线/面积图对应的模块是 Line

可以配置折线的形式,颜色,标注最大值,最小值等

具体请看下面的 add_yaxis 的详细说明

Line 模块对应的函数使用说明:

1def add_yaxis(
 2    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
 3    series_name: str,
 4
 5    # 系列数据
 6    y_axis: Sequence,
 7
 8    # 是否选中图例
 9    is_selected: bool = True,
10
11    # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
12    xaxis_index: Optional[Numeric] = None,
13
14    # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
15    yaxis_index: Optional[Numeric] = None,
16
17    # 系列 label 颜色
18    color: Optional[str] = None,
19
20    # 是否显示 symbol, 如果 false 则只有在 tooltip hover 的时候显示。
21    is_symbol_show: bool = True,
22
23    # 标记的图形。
24    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 
25    # 'diamond', 'pin', 'arrow', 'none'
26    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。
27    symbol: Optional[str] = None,
28
29    # 标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,
30    # 例如 [20, 10] 表示标记宽为 20,高为 10。
31    symbol_size: Union[Numeric, List] = 4,
32
33    # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
34    stack: Optional[str] = None,
35
36    # 是否平滑曲线
37    is_smooth: bool = False,
38
39    # 是否显示成阶梯图
40    is_step: bool = False,
41
42    # 标记点配置项,参考 `series_options.MarkPointOpts`
43    markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
44
45    # 标记线配置项,参考 `series_options.MarkLineOpts`
46    markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
47
48    # 提示框组件配置项,参考 `series_options.TooltipOpts`
49    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
50
51    # 标签配置项,参考 `series_options.LabelOpts`
52    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
53
54    # 线样式配置项,参考 `series_options.LineStyleOpts`
55    linestyle_opts: Union[opts.LineStyleOpts, dict] = opts.LineStyleOpts(),
56
57    # 填充区域配置项,参考 `series_options.AreaStyleOpts`
58    areastyle_opts: Union[opts.AreaStyleOpts, dict] = opts.AreaStyleOpts(),
59
60    # 图元样式配置项,参考 `series_options.ItemStyleOpts`
61    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
62)
63

示例代码:

1# coding: utf-8
 2from pyecharts import options as opts
 3from example.commons import Faker
 4from pyecharts.charts import Line
 5
 6
 7def line_base() -> Line:
 8    c = (
 9        Line()
10        .add_xaxis(Faker.choose())
11        .add_yaxis("商家A", Faker.values(), color="blue", is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]))
12        .add_yaxis("商家B", Faker.values(), is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
13        .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
14    )
15    return c
16
17
18if __name__ == "__main__":
19    line_base().render("line.html")
20    pass

运行之后在本地目录,会生成一个 line.html 的文件

效果图如下:

折线图

程序用法

在输入球队和球员的时候,请使用空格分开

另因为每个人对 NBA 球员的叫法可能会不一样,所以做了一下统一,输入的时候请注意!

比如, 以下火箭球员的名称集合

1rocket_mapping = {
 2    "保罗": "克里斯-保罗",
 3    "哈登": "詹姆斯-哈登",
 4    "卡佩拉": "卡佩拉克林特-卡佩拉",
 5    "戈登": "埃里克-戈登",
 6    "香珀特": "伊曼-香珀特",
 7    "塔克": "PJ-塔克",
 8    "内内": "内内",
 9    "格林": "杰拉德-格林",
10    "法里埃德": "肯尼思-法里德",
11    "小李": "奥斯汀-里弗斯",
12    "豪斯": "丹纽尔-豪斯",
13    "克拉克": "加里-克拉克",
14    "杜瓦尔": "特雷旺-杜瓦尔",
15}

后台回复 “nba” 获取该程序



相关文章
|
15天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
13天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
26天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
41 3
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
28 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
27天前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
70 0
|
2月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
69 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
28天前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析
|
1月前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
34 0