首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >盘点我常用的8个Python库,除了pandas还有这些神器

盘点我常用的8个Python库,除了pandas还有这些神器

作者头像
用户11081884
发布2026-07-20 20:28:51
发布2026-07-20 20:28:51
500
举报

作为Python开发经验的老手经常被问到:“除了pandas,你还会用哪些Python库?”今天就来分享日常工作中最依赖的8个Python库,它们解决了各种实际问题,让工作效率翻倍。


1. polars:pandas的强力替代品

当数据量超过千万级,pandas开始力不从心时,polars就是我的救星。这个用Rust编写的库在性能上完胜pandas,特别是在处理大数据时。

为什么选择polars:

  • 性能碾压:同样的数据操作,速度通常是pandas的5-10倍
  • 内存优化:采用Apache Arrow格式,内存占用减少50%以上
  • 惰性计算:支持查询优化,避免不必要的计算
代码语言:javascript
复制
# 对比示例:读取1GB的CSV文件
importpandasaspd
importpolarsaspl
importtime

# pandas方式(耗时约45秒)
start = time.time()
df_pd = pd.read_csv('large_data.csv')
print(f"pandas耗时: {time.time()-start:.1f}秒")

# polars方式(耗时约8秒)
start = time.time()
df_pl = pl.read_csv('large_data.csv')
print(f"polars耗时: {time.time()-start:.1f}秒")

适用场景:大数据处理、ETL管道、实时数据分析


2. loguru:告别复杂的logging配置

Python自带的logging模块配置繁琐,loguru让我彻底摆脱了这种痛苦。一行代码就能开始记录日志,支持多种输出格式和级别。

核心优势:

  • 零配置from loguru import logger就能用
  • 彩色输出:控制台日志自动着色,调试更直观
  • 文件轮转:自动管理日志文件,避免磁盘爆满
代码语言:javascript
复制
fromloguruimportlogger

# 基本使用
logger.info("程序启动")
logger.warning("内存使用率超过80%")
logger.error("数据库连接失败")

# 输出到文件(自动轮转)
logger.add("app_{time}.log", rotation="500 MB")  # 每500MB轮转
logger.add("error.log", level="ERROR")  # 只记录错误日志

适用场景:所有需要日志记录的项目,特别是快速原型开发


3. typer:让CLI开发变得优雅

以前用argparse写命令行工具总是很痛苦,直到发现了typer。它基于Python的类型提示,让CLI开发变得简单而优雅。

为什么喜欢typer:

  • 类型驱动:利用Python的类型提示自动生成CLI
  • 自动帮助:自动生成--help文档
  • 子命令支持:轻松构建复杂的命令行工具
代码语言:javascript
复制
importtyper

app = typer.Typer()

@app.command()
defgreet(name: str, formal: bool = False):
    """向某人打招呼"""
    ifformal:
        typer.echo(f"尊敬的{name},您好!")
    else:
        typer.echo(f"嘿,{name}!")

@app.command()
defcalculate(
    numbers: list[float],
    operation: str = typer.Option("sum", help="操作类型: sum, avg, max")
):
    """计算一组数字"""
    ifoperation == "sum":
        result = sum(numbers)
    elifoperation == "avg":
        result = sum(numbers) /len(numbers)
    typer.echo(f"结果: {result}")

if__name__ == "__main__":
    app()

使用方式:

代码语言:javascript
复制
# 自动生成的CLI
python my_cli.py greet Alice --formal
python my_cli.py calculate 1234--operation avg

适用场景:开发命令行工具、自动化脚本、DevOps工具


4. rich:终端美化神器

在终端中显示漂亮的表格、进度条、语法高亮代码,rich让这一切变得简单。我经常用它来构建更友好的命令行界面。

常用功能:

  • 表格显示:在终端中展示美观的表格
  • 进度条:长时间任务的可视化进度
  • Markdown渲染:在终端中显示格式化的Markdown
代码语言:javascript
复制
fromrich.consoleimportConsole
fromrich.tableimportTable
fromrich.progressimporttrack
importtime

console = Console()

# 创建漂亮的表格
table = Table(title="用户统计")
table.add_column("用户名", style="cyan")
table.add_column("注册时间", style="green")
table.add_column("活跃度", style="yellow")

table.add_row("张三", "2023-01-15", "高")
table.add_row("李四", "2023-03-22", "中")
console.print(table)

# 进度条示例
foriintrack(range(100), description="处理中..."):
    time.sleep(0.05)  # 模拟耗时操作

适用场景:命令行工具美化、数据分析结果展示、调试信息格式化


5. pydantic:数据验证和设置管理

处理API请求、配置文件解析时,数据验证总是个头疼的问题。pydantic基于Python类型提示,提供了强大的数据验证功能。

核心价值:

  • 类型安全:运行时类型检查,避免很多bug
  • 自动转换:字符串自动转换为datetime等类型
  • 配置管理:完美处理环境变量和配置文件
代码语言:javascript
复制
frompydanticimportBaseModel, validator
fromdatetimeimportdatetime
fromtypingimportList

classUser(BaseModel):
    id: int
    name: str
    email: str
    created_at: datetime
    tags: List[str] = []
    
    @validator('email')
    defemail_must_contain_at(cls, v):
        if'@'notinv:
            raiseValueError('邮箱格式不正确')
        returnv

# 使用示例
user_data = {
    "id": 1,
    "name": "张三",
    "email": "zhangsan@example.com",
    "created_at": "2023-10-01 09:30:00"
}

user = User(**user_data)  # 自动验证和转换
print(user.email)  # zhangsan@example.com

适用场景:API请求验证、配置文件解析、数据模型定义


6. fastapi:现代Web API开发

虽然Django和Flask很流行,但当我需要构建高性能的API时,fastapi是我的首选。它基于Starlette和Pydantic,性能卓越且开发体验极佳。

选择fastapi的理由:

  • 自动文档:自动生成OpenAPI文档和交互式API界面
  • 高性能:基于Starlette,性能接近Node.js和Go
  • 类型安全:与Pydantic完美集成
代码语言:javascript
复制
fromfastapiimportFastAPI
frompydanticimportBaseModel

app = FastAPI()

classItem(BaseModel):
    name: str
    price: float
    is_offer: bool = False

@app.get("/")
defread_root():
    return {"Hello": "World"}

@app.post("/items/")
defcreate_item(item: Item):
    # 自动验证请求体
    return {"item_name": item.name, "item_price": item.price}

# 运行后访问 http://localhost:8000/docs 查看自动生成的API文档

适用场景:微服务开发、REST API、实时API


7. joblib:简单的并行计算

当需要并行处理数据时,joblib提供了最简单的方式。特别是它的Paralleldelayed组合,让我轻松实现并行计算。

使用场景:

  • CPU密集型任务:图像处理、数值计算
  • 批量处理:同时处理多个文件或数据块
  • 参数调优:并行测试不同的参数组合
代码语言:javascript
复制
fromjoblibimportParallel, delayed
importtime

defprocess_item(item_id):
    """模拟耗时操作"""
    time.sleep(1)
    returnf"处理完成: {item_id}"

# 串行处理(耗时约10秒)
results_serial = [process_item(i) foriinrange(10)]

# 并行处理(4核CPU,耗时约3秒)
results_parallel = Parallel(n_jobs=4)(
    delayed(process_item)(i) foriinrange(10)
)

适用场景:数据预处理、模型训练、批量文件处理


8. pendulum:更人性化的时间处理

Python的datetime模块功能有限,pendulum提供了更人性化的时间处理方式。我特别喜欢它的时区支持和人性化时间差显示。

为什么选择pendulum:

  • 时区处理:内置时区支持,避免时区混乱
  • 人性化显示:“2小时前”、“3天后”等自然语言显示
  • 丰富的功能:支持时间范围、时间差等高级操作
代码语言:javascript
复制
importpendulum

# 创建时间对象
now = pendulum.now("Asia/Shanghai")
print(now)  # 2023-10-01T14:30:00+08:00

# 人性化显示
two_hours_ago = now.subtract(hours=2)
print(two_hours_ago.diff_for_humans())  # 2小时前

# 时间范围
start = pendulum.datetime(2023, 1, 1)
end = pendulum.datetime(2023, 12, 31)
period = pendulum.period(start, end)

fordayinperiod.range('days'):
    ifday.day_of_week == pendulum.SATURDAY:
        print(f"周六: {day.to_date_string()}")

适用场景:日志时间处理、日程安排、国际化应用


如何选择适合自己的库?
  1. 看维护状态:优先选择最近6个月有更新的库
  2. 看社区规模:GitHub star数、issue响应速度
  3. 看文档质量:文档是否完整,示例是否丰富
  4. 看兼容性:是否支持你的Python版本和操作系统
  5. 看许可证:商业项目要注意许可证限制
工作流示例

在实际项目中,这些库经常组合使用:

代码语言:javascript
复制
# 一个完整的数据处理流程示例
importpolarsaspl
fromloguruimportlogger
fromjoblibimportParallel, delayed
importpendulum

logger.add("data_pipeline.log")

defprocess_chunk(chunk_path):
    """处理数据块"""
    logger.info(f"开始处理: {chunk_path}")
    start_time = pendulum.now()
    
    # 使用polars读取和处理数据
    df = pl.read_parquet(chunk_path)
    processed = df.group_by("category").agg([
        pl.col("value").mean().alias("avg_value"),
        pl.col("value").count().alias("count")
    ])
    
    elapsed = pendulum.now() -start_time
    logger.success(f"处理完成: {chunk_path}, 耗时: {elapsed.in_words()}")
    returnprocessed

# 并行处理多个文件
chunk_files = ["data/chunk1.parquet", "data/chunk2.parquet", "data/chunk3.parquet"]
results = Parallel(n_jobs=3)(delayed(process_chunk)(f) forfinchunk_files)

# 合并结果
final_result = pl.concat(results)
logger.info(f"总共处理了 {final_result.height} 行数据")

对于这些库,建议:

  1. 先掌握一个:从你最需要的库开始,比如loguru或rich
  2. 实践项目:在小项目中实际使用,遇到问题再查文档
  3. 阅读源码:对于特别喜欢的库,可以阅读其源码学习设计思想
  4. 参与社区:在GitHub上提issue或PR,与开发者交流

这些库从数据处理到Web开发,从命令行工具到系统监控。它们不仅仅是工具,更是提高开发效率的利器。

Python生态的魅力就在于有这么多优秀的开源项目。选择适合自己的工具,能让编程更轻松、更高效。

希望这个清单对你有所帮助!如果你也有私藏的Python神器,欢迎在评论区分享。

“无他,惟手熟尔”!有需要的用起来!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. polars:pandas的强力替代品
  • 2. loguru:告别复杂的logging配置
  • 3. typer:让CLI开发变得优雅
  • 4. rich:终端美化神器
  • 5. pydantic:数据验证和设置管理
  • 6. fastapi:现代Web API开发
  • 7. joblib:简单的并行计算
  • 8. pendulum:更人性化的时间处理
  • 如何选择适合自己的库?
  • 工作流示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档