当前位置: 首页 > news >正文

利用python实现NBA数据可视化

大家好,今天我们利用python爬取NBA球星每年的比赛数据并进行可视化展示。主要用到三个模块:xpath、matplotlib。其中xpth负责爬取网站上的信息。Matplotlib是Python开发人员常用的Python绘图库,可以用来绘制各种2D图形,具有绘图质量高,使用简单的特点,支持Latex公式插入,很多时候只需一行或几行代码即可完绘图。

首先我们打开网站可以看到每年的得分数据。

截屏2024-06-01 下午2.03.26

右击检查,找到得分的xpath路径://*[@id="in_box"]/div/div[1]/table[2]/tbody/tr[2]/td[18]

截屏2024-06-01 下午1.51.23

同样方式我们获取到年份的xpath路径://*[@id="in_box"]/div/div[1]/table[2]/tbody/tr[2]/td[1]

将得到的数据分别存入列表以x轴y轴的数据带入到matplotlib中,最后形成年度得分折线图展示出来。

具体代码如下:

# -*- coding:utf-8 -*-
import requests
from lxml import etree
import pandas as pd
import matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesdef getChineseFont():return FontProperties(fname='/System/Library/Fonts/PingFang.ttc')url='https://nba.hupu.com/players/jamesharden-3306.html'
headers={
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
,'referer' : url
}response=requests.get(url=url,headers=headers)
#print(response.text)
html=etree.HTML(response.text)
list1=html.xpath('//*[@id="in_box"]/div/div[1]/table[2]/tbody/tr/td[1]/text()')
listx=list1[1:]
x = list(map(int, listx)) #转数字
list2=html.xpath('//*[@id="in_box"]/div/div[1]/table[2]/tbody/tr/td[18]/text()')
listy=list2[1:]
y=list(map(float, listy)) #转数字
print(listx)
print(listy)
plt.plot(x, y)
plt.xlabel("年份",fontproperties=getChineseFont())
plt.ylabel("得分",fontproperties=getChineseFont())
plt.title("哈登年度得分",fontproperties=getChineseFont())
# 在折线图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式
for x1, y1 in zip(x, y):plt.text(x1, y1 + 1, str(y1), ha='center', va='bottom', fontsize=15, rotation=0)
plt.show()

最终运行的结果如下:

截屏2024-06-01 下午1.58.36

感谢大家的支持,希望得到点赞与关注,我们下期见。

http://www.lqws.cn/news/551269.html

相关文章:

  • 数学术语之源——(矩阵或行列式的)秩数(rank)
  • UE--Slate 焦点、捕获,输入处理与玩家控制器的关系
  • 基于STM32设计的扫地机器人
  • 从代码学习深度学习 - 自然语言推断与数据集 PyTorch版
  • 什么是 A/B 测试?
  • 机器学习4——参数估计之贝叶斯估计
  • clion与keil分别配置项目宏定义
  • Java-IO流(二)
  • 快慢指针深度解析
  • Object
  • MYSQL-InnoDB逻辑存储结构 详解
  • 机器学习5——非参数估计
  • 数据库外连接详解:方式、差异与关键注意事项
  • openGL学习(基本窗口)
  • 深入学习MySQL的页分裂(Page Split)
  • 策略模式与工厂模式的黄金组合:从设计到实战
  • yaml 导致的原型污染 -- GPN CTF 2025 Secure by Default
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第五节多元函数微分学的几何应用
  • Redis 单线程的“天花板”与集群的必要性
  • 三、java项目自动部署流水线搭建
  • oracle内存参数调整
  • 【C++】string的模拟实现
  • 关于css的height:100%
  • 助力高考,利用python获取本专科专业选考科目要求
  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • Ollama+Gemma3模型+Open WebUI,无公网IP如何内网穿透远程访问?
  • 【Linux 设备模型框架 kobject 和 kset】
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • 【k近邻】 K-Nearest Neighbors算法原理及流程