Py学习  »  Python

从爬虫到深度学习,该升级这5个过时的Python库了

AI科技论谈 • 1 年前 • 358 次点击  

摒弃过时的Python库,选择更适合需求的工具。

长按关注《AI科技论谈》

Python库之丰富,令人眼花缭乱。然而,并非所有热门库都能名副其实。部分因社交媒体炒作而被过度追捧,部分因设计理念陈旧而未能与时俱进。本文带大家分析那些被高估的Python库,并推荐更合适的选择方案。

1 Requests

Requests 库本身其实很不错,直观易用,API 设计出色,堪称 Python HTTP 库的代表。

但对于基础简单的 GET/POST 请求而言,Requests 库就过于复杂化了;尤其在需要异步处理的场景下其效率不高。

为何 Requests 被高估:

  • 同步调用:Requests 的同步特性导致效率低下,每次调用都必须等待上一次调用完成,不适合 I/O 密集型任务。
  • 资源消耗:虽然Requests有许多便利的功能,但是以牺牲速度和内存为代价,不合适大型系统。

推荐替代方案:httpx

httpx 支持异步操作,适合处理大量并发请求,能显著提升性能。

import httpx

async def fetch_data(url):
    async with httpx.AsyncClient() as client:
        return (await client.get(url)).json()

# 异步请求示例
data = fetch_data("https://api.example.com/data")

提示:

异步请求在数据抓取和网络爬虫中能大幅提高效率。

2 BeautifulSoup

BeautifulSoup 曾是 HTML 解析的主流选择,但随着时间的推移,它在性能上已不如往日。

对大型或复杂的文档来说,BeautifulSoup 的处理速度不够快,且未能与时俱进地支持 Python 的异步特性,不适应现代需求。

为何 BeautifulSoup 被高估:

  • 速度慢:处理大型文档效率低下。
  • 不支持异步:不支持异步操作,不利于动态网站的数据抓取。

推荐替代方案:selectolax

selectolax 是较为低调但性能优秀的库,利用 libxml2 提升其解析速度并减少内存使用。是处理 HTML 的新选择。

from selectolax.parser import HTMLParser
html_content = "

Test

"

tree = HTMLParser(html_content)
print(tree.css("p")[0].text())  # 输出:Test

使用 selectolax,你可以在保持解析能力的同时,大幅提升速度,适合数据密集型任务,比如网络爬虫任务。

3 Pandas并非万能钥匙

Pandas 在处理中等规模数据集时确实表现出色,但将其视为解决所有数据问题的万能工具并不合适。

在处理大型数据集上,Pandas的内存消耗和性能问题非常明显。

为何 Pandas被高估:

  • 内存消耗大:Pandas主要在内存中操作,对大型数据集的处理会严重影响性能。
  • 可扩展性有限:Pandas并不擅长处理大数据,扩展性不足。

推荐替代方案:Polars

Polars是基于Rust和Apache Arrow的超快DataFrame库,优化了内存效率和多线程性能,适合处理大规模数据而不会过度消耗CPU资源。

import polars as pl
df = pl.read_csv("big_data.csv")
filtered_df = df.filter(pl.col("value") > 50)
print(filtered_df)

选择Polars的原因在于,它能够高效处理那些会让Pandas力不从心的大数据集,且操作速度远超Pandas。Polars还支持延迟评估,仅计算实际需要的数据,进一步提升效率。

4 Matplotlib

Matplotlib是Python数据可视化的经典库,但使用起来显得有些笨拙,且其语法较为冗长。如果不是需要高度定制的可视化图表,建议考虑语法更简洁的方案。

为何Matplotlib被高估:

  • 语法笨拙:绘制简单图表需要大量代码。
  • 风格过时:默认风格不够现代,不吸引人,也不够易读。

推荐替代方案:Plotly

当需要清晰的可视化和交互性,且不想写太多代码时,Plotly是个很好的选择。特别适合快速分享和网络演示。

import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()

Plotly提供默认视觉效果出色的交互式图表,代码简洁,自带工具提示和缩放功能。

5 Scikit-Learn

虽然Scikit-Learn在快速原型设计和传统机器学习领域表现出色,但在深度学习领域,它并不具备与专业深度学习库相匹敌的能力。

Scikit-Learn不适合深度学习的原因:

  • 缺乏GPU支持:Scikit-Learn不支持GPU,而GPU加速是深度学习的关键。
  • 非神经网络优化:Scikit-Learn未针对神经网络优化,效果不佳。

推荐替代方案:PyTorch

PyTorch是支持GPU的通用深度学习框架,非常适合深度学习项目,且易于上手。

import torch
import torch.nn as nn
import torch.optim as optim

# 定义模型
model = nn.Sequential(
    nn.Linear(105),
    nn.ReLU(),
    nn.Linear(52)
)

# 定义优化器和损失函数
optimizer = optim.SGD(model.parameters(), lr=0.01)
loss_fn = nn.CrossEntropyLoss()

选择PyTorch,可以充分利用GPU,提高模型训练效率。

总结

“工欲善其事,必先利其器。”选择Python库时,不必盲目追求热门,而应寻找更专业、高效的工具。明智审慎的抉择能够帮你减少很多麻烦,同时为设备节约宝贵的计算资源。

推荐书单

《利用Python进行数据分析》(原书第3版)

本书是Python数据分析经典畅销书的升级版,由Python pandas项目的创始人Wes McKinney撰写。自2012年第1版出版以来,迅速成为该领域的权威指南,并且为了与时俱进,作者也在对本书内容进行持续更新,以摒弃一些过时、不兼容的工具,添加新的内容,用以介绍一些新特性、新工具及方法。

本书第3版针对Python 3.10和pandas 1.4进行了更新,并通过实操讲解和实际案例向读者展示了如何高效解决一系列数据分析问题。读者将在阅读过程中学习新版本的pandas、NumPy、IPython和Jupyter。

购买链接:https://item.jd.com/14260998.html

精彩回顾

5个杀手级PyCharm插件(AI和数据)

Crawl4AI,智能体网络自动采集利器

5个超级容易上手的AI项目(含代码)

手把手教你用Ollama和Llama3打造Spring Boot AI应用

Llama 3.1 405B,教你白嫖使用最强开源大模型

手把手教你安装最强文生图工具ComfyUI

长按关注《AI科技论谈》

长按访问【IT今日热榜】,发现每日技术热点

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/175876