1秒处理1亿行这8个Python库让Excel彻底退场
作者:互联网
2026-03-20
面对Excel在数据处理中的种种局限,如格式混乱和大文件卡顿等问题,Python生态提供了更高效的解决方案。
所以,我整理了一套 Python 工具栈。它们不搞花哨的噱头,只解决具体的问题。
DuckDB:轻松搞定亿级数据
如果在单机上处理几百兆到几 GB 的数据,Pandas 的内存占用简直让我抓狂。DuckDB 的出现填补了 SQLite 和分布式数据库之间的空白。它是一个进程内的 OLAP 数据库,最大的特点是零配置和向量化计算。
DuckDB 可以直接对 CSV、Parquet 或 JSON 文件执行 SQL 查询,无需将数据全部加载到内存。
import duckdb
# 直接对 Parquet 文件执行 SQL,无需建库建表
# 这里的 query 类似于 Pandas 的 dataframe,但计算是在 DuckDB 引擎中完成的
result = duckdb.sql("""
SELECT
department,
AVG(salary) as avg_salary
FROM 'employees.parquet'
WHERE join_date > '2022-01-01'
GROUP BY department
ORDER BY avg_salary DESC
""").df()
print(result)
Ibis:写一次代码,到处运行
Ibis 和 DuckDB 是目前数据工程领域的黄金搭档。
Ibis 将业务逻辑与执行引擎分离,这也是它的核心。可以使用类似 Pandas 的 Python API 来编写查询逻辑,后端可以无缝切换为 DuckDB、ClickHouse、BigQuery 甚至是 PySpark。
使用 Ibis 驱动 DuckDB 时,既享受了 Python 代码的优雅和类型检查,又利用了 DuckDB 极速的执行引擎。一举两得,棒棒哒。
import ibis
# 连接到 DuckDB 后端(也可以是 SQLite, Postgres 等)
con = ibis.duckdb.connect()
# 惰性读取数据,此时并未真正加载
table = con.read_csv("sales_data.csv")
# 构建查询表达式
expr = (
table.filter(table["status"] == "completed")
.group_by("region")
.aggregate(total_revenue=table["amount"].sum())
.order_by(ibis.desc("total_revenue"))
)
# 只有调用 execute() 时才会生成 SQL 并执行
print(expr.execute())
Polars:多线程时代的 DataFrame
Pandas 是单线程的,而 Polars 是用 Rust 编写的,天生支持并行计算。在处理大规模数据集时,Polars 的速度通常比 Pandas 快数倍。
它的设计理念采用了“惰性求值”(Lazy Evaluation),先构建查询计划,经优化器优化后再执行,这能极大减少内存开销。
import polars as pl
# 扫描文件而非读取,启用 Lazy 模式
q = (
pl.scan_csv("large_dataset.csv")
.filter(pl.col("age") > 30)
.select(["name", "salary", "department"極速安裝:ServBay 點擊即可安裝好包含常用組件的開發環境。
全版本支持:支持從最新 Python 3.x 到早期 Python 2.x 版本。
環境隔離:獨立於系統環境,避免污染系統自帶 Python。
數據處理的邊界正被這些工具不斷拓展,掌握核心技術並搭配高效工具,才能持續提升開發效率。
相关标签:
1秒处理1亿行,这8个Python库彻底让Excel消失
相关推荐
