它拥有以下特性:
1.多线程
2.强大的表达式API
3.查询优化
下面给大家简单介绍一下这个模块的使用方式。
1.准备
请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install polars
2.Polars 使用介绍
在初始化变量的时候,Polars用起来的方式和Pandas没有太大区别,下面我们定义一个初始变量,后面所有示例都使用这个变量:
importpolars aspl df = 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() ]))
![14ac1d5a-a358-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/A0/66/wKgaomToL_iAe1YYAAAbCMfikFQ817.png)
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") ]))
![14da254c-a358-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/A0/66/wKgaomToL_iAHC8BAAEGwlB1W7Y839.png)
正则也能用于筛选:
predicate = pl.col("fruits").str.contains("^b.*") (df.select([ predicate ]))
![14ef4b3e-a358-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/A0/66/wKgaomToL_iADUHtAAAsVMbH0Tg270.png)
在设定一个新列的时候,甚至可以根据条件来给不同的行设定值:
(df.select([ "fruits", "B", pl.when(pl.col("fruits") == "banana").then(pl.col("B")).otherwise(-1).alias("b") ]))
![1504cb76-a358-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/A0/66/wKgaomToL_mAfYqFAABRbaX99Qo780.png)
fold 函数很强大,它能在列上执行操作,获得最快的速度,也就是矢量化执行:
df = pl.DataFrame({ "a": [1, 2, 3], "b": [10, 20, 30], } ) out = df.select( pl.fold(acc=pl.lit(0), f=lambdaacc, x: acc + x, exprs=pl.col("*")).alias("sum"), ) print(out) # shape: (3, 1) # ┌─────┐ # │ sum │ # │ --- │ # │ i64 │ # ╞═════╡ # │ 11 │ # ├╌╌╌╌╌┤ # │ 22 │ # ├╌╌╌╌╌┤ # │ 33 │ # └─────┘
审核编辑:刘清
-
API
+关注
关注
2文章
1523浏览量
62510 -
Polar
+关注
关注
0文章
13浏览量
14159 -
macOS系统
+关注
关注
0文章
9浏览量
1571 -
vscode
+关注
关注
1文章
157浏览量
7900
原文标题:Polars 速度极快的数据处理第三方模块
文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
介绍一下波形占空比实现的方式
介绍一下ESP8266 WiFi 模块
介绍一下这款4g模块的功能
介绍一下机电暂态开源工具箱MatTrans的注意事项
![<b class='flag-5'>介绍</b><b class='flag-5'>一下</b>机电暂态开源工具箱MatTrans的注意事项](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Polars是一个使用Apache Arrow列格式作为内存模型
简单介绍一下什么是微波通讯?
![简单<b class='flag-5'>介绍</b><b class='flag-5'>一下</b>什么是微波通讯?](https://file.elecfans.com/web2/M00/6E/64/poYBAGNAz-OAbjlXAAAvt8w1pQc425.jpg)
将NVIDIA加速计算引入Polars
![将NVIDIA加速计算引入<b class='flag-5'>Polars</b>](https://file1.elecfans.com/web1/M00/F5/79/wKgaoWc9RDeAHJLtAAANMHZSy94420.jpg)
评论