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

相关文章:

  • np.concatenate
  • 【C/C++】C++26新特性前瞻:全面解析未来编程
  • ​​Oracle表空间全景指南:从扩容监控到碎片回收的终极实践​
  • 车载诊断架构--- 车载诊断中的引导式诊断
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • 第六章 STM32内存管理
  • 学习接口自动化框架pytest有哪些好处?
  • 小程序 API 开发手册:从入门到高级应用一网打尽
  • C++学习之STL学习:vector的模拟实现
  • Java多线程与JUC
  • window显示驱动开发—DirectX 图形内核子系统(三)
  • RocketMQ 消息长轮询
  • 集群聊天服务器----CMake的使用
  • ServletConfig ServletContext
  • git add 报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 42
  • 【Elasticsearch】Linux环境下安装Elasticsearch
  • spring ai入门实例
  • LangChain4j(20)——调用百度地图MCP服务
  • Python Async 编程快速入门 | 超简明异步协程指南
  • java代码规范
  • 自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • 鸿蒙HarmonyOS 5小游戏实践:记忆翻牌(附:源代码)
  • DHT11 STM32 HAL驱动库 整数
  • .NetCore+Vue快速生产框架开发详细方案
  • Chrome浏览器访问https提示“您的连接不是私密连接”问题解决方案
  • 已对接Shopee、Lazada、亚马逊等知名海外电商平台!商派DigiOS-OMS业务中台助力品牌扩展全球业务
  • 《Opto-Electronic Advances》热点论文速览(2025)
  • linux中python虚拟环境和版本的选择
  • 【Linux手册】进程终止:进程退出和信号的响应机制