当前位置: 首页 > 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.xdnf.cn/news/1071649.html

相关文章:

  • Python Selenium 滚动到特定元素
  • 10【认识文件系统】
  • 视觉疲劳检测如何优化智能驾驶的险情管理
  • 【RAG面试题】LLMs已经具备了较强能力,存在哪些不足点?
  • 【k近邻】 K-Nearest Neighbors算法原理及流程
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第五节多元函数微分学的几何应用
  • 桌面小屏幕实战课程:DesktopScreen 13 HTTP SERVER
  • [Python]-基础篇1- 从零开始的Python入门指南
  • Python打卡:Day38
  • .NetCore+Vue快速生产框架开发详细方案
  • 深入解析RNN模型:应用、结构与构建实战
  • C++ 第三阶段 并发与异步 - 第二节:异步任务(std::async)
  • 深度拆解Deep Research系统架构与路线图
  • MySQL在C中常用的API接口
  • Linux信号机制:从入门到精通
  • Java项目:基于SSM框架实现的宠物综合服务平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • 【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载)
  • 动手学Python:从零开始构建一个“文字冒险游戏”
  • 2025.6.27总结
  • react-sequence-diagram时序图组件
  • 消息队列的网络模型详解:IO多路复用、Reactor模型、零拷贝
  • 将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【机器学习深度学习】线性回归(基本模型训练流程)
  • 19、RocketMQ核⼼编程模型
  • AI助力基因数据分析:用Python玩转生命密码的秘密
  • 像素之外的智慧:Adobe AI在动态影像与云端协作中的进阶应用
  • LLM驱动开发:正在重塑软件工程的下一场革命
  • Re:从零开始的文件结构(融合线性表来理解 考研向)
  • 自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全