目录

爬取NBA球员数据并进行清洗

画出两个球员的雷达图

创建时间轴组件自动以时间轴播放

代码整理:

总结


爬取NBA球员数据并进行清洗

这里我是从https://nba.hupu.com/players这个网址爬取了库里和詹姆斯的生涯常规赛数据

库里数据的网址:斯蒂芬-库里|Stephen Curry|斯蒂芬-库里视频|图片|数据资料-虎扑NBA (hupu.com)

詹姆斯的网址:勒布朗-詹姆斯|LeBron James|勒布朗-詹姆斯视频|图片|数据资料-虎扑NBA (hupu.com)

解析库里数据的网页复制生涯常规赛数据的Xpath获取该表的每一个单元格数据的值,把爬取到的数据以表格对象的形式保存。

这里我把爬取并保存为表格数据封装为一个函数方便使用。

def getdata(url): data=requests.get(url).text s=etree.HTML(data) d=[[]for j in range(20)] for j in range(20): for i in range (19): a=s.xpath('//*[@id="in_box"]/div/div[1]/table[2]/tbody/tr['+str(j)+']/td['+str(i)+']/text()') b=str(a) c=b[2:-2] d[j].append(c) data1 = pd.DataFrame(d) data1=data1.drop(columns=0) data1.columns=['赛季', '球队', '场次', '首发', '时间', '投篮', '投篮命中率', '三分', '三分命中率', '罚球', '罚球命中率', '场均篮板', '场均助攻', '场均抢断', '场均盖帽', '场均失误', '场均犯规', '场均得分'] data1=data1.drop(index=[0,1]) return data1

运行函数并且把数据保存为excel文件

url='https://nba.hupu.com/players/stephencurry-3311.html' url1='https://nba.hupu.com/players/lebronjames-650.html' getdata(url).to_excel('Stephen Curry.xlsx',index=False) getdata(url1).to_excel('LeBron James.xlsx',index=False)

导入球员数据,这里把球员的投篮命中率转换为小数。

data = pd.read_excel(r"LeBron James.xlsx")
data1 = pd.read_excel(r"Stephen Curry.xlsx")
for i in range(len(data['投篮命中率'])):
        data["投篮命中率"].iloc[i] = float(data["投篮命中率"].iloc[i].strip('%'))/100
for i in range(len(data1['投篮命中率'])):
        data1["投篮命中率"].iloc[i] = float(data1["投篮命中率"].iloc[i].strip('%'))/100

画出两个球员的雷达图

data=data.query(f'赛季=={year}')[['投篮命中率','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist(),在data表中查询出每个赛季的 ‘投篮命中率' , '场均篮板',  '场均助攻' , '场均抢断' , '场均盖帽’ ,并且转换为list类型

画雷达图的代码封装成一个函数rader,参数是年份(赛季),返回值是雷达图对象。

def rader(year):
    import pyecharts.options as opts
    from pyecharts.charts import Radar
    c=(Radar(init_opts=opts.InitOpts(width="1200px", height="800px",bg_color='#FFFAFA'))
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="投篮命中率", max_=0.70),
                opts.RadarIndicatorItem(name="场均篮板", max_=10),
                opts.RadarIndicatorItem(name="场均助攻", max_=10),
                opts.RadarIndicatorItem(name="场均抢断", max_=3),
                opts.RadarIndicatorItem(name="场均盖帽", max_=1.5),
            ],
            splitarea_opt=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        )
        .add(
            series_name="LeBron James",
            data=data.query(f'赛季=={year}')[['投篮命中率','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist(),
            linestyle_opts=opts.LineStyleOpts(color="#2F4F4F"),
            color="#2F4F4F",
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )
        .add(
            series_name="Stephen Curry",
            data=data1.query(f'赛季=={year}')[['投篮命中率','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist(),
            linestyle_opts=opts.LineStyleOpts(color="#800080"),
            color="#800080",
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()
        )
    )
    return c

创建时间轴组件自动以时间轴播放

循环生成2009年到2019年的球员雷达图并且构建为自动播放两名球员的2009年到2019年的常规赛数据雷达图

from pyecharts import options as opts
from pyecharts.charts import Pie, Timeline
tl = Timeline()
tl.add_schema(
        is_auto_play=True, 
        play_interval=1000,#播放时间间隔,毫秒
    )
for year in range(2009,2019+1):
    c = rader(year) # 雷达图
    tl.add(c,f'{year}年')
tl.render_notebook()

代码整理:

import requests
from lxml import etree
import pandas as pd
import numpy as np
import pyecharts.options as opts
from pyecharts.charts import Radar
from pyecharts import options as opts
from pyecharts.charts import Pie, Timelinedef getdata(url):data=requests.get(url).texts=etree.HTML(data)d=[[]for j in range(20)]for j in range(20):for i in range (19):a=s.xpath('//*[@id="in_box"]/div/div[1]/table[2]/tbody/tr['+str(j)+']/td['+str(i)+']/text()')b=str(a)c=b[2:-2]d[j].append(c)data1 = pd.DataFrame(d)data1=data1.drop(columns=0)data1.columns=['赛季', '球队', '场次', '首发', '时间', '投篮', '投篮命中率', '三分', '三分命中率', '罚球', '罚球命中率','场均篮板', '场均助攻', '场均抢断', '场均盖帽', '场均失误', '场均犯规', '场均得分']data1=data1.drop(index=[0,1])return data1getdata(url).to_excel('Stephen Curry.xlsx',index=False)
getdata(url1).to_excel('LeBron James.xlsx',index=False)data = pd.read_excel(r"LeBron James.xlsx")
data1 = pd.read_excel(r"Stephen Curry.xlsx")for i in range(len(data['投篮命中率'])):data["投篮命中率"].iloc[i] = float(data["投篮命中率"].iloc[i].strip('%'))/100for i in range(len(data1['投篮命中率'])):data1["投篮命中率"].iloc[i] = float(data1["投篮命中率"].iloc[i].strip('%'))/100def rader(year):import pyecharts.options as optsfrom pyecharts.charts import Radarc=(Radar(init_opts=opts.InitOpts(width="1200px", height="800px",bg_color='#FFFAFA')).add_schema(schema=[opts.RadarIndicatorItem(name="投篮命中率", max_=0.70),opts.RadarIndicatorItem(name="场均篮板", max_=10),opts.RadarIndicatorItem(name="场均助攻", max_=10),opts.RadarIndicatorItem(name="场均抢断", max_=3),opts.RadarIndicatorItem(name="场均盖帽", max_=1.5),],splitarea_opt=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),).add(series_name="LeBron James",data=data.query(f'赛季=={year}')[['投篮命中率','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist(),linestyle_opts=opts.LineStyleOpts(color="#2F4F4F"),color="#2F4F4F",areastyle_opts = opts.AreaStyleOpts(opacity=0.2)).add(series_name="Stephen Curry",data=data1.query(f'赛季=={year}')[['投篮命中率','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist(),linestyle_opts=opts.LineStyleOpts(color="#800080"),color="#800080",areastyle_opts = opts.AreaStyleOpts(opacity=0.2)).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()))return ctl = Timeline()
tl.add_schema(is_auto_play=True, play_interval=1000,#播放时间间隔,毫秒)
for year in range(2009,2019+1):c = rader(year) # 雷达图tl.add(c,f'{year}年')
tl.render_notebook()   

总结

在做项目中,我感受到了很多,不止专业知识的提升、扎实,动手的能力也增强,还有自身也收获到了许多,感觉项目其实没有想象中的那么不可能,我还能回想起开始做项目的时候,感觉自己就是什么也不会,有一种无从下手的错觉。当我真正的开始去写,发现没有做不到,只有不想做。项目虽然看着简单,去做的时候就会发现其实不简单,处理其中的逻辑更是要仔细。
做项目有时候还要熬夜,但我感觉挺开心的,每次解决完成或者解决一个bug的时候,真的觉得很满足,虽然在其中有不想做下去的感觉,但自我调节后又能活力满满。当一个项目完成的时候,虽然简单但是真的觉得自己很厉害。

爬取NBA球员数据画出球员的雷达图相关推荐

  1. 如何爬取NBA赛事数据?

    不知道有没有小伙伴最近在看 NBA 总决赛的呢? 小编我也是一位篮球迷,可是自从上了大学之后却很少碰球了,所谓沉迷代码之中无法自拔,但是一颗热爱篮球的心从未被磨灭过.小编时刻都有关注着总决赛的数据状况 ...

  2. 数据分析---2.数据分析----爬取NBA中国官方网站的球员数据,并分析

    纸上得来终觉浅, 绝知此事要躬行. #夏天切记贪凉,光膀子对着空调吹,搞了个肩周炎,耽误事 前一篇几篇都是关于数据爬取的文章.有兴趣的可以去看看 男篮世锦赛开始了,看着中国队的苦苦挣扎为了奥运会入场券 ...

  3. python多进程爬取上海房价并画出热力图分析

    一.分析目的 1.探索上海市的房价区域分布 2.看看购房者都喜欢购买哪里的房子 二.数据采集 采集我爱我家上海区域的一万两千个小区的数据,采集的字段有小区.位置.最近30条成交套数.在售.在租.成交均 ...

  4. Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)

    目录: 1. 准备工作 2. 开始绘图 2.1. 简单的例子 2.2. px.treemap常用参数介绍 2.3. color_continuous_scale参数介绍 2.4. 大A股市树状热力图来 ...

  5. 十行代码爬取NBA球员数据并保存本地

    今天我们要爬取的网站是 虎扑球员排行榜 我们使用pandas中的read_html函数读取虎扑体育网页中的球员数据表 废话不多说,直接上代码 import pandas as pd import nu ...

  6. 利用python爬取空气质量数据,并用Matplotlib模块画出分析图

    爬取到的数据 分析图: 源代码: import csv import random import time import pandas as pd import requests from bs4 i ...

  7. python爬取NBA湖人队球星的数据,并且用Excel保存

    前言 本文章教你如何爬取NBA湖人球队的球员信息 一.使用步骤 1.1引入库 import xlwt import requests import re from bs4 import Beautif ...

  8. java爬虫抓取nba_利用Python爬虫爬取NBA数据功能实例分享

    Python实现爬虫爬取NBA数据功能示例 本文实例讲述了Python实现爬虫爬取NBA数据功能.分享给大家供大家参考,具体如下: 爬取的网站为:stat-nba.com,这里爬取的是NBA2016- ...

  9. python爬取率_Python实现爬虫爬取NBA数据功能示例

    本文实例讲述了Python实现爬虫爬取NBA数据功能.分享给大家供大家参考,具体如下: 爬取的网站为:stat-nba.com,这里爬取的是NBA2016-2017赛季常规赛至2017年1月7日的数据 ...

最新文章

  1. PyTorch 笔记(04)— Tensor 属性方法(获取元素个数numel/neleme、查看形状size()/shape、增减维度squeeze()/unsqueeze()、resize形状)
  2. 《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
  3. docker 网络 实现
  4. JavaScript ES2015
  5. oracle 取英文排序,Oracle中中文、数字,英文混杂形式的字段进行排序的方法
  6. JS ES6中的箭头函数(Arrow Functions)使用
  7. 对计算机财务管理的理解,计算机财务管理
  8. php如何将mysql数据库中的admin字段赋值给session_php实现将Session写入数据库
  9. ios 键盘的一些问题
  10. 微信开发--开发模式简单配置
  11. Q76:仿射变换(Affine Transformation)
  12. java网络通信技术示例:简单的聊天小程序
  13. 根据IP获取对应国家
  14. java jar 是什么_java中的jar文件是什么
  15. 凸优化理论基础3——凸集和凸锥重要例子
  16. 为什么阿里巴巴强制不要在 foreach 里执行删除操作
  17. 为什么北半球的旋涡都是逆时针的
  18. 寒假学习打卡第一篇文章-----numpy的学习
  19. 2020年全球权威机器人评选RBR50放榜:中国仅一家公司入选,大疆落榜
  20. C# SolidWorks 二次开发 API-删除工程图中的图片与插入二维码

热门文章

  1. java 科里化_关于柯里化(curry)
  2. AD域用户密码重置_AD域自助管理之道
  3. JS中的遍历、点击、排他
  4. 解决Unity3D中“There is no 'Renderer' attached to the game object”问题
  5. PHP获取上一篇文章和下一篇文章数据
  6. RGB、YUV、HSV颜色空间模型
  7. 如何删除oracle表的主键约束,Oracle 删除主键
  8. oracle create unique index,ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
  9. java基础学习-6
  10. inieditor操作conf、ini文件新思路