不再使用 pandas,7 个 Python 库太棒了
写 Python 的朋友大多都离不开 Pandas,对吧?查数据、做清洗、跑分析,第一反应就是 import pandas as pd。但 Pandas 其实也有不少限制,比如大数据场景内存爆炸、并发支持差、速度在某些情况下不理想。 所以啊,我这边整理了几个替代或者补充 Pandas 的库,真心值得一试。
1. Polars:更快更轻
这个库近两年特别火,核心就是快,基于 Rust 写的,多核利用也到位。写法上和 Pandas 有点像,上手难度不大。
import polars as pldf = pl.DataFrame({
"name": ["Tom", "Jerry", "Anna"],
"age": [23, 31, 29]
})
# 筛选年龄大于25的
print(df.filter(pl.col("age") > 25))
要处理几百万行数据,速度优势立马体现出来。
2. Dask:分布式的 Pandas
Dask 的定位就是让你写着 Pandas 的代码,跑在分布式环境上。小数据本地玩,大数据可以挂集群,不用改动太多。
import dask.dataframe as dddf = dd.read_csv("bigdata.csv")
result = df.groupby("city")["salary"].mean().compute()
print(result)
.compute() 这一步,就是把惰性计算真正跑出来。
3. Vaex:秒开十亿行
Vaex 的优势是内存映射,你哪怕有几十 GB 的 CSV,照样能打开,还能秒级过滤。
import vaexdf = vaex.open("huge.csv")
print(df[df.salary > 10000].mean("age"))
关键点就是不把所有数据全塞内存,而是懒加载,性能很友好。
4. Modin:几乎不用改代码
这个库特别适合懒人,号称“一行代码提速 Pandas”。你把 import pandas as pd 改成 import modin.pandas as pd,剩下的都一样。
import modin.pandas as pddf = pd.read_csv("data.csv")
print(df.groupby("type")["amount"].sum())
它底层会用 Ray 或 Dask 来并行化,省事。
5. PySpark:工业级老大哥
如果你在大公司,数据规模上百 GB 甚至 TB,那 PySpark 还是绕不过去。SQL 风格友好,而且生态成熟。
from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("demo").getOrCreate()
df = spark.read.csv("data.csv", header=True, inferSchema=True)
df.groupBy("city").avg("salary").show()
这就是分布式计算的标准选手。
6. Koalas(现在并到 PySpark 里了)
Koalas 的目标就是让 Pandas 用户能无缝迁移到 Spark。用法和 Pandas 接近,但执行在 Spark 上。
import databricks.koalas as ksdf = ks.read_csv("data.csv")
print(df.head())
虽然现在已经和 PySpark 合并了,但思想还是一样:平滑过渡。
7. DuckDB:嵌入式 SQL 引擎
DuckDB 被称作“分析界的 SQLite”。支持直接在本地跑 SQL,速度快到你怀疑是不是在开玩笑。
import duckdbcon = duckdb.connect()
df = con.execute("SELECT * FROM 'data.csv' WHERE salary > 10000").fetchdf()
print(df)
对熟悉 SQL 的人特别友好,甚至能和 Arrow、Polars 等库一起配合。
Pandas 确实还是很多人默认的选择,但你得清楚:它不是万能的。如果只是几 MB 数据,Pandas 足够;但如果碰到几十 GB,或者需要分布式,就得考虑 Polars、Dask、Vaex、PySpark 这些。
总之,不再一棍子全打在 Pandas 上,工具箱多几个选择,工作就会轻松很多。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领