2024年用 Python 分析韦德职业生涯数据_解析韦德,字节面试pending

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

最后我们把解析到的数据利用 pandas 保存到 excel 中即可。

具体的爬虫代码如下:

from pyquery import PyQuery as pq
from fake_useragent import UserAgent
import requests
import pandas as pd

def parse_html():
    url = “https://www.basketball-reference.com/players/w/wadedw01.html”
    ua = UserAgent()
    headers = {“User-Agent”: ua.random}
    reponse = requests.get(url, headers=headers)
    if reponse.status_code == 200:
        html = reponse.text
        extract_htm(html)

def extract_htm(html):
    doc = pq(html)
    Dwyane_Wade_data = []
    data_items = doc.find(“#div_per_game #per_game tbody tr”).items()
    for itme in data_items:
        season = itme.find(“th[data-stat=‘season’] a”).text()
        age = itme.find(“td[data-stat=‘age’]”).text()
        team = itme.find(“td[data-stat=‘team_id’] a”).text()
        league = itme.find(“td[data-stat=‘lg_id’] a”).text()
        position = itme.find(“td[data-stat=‘pos’]”).text()
        games = itme.find(“td[data-stat=‘g’]”).text()
        games_started = itme.find(“td[data-stat=‘gs’]”).text()
        minutes_played_per_game = itme.find(“td[data-stat=‘mp_per_g’]”).text()
        field_goals_per_game = itme.find(“td[data-stat=‘mp_per_g’]”).text()
        field_goals_attempts_per_game = itme.find(“td[data-stat=‘fga_per_g’]”).text()
        field_goal_percentage = itme.find(“td[data-stat=‘fg_pct’]”).text()
        point_3_field_goal_per_game = itme.find(“td[data-stat=‘fg3_per_g’]”).text()
        point_3_field_goal_percentage = itme.find(“td[data-stat=‘fg3_pct’]”).text()
        point_2_filed_goals_per_game = itme.find(“td[data-stat=‘fg2_per_g’]”).text()
        point_2_filed_goals_attempts_per_game = itme.find(“td[data-stat=‘fg2a_per_g’]”).text()
        fg2_pct = itme.find(“td[data-stat=‘fg2_pct’]”).text()
        efg_pct = itme.find(“td[data-stat=‘efg_pct’]”).text()
        ft_per_g = itme.find(“td[data-stat=‘ft_per_g’]”).text()
        fta_per_g = itme.find(“td[data-stat=‘fta_per_g’]”).text()
        ft_pct = itme.find(“td[data-stat=‘ft_pct’]”).text()
        orb_per_g = itme.find(“td[data-stat=‘orb_per_g’]”).text()
        drb_per_g = itme.find(“td[data-stat=‘drb_per_g’]”).text()
        trb_per_g = itme.find(“td[data-stat=‘trb_per_g’]”).text()
        ast_per_g = itme.find(“td[data-stat=‘ast_per_g’]”).text()
        stl_per_g = itme.find(“td[data-stat=‘stl_per_g’]”).text()
        blk_per_g = itme.find(“td[data-stat=‘blk_per_g’]”).text()
        tov_per_g = itme.find(“td[data-stat=‘tov_per_g’]”).text()
        pf_per_g = itme.find(“td[data-stat=‘pf_per_g’]”).text()
        pts_per_g = itme.find(“td[data-stat=‘pts_per_g’]”).text()
        item_data = {‘season’: season, “age”: age, “team”: team, “league”: league, “position”: position, “games”: games,
                “games_started”: games_started, “minutes_played_per_game”: minutes_played_per_game, “field_goals_per_game”: field_goals_per_game,
                “field_goals_attempts_per_game”: field_goals_attempts_per_game, “field_goal_percentage”: field_goal_percentage,
                “point_3_field_goal_per_game”: point_3_field_goal_per_game, “point_3_field_goal_percentage”: point_3_field_goal_percentage,
                “point_2_filed_goals_per_game”: point_2_filed_goals_per_game, “point_2_filed_goals_attempts_per_game”: point_2_filed_goals_attempts_per_game,
                “fg2_pct”: fg2_pct, “efg_pct”: efg_pct, “ft_per_g”: ft_per_g, “fta_per_g”: fta_per_g, “ft_pct”: ft_pct,
                “orb_per_g”: orb_per_g, “drb_per_g”: drb_per_g, “trb_per_g”: trb_per_g, “ast_per_g”: ast_per_g, “stl_per_g”: stl_per_g,
                “blk_per_g”: blk_per_g, “tov_per_g”: tov_per_g, “pf_per_g”: pf_per_g, “pts_per_g”: pts_per_g}
        print(item_data)
        Dwyane_Wade_data.append(item_data)

data = pd.DataFrame(Dwyane_Wade_data)
    data.to_csv(“Dwyane_Wade_data.csv”, encoding=‘utf_8_sig’)

if __name__ == ‘__main__’:
    parse_html()

最后保存的 excel 表如下:

出场次数和首发数据分析

首先我们对韦德生涯参加的场数和时间进行一个分析。

games:参与的比赛场数(都为82场)

games_start: 先发次数

age:年龄

minutes_played: 平均每场比赛进行的时间

韦德 22 岁就进入 NBA 打比赛,出道就打了 61 场比赛,首发 56 场,往后的几年时间里都是打球队首发人员。一个赛季按 82 场来算,韦德在 2008 - 09 赛季恐怖的达到了 79 场比赛。

平均每场比赛时间都在 30 分钟以上。

从这些数据可以看出韦德是队伍中的主力军,绝对的领袖。

投球命中率

韦德投球命中率平均在 0.47 。

2013-14 赛季达到职业生涯最大命中率:0.55。

由于篇幅的问题其他的数据就暂时不再继续分析,感兴趣的同学可获取相应的源代码进行分析,这里给大家一个单词对照表。

链接: https://pan.baidu.com/s/1PCQ-gEX-aaV5JvgDva_0lQ 提取码: dx73

数据名含义
Rk – Rank排名
G – Games参与的比赛场数(都为82场)
MP – Minutes Played平均每场比赛进行的时间
FG–Field Goals投球命中次数
FGA–Field Goal Attempts投射次数
FG%–Field Goal Percentage投球命中次数
3P–3-Point Field Goals三分球命中次数
3PA–3-Point Field Goal Attempts三分球投射次数
3P%–3-Point Field Goal Percentage三分球命中率
2P–2-Point Field Goals二分球命中次数
2PA–2-point Field Goal Attempts二分球投射次数
2P%–2-Point Field Goal Percentage二分球命中率
FT–Free Throws罚球命中次数
FTA–Free Throw Attempts罚球投射次数
FT%–Free Throw Percentage罚球命中率
ORB–Offensive Rebounds进攻篮板球
DRB–Defensive Rebounds防守篮板球
TRB–Total Rebounds篮板球总数

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个基于阻塞模型的SSL连接读取应用数据的示例代码,使用了select函数来检测是否有可读数据和是否有未处理的SSL数据: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <netdb.h> #include <errno.h> #include <openssl/ssl.h> #include <openssl/err.h> #define SERVER_ADDR "127.0.0.1" #define SERVER_PORT 8080 int main(int argc, char **argv) { int sockfd, ret; struct sockaddr_in server_addr; char buf[1024]; fd_set rfds; struct timeval tv; SSL_CTX *ctx; SSL *ssl; // 创建socket sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket"); return -1; } // 设置服务器地址 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(SERVER_ADDR); server_addr.sin_port = htons(SERVER_PORT); // 连接服务器 ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret < 0) { perror("connect"); return -1; } // 初始化SSL SSL_library_init(); ctx = SSL_CTX_new(SSLv23_client_method()); if (ctx == NULL) { perror("SSL_CTX_new"); return -1; } ssl = SSL_new(ctx); SSL_set_fd(ssl, sockfd); SSL_connect(ssl); // 从服务器读取数据并发送应答 while (1) { FD_ZERO(&rfds); FD_SET(sockfd, &rfds); tv.tv_sec = 5; tv.tv_usec = 0; ret = select(sockfd + 1, &rfds, NULL, NULL, &tv); if (ret < 0) { perror("select"); break; } else if (ret == 0) { printf("timeout\n"); continue; } else { if (FD_ISSET(sockfd, &rfds)) { ret = SSL_read(ssl, buf, sizeof(buf)); if (ret < 0) { perror("SSL_read"); break; } else if (ret == 0) { printf("connection closed by server\n"); break; } else { // 处理收到的数据 printf("received %d bytes: %.*s\n", ret, ret, buf); // 发送应答数据 SSL_write(ssl, "ACK", 3); } } } } // 关闭SSL连接 SSL_shutdown(ssl); SSL_free(ssl); SSL_CTX_free(ctx); // 关闭socket close(sockfd); return 0; } ``` 这个示例代码中使用了select函数来等待可读数据,然后使用SSL_read函数读取SSL数据,如果有未处理的SSL数据,就使用ssl_pending函数来检测。如果读取成功,则对收到的数据进行处理,并使用SSL_write函数发送应答数据。如果发生错误,就退出循环并关闭SSL连接和socket。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值