大家好,我是欧K。
近几日,NBA官方公布了NBA商店欧洲官网NBAStore.eu本赛季至今的球衣等周边产品销售情况。湖人前锋勒布朗-詹姆斯在球员球衣销量中名列第一,湖人在球队产品销量中名列第一,这是詹姆斯和湖人连续两年包揽欧洲地区NBA球衣/球队产品销量头名。本期我们使用python分析一下这份榜单中的球员近几年比赛数据,看看有什么新发现。
欧洲地区球衣销量排名前十的球员:
- 勒布朗-詹姆斯
- 凯文-杜兰特
- 斯蒂芬-库里
- 凯里-欧文
- 詹姆斯-哈登
- 卢卡-东契奇
- 扬尼斯-阿德托昆博
- 贾-莫兰特
- 吉米-巴特勒
- 扎克-拉文
1. 网页分析
球员数据网址:http://www.stat-nba.com/playerList.php
这里我们分析榜单前五球员11-12赛季至19-20赛季的数据,感兴趣的小伙伴也可以分析更多球员的数据。
以詹姆斯为例:
提取历年球员的篮板、助攻和得分三项数据,F12查看一下网页源码如下:
这个网页还是比较友好的,数据比较规整,仔细分析可以看出数据在一个table里面,每个tr标签代表一行数据(一个赛季的数据),第14/17/22列分别对应篮板、助攻和得分数据,注意这里列号从0开始,大家在学习的时候要养成列表索引从0开始的习惯。
2. 球员数据采集
詹姆斯数据网址:http://www.stat-nba.com/player/1862.html
def getdata():
url = 'http://www.stat-nba.com/player/1862.html'
ua = UserAgent()
headers = {'User-Agent': ua.random}
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'html.parser')
lsts = soup.find_all('table',attrs={'class':'stat_box'})
trb_sorce = []
ast_sorce = []
pts_sorce = []
for index,lst in enumerate(lsts[1].find_all(attrs={'class':'sort'})[:9]):
# 篮板
trb = lst.find(attrs={'class':'normal trb change_color col14 row{}'.format(index)}).text
# 助攻
ast = lst.find(attrs={'class':'normal ast change_color col17 row{}'.format(index)}).text
# 得分
pts = lst.find(attrs={'class':'normal pts change_color col22 row{}'.format(index)}).text
trb_sorce.append(int(trb))
ast_sorce.append(int(ast))
pts_sorce.append(int(pts))
print(trb_sorce)
print(ast_sorce)
print(pts_sorce)
# [472, 465, 709, 639, 565, 416, 533, 610, 492]
# [636, 454, 747, 646, 514, 511, 488, 551, 387]
# [1544, 1505, 2251, 1954, 1920, 1743, 2089, 2036, 1683]
以上就获取了詹姆斯11-12赛季至19-20赛季的三项数据。
接下来采集分列榜单2-5位的杜兰特,库里,欧文,哈登几个赛季的数据,网址如下:
# 杜兰特
'http://www.stat-nba.com/player/779.html'
# 库里
'http://www.stat-nba.com/player/526.html'
# 欧文
'http://www.stat-nba.com/player/1690.html'
# 哈登
'http://www.stat-nba.com/player/1628.html'
可以看到,各球员数据网址只有球员id不同,构建球员id字典:
dic = {'詹姆斯': 1862, '杜兰特': 779, '库里': 526, '欧文': 1690, '哈登': 1628}
数据采集:
def getdata(number):
url = 'http://www.stat-nba.com/player/{}.html'.format(number)
ua = UserAgent()
headers = {'User-Agent': ua.random}
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'html.parser')
lsts = soup.find_all('table',attrs={'class':'stat_box'})
one_info = []
trb_sorce = []
ast_sorce = []
pts_sorce = []
for index,lst in enumerate(lsts[1].find_all(attrs={'class':'sort'})[:5]):
# 篮板
trb = lst.find(attrs={'class':'normal trb change_color col14 row{}'.format(index)}).text
# 助攻
ast = lst.find(attrs={'class':'normal ast change_color col17 row{}'.format(index)}).text
# 得分
pts = lst.find(attrs={'class':'normal pts change_color col22 row{}'.format(index)}).text
trb_sorce.append(int(trb))
ast_sorce.append(int(ast))
pts_sorce.append(int(pts))
trb_sorce.reverse()
ast_sorce.reverse()
pts_sorce.reverse()
one_info.append(trb_sorce)
one_info.append(ast_sorce)
one_info.append(pts_sorce)
print(trb_sorce)
print(ast_sorce)
print(pts_sorce)
return one_info
采集结果:
# 詹姆斯
[492, 610, 533, 416, 565, 639, 709, 465, 472]
[387, 551, 488, 511, 514, 646, 747, 454, 636]
[1683, 2036, 2089, 1743, 1920, 1954, 2251, 1505, 1544]
# 杜兰特
[533, 527, 640, 598, 178, 589, 513, 464, 497]
[214, 231, 374, 445, 110, 361, 300, 366, 457]
[2161, 1850, 2280, 2593, 686, 2029, 1555, 1792, 2027]
# 库里
[88, 314, 334, 341, 430, 353, 261, 369, 26]
[138, 539, 666, 619, 527, 524, 310, 361, 33]
[383, 1786, 1873, 1900, 2375, 1999, 1346, 1881, 104]
# 欧文
[191, 216, 259, 237, 157, 230, 227, 335, 103]
[275, 350, 433, 389, 250, 418, 306, 464, 128]
[944, 1325, 1478, 1628, 1041, 1816, 1466, 1596, 548]
# 哈登
[252, 379, 344, 459, 501, 659, 389, 518, 387]
[229, 455, 446, 565, 612, 907, 630, 586, 450]
[1044, 2023, 1851, 2217, 2376, 2356, 2191, 2818, 2096]
3. 赛季数据可视化
3.1 赛季数据柱状图:
也可以做成双纵坐标:
3.2 赛季数据时间序列化:
以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、收藏也可以分享到朋友圈让更多人知道哦
更多内容:NBA官方球衣销量榜“詹皇”居首,快看看你的偶像排第几
往期推荐
技巧 | Python 字典用法详解(超全)
技巧 | Python 列表经典使用技巧
技巧 | 20个Pycharm最实用最高效的快捷键(动态展示)
可视化 | Python制作最炫3D可视化地图
可视化 | 动起来的中国大学排名,看看你的母校在哪里
可视化 | Python时间序列化NBA球星赛季数据
微信公众号 “Python当打之年” ,每天都有python编程技巧推送,希望大家可以喜欢