如果你玩过Pandas,那应该知道它在处理小数据集时是一把好手,但数据量一大,它的速度就像跑高速上的拖拉机,慢得让人崩溃。Polars呢?它用的是Apache Arrow内存格式,加上Rust语言写的内核,说白了,速度就是它的最大亮点!今天就聊聊怎么用Polars做些简单又酷的事儿。
数据帧是怎么回事?
Polars的核心是DataFrame,这玩意儿就跟Pandas的DataFrame差不多,但多了点“超能力”。要用Polars,你得先装它:
1 | pip install polars |
有了它,我们来看看Polars的DataFrame是啥样的。
1 | import polars as pl |
输出看着很清爽:
1 | shape: (3, 3) |
咋样,和Pandas的表差不多吧?
数据选择,简单粗暴
选列、选行是常规操作,Polars搞定它就是这么简单。
按列选
1 | # 获取年龄列 |
输出的效果像极了Series,但速度甩Pandas几条街。
按条件选
1 | # 找出30岁以上的人 |
这个filter看着就很人性化,别说,读起来还挺像英语句子。
按位置选
1 | # 获取第0行 |
小细节:Polars在按行选的时候更高效,别问,问就是Rust功劳。
数据变形,真快!
Polars支持类似Pandas的变形操作,但它更适合处理大数据集,尤其是列式存储的优势一看便知。
增加新列
1 | # 增加一个新列,表示是否成年 |
这玩意儿用起来真的“丝滑”,没多余的锅碗瓢盆。
按列计算
1 | # 计算年龄的平均值 |
计算还自带聚合操作,效率让人想扔掉Pandas。
与Pandas无缝对接
很多人担心切换到Polars会不兼容之前的代码。别怕,Polars提供了和Pandas来回转的桥梁。
Pandas -> Polars
1 | import pandas as pd |
Polars -> Pandas
1 | # 再转回 Pandas |
你看,Polars不光快,还挺懂事儿。
温馨提示
- 别搞太多循环:Polars有自己的表达式系统,尽量用内置方法搞定。循环写多了,速度优势就没了。
- 记得用最新版本:Polars更新特别快,偶尔会有API变化,别用老版本卡bug。
- Pandas不一定全弃:如果你的数据集小到装得下内存,用Pandas也挺香,别死磕速度。
聚合操作,事半功倍
说到处理分组数据,Polars比Pandas整洁很多。
1 | # 按城市分组,计算平均年龄 |
输出就很干净,代码一目了然。
写入与读取,快得一塌糊涂
Polars支持各种格式,CSV、Parquet都不在话下。
写入文件
1 | data.write_csv("output.csv") |
读取文件
1 | # 从CSV加载 |
用Parquet还能再快一丢丢,适合特别大的数据。
Polars就是这么个“狠角色”,轻快灵活,用着还贼省心。如果你的数据量大到Pandas吃不消,Polars绝对值得一试!
彩蛋时间
走过路过不要错过,为大家准备了一份pycharm破解工具,感兴趣的朋友可以看看哈:最新pycharm破解