polars 是一个速度极快的 dataframes 库。
它拥有以下特性:
1.多线程
2.强大的表达式api
3.查询优化
下面给大家简单介绍一下这个模块的使用方式。
1.准备
开始之前,你要确保python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细python安装指南 进行安装。
**(可选1) **如果你用python的目的是数据分析,可以直接安装anaconda:python数据分析与挖掘好帮手—anaconda,它内置了python和pip.
**(可选2) **此外,推荐大家用vscode编辑器,它有许多的优点:python 编程的最好搭档—vscode 详细指南。
请选择以下任一种方式输入命令安装依赖 :
windows 环境 打开 cmd (开始-运行-cmd)。macos 环境 打开 terminal (command+空格输入terminal)。如果你用的是 vscode编辑器 或 pycharm,可以直接使用界面下方的terminal.pip install polars2.polars 使用介绍
在初始化变量的时候,polars用起来的方式和pandas没有太大区别,下面我们定义一个初始变量,后面所有示例都使用这个变量:
import polars as pldf = pl.dataframe( { a: [1, 2, 3, 4, 5], fruits: [banana, banana, apple, apple, banana], b: [5, 4, 3, 2, 1], cars: [beetle, audi, beetle, beetle, beetle], })选择需要展示的数据:
(df.select([ pl.col(a), b, # the col part is inferred pl.lit(b), # we must tell polars we mean the literal b pl.col(fruits),]))效果如下:
他还能使用正则表达式筛选值并进行求和等操作:
# 正则表达式(df.select([ pl.col(^a|b$).sum()]))# 或者多选(df.select([ pl.col([a, b]).sum()]))
polars支持下面这样复杂且高效的查询及展示:
>> > df.sort(fruits).select(... [... fruits,... cars,... pl.lit(fruits).alias(literal_string_fruits),... pl.col(b).filter(pl.col(cars) == beetle).sum(),... pl.col(a).filter(pl.col(b) > 2).sum().over(cars).alias(sum_a_by_cars),... pl.col(a).sum().over(fruits).alias(sum_a_by_fruits),... pl.col(a).reverse().over(fruits).alias(rev_a_by_fruits),... pl.col(a).sort_by(b).over(fruits).alias(sort_a_by_b_by_fruits),... ]... )shape: (5, 8)┌──────────┬──────────┬──────────────┬─────┬─────────────┬─────────────┬─────────────┬─────────────┐│ fruits ┆ cars ┆ literal_stri ┆ b ┆ sum_a_by_ca ┆ sum_a_by_fr ┆ rev_a_by_fr ┆ sort_a_by_b ││ --- ┆ --- ┆ ng_fruits ┆ --- ┆ rs ┆ uits ┆ uits ┆ _by_fruits ││ str ┆ str ┆ --- ┆ i64 ┆ --- ┆ --- ┆ --- ┆ --- ││ ┆ ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ i64 │╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╪═════════════╡│ apple ┆ beetle ┆ fruits ┆ 11 ┆ 4 ┆ 7 ┆ 4 ┆ 4 ││ apple ┆ beetle ┆ fruits ┆ 11 ┆ 4 ┆ 7 ┆ 3 ┆ 3 ││ banana ┆ beetle ┆ fruits ┆ 11 ┆ 4 ┆ 8 ┆ 5 ┆ 5 ││ banana ┆ audi ┆ fruits ┆ 11 ┆ 2 ┆ 8 ┆ 2 ┆ 2 ││ banana ┆ beetle ┆ fruits ┆ 11 ┆ 4 ┆ 8 ┆ 1 ┆ 1 │└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘3.polars 高级使用
倒序操作,将值倒序后重新放回变量中,起名为xxx_reverse:
(df.select([ pl.all(), pl.all().reverse().suffix(_reverse)]))
对所有列求和,并放回变量中,起名为 xxx_sum:
(df.select([ pl.all(), pl.all().sum().suffix(_sum)]))
正则也能用于筛选:
predicate = pl.col(fruits).str.contains(^b.*)(df.select([ predicate]))
在设定一个新列的时候,甚至可以根据条件来给不同的行设定值:
(df.select([ fruits, b, pl.when(pl.col(fruits) == banana).then(pl.col(b)).otherwise(-1).alias(b)]))
fold 函数很强大,它能在列上执行操作,获得最快的速度,也就是矢量化执行:
df = pl.dataframe({ a: [1, 2, 3], b: [10, 20, 30], })out = df.select( pl.fold(acc=pl.lit(0), f=lambda acc, x: acc + x, exprs=pl.col(*)).alias(sum),)print(out)# shape: (3, 1)# ┌─────┐# │ sum │# │ --- │# │ i64 │# ╞═════╡# │ 11 │# ├╌╌╌╌╌┤# │ 22 │# ├╌╌╌╌╌┤# │ 33 │# └─────┘
未来的智慧工厂需要运用到的技术有哪些
EMC电磁兼容测试干扰源有哪些?
变频器的参数设定 变频器制动方法的选择
OpenFlow标准:加速一致性测试脚步
油管垫片的划痕、压伤检测方案
Polars模块的使用方式
高频电流探头CP8030B的使用安全注意事项
贴片电容在电路中能起到哪些作用?
短波接收冷门SDR收发信机设计案例
高管回归 Jes Munk Hansen任欧司朗全球销售总裁
解析双极性步进电机的基础知识
利用精确的I²C实时时钟实现完美设计
国产替代具备哪些自主技术实力
零跑:首款AI自动驾驶芯片步入集成验证阶段,明年度进行实车测试
2024年将成为高端纯电车爆发拐点,中国企业提前掌控电池命脉
护理机器人主机采用微电脑控制技术
FPGA设计中的复位
为开发者“铸剑”,一图揭秘华为云CodeArts IDE四大特性
颜值与实力兼具的蓝牙双耳机,迈从BH288二次方耳机适合你
降低PCB设计中EMI的技术