0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一下Polars这个模块的使用方式

数据分析与开发 来源:Python实用宝典 2023-02-03 09:15 次阅读

Polars 是一个速度极快的 DataFrames 库。

它拥有以下特性:

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"),
]))

效果如下:

149bf48e-a358-11ed-bfe3-dac502259ad0.png

他还能使用正则表达式筛选值并进行求和等操作:

# 正则表达式
(df.select([
pl.col("^A|B$").sum()
]))
# 或者多选
(df.select([
pl.col(["A", "B"]).sum()
]))
14ac1d5a-a358-11ed-bfe3-dac502259ad0.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")
]))

14b9a254-a358-11ed-bfe3-dac502259ad0.png

对所有列求和,并放回变量中,起名为 xxx_sum:

(df.select([
pl.all(),
pl.all().sum().suffix("_sum")
]))
14da254c-a358-11ed-bfe3-dac502259ad0.png

正则也能用于筛选:

predicate = pl.col("fruits").str.contains("^b.*")

(df.select([
predicate
]))
14ef4b3e-a358-11ed-bfe3-dac502259ad0.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

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
    API
    +关注

    关注

    2

    文章

    1499

    浏览量

    61975
  • Polar
    +关注

    关注

    0

    文章

    13

    浏览量

    14139
  • macOS系统
    +关注

    关注

    0

    文章

    9

    浏览量

    1541
  • vscode
    +关注

    关注

    1

    文章

    155

    浏览量

    7698

原文标题:Polars 速度极快的数据处理第三方模块

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详细介绍一下PSS+Pnoise仿真

    PSS+Pnoise仿真是很多电路要用到的仿真,今天我们详细介绍一下这个仿真。
    的头像 发表于 11-03 18:13 7605次阅读
    详细<b class='flag-5'>介绍</b><b class='flag-5'>一下</b>PSS+Pnoise仿真

    请问一下这个模块用的什么芯片?

    大家有知道这个模块用的什么芯片么?目前有这个需求。或者是否有其它稳定成熟的电路分享一下,防止12V直流电机堵转导致烧掉电机的
    发表于 10-30 11:21

    介绍一下波形占空比实现的方式

    先上图如图 是我生成的个波形 这个波形的占空比在连续的四个周期内分别是10%,20%,30%,40%, 并且按照这个顺序循环这里大致介绍一下
    发表于 08-04 09:25

    介绍一下三菱变频器控制方式负载特征点

    三菱变频器控制方式负载特征点,在三菱变频器控制方式V/F控有说过开环和闭环,所以这个环节定很重要,下面小编为大家介绍
    发表于 09-03 07:35

    介绍一下ESP8266 WiFi 模块

    文章目录1 简介2 ESP 8266 引脚排列3 供电方式4 单片机与ESP8266交互5 测试代码6 最后1 简介Hi,大家好,这里是丹成学长,今天学长向大家介绍一下ESP8266 WiFi
    发表于 01-18 09:15

    介绍一下SPI协议

    硬件接口协议在芯片是被广泛使用的,上篇博文详细介绍了I2C协议,这次来介绍一下spi协议。、SPI介绍1.SPI总线SPI(SerialP
    发表于 02-17 07:44

    介绍一下这款4g模块的功能

    软硬件高度集成模组化的产品,具有兼容性好、通信速度快、通信数据量大、网络频谱宽、通信灵活等特点,广泛应用于电力、环保、金融、工业自动化等领域。 下面就介绍一下这款4g模块的功能---成都纵横智控研发! 支持GPS定位 支持北斗、
    的头像 发表于 05-07 22:55 2.3w次阅读

    电磁炉加热一下就停一下什么原因及解决办法

    电磁炉有时会出现加热故障,现象是热一下一下在热一下又停一下,基本隔
    发表于 03-18 09:02 27.5w次阅读

    电磁炉加热一下就停一下什么原因

    电磁炉加热一下就停一下什么原因。
    的头像 发表于 06-04 10:01 3.8w次阅读

    介绍一下机电暂态开源工具箱MatTrans的注意事项

    )作者:一一数二三这个工具箱所有代码开源,且提供了图形化仿真界面,单元模块化,易于添加新的模块和仿真器件。介绍一下我使用过程中的
    发表于 01-10 11:23 1次下载
    <b class='flag-5'>介绍</b><b class='flag-5'>一下</b>机电暂态开源工具箱MatTrans的注意事项

    Polars个使用Apache Arrow列格式作为内存模型

    需要注意的是,Python实现的Rust crate被称为py-polars,以区别于Rust crate包polars本身。然而,Python包和Python模块都被命名为polars
    发表于 07-07 16:21 1318次阅读

    简单介绍一下什么是微波通讯?

    欢迎来到东用知识小课堂,今天东东就为大家简单介绍一下什么是微波通讯?我们通常说有三大传输系统:光纤通信、微波通信、卫星通信。实际上,卫星通信也是微波通信的种。通俗的讲电磁波通信,主要分为广播
    的头像 发表于 03-05 11:33 2307次阅读
    简单<b class='flag-5'>介绍</b><b class='flag-5'>一下</b>什么是微波通讯?

    Polars模块的使用方式

    Polars个速度极快的 DataFrames 库。 它拥有以下特性: 1.多线程 2.强大的表达式API 3.查询优化 下面给大家简单介绍一下
    的头像 发表于 10-17 10:39 558次阅读
    <b class='flag-5'>Polars</b><b class='flag-5'>模块</b>的使用<b class='flag-5'>方式</b>

    浪涌抗扰度怎么测?我们用这个A/D转换器试了一下

    浪涌抗扰度怎么测?我们用这个A/D转换器试了一下
    的头像 发表于 11-27 15:20 765次阅读
    浪涌抗扰度怎么测?我们用<b class='flag-5'>这个</b>A/D转换器试了<b class='flag-5'>一下</b>

    将NVIDIA加速计算引入Polars

    Polars 近日发布了款由 RAPIDS cuDF 驱动的全新 GPU 引擎,该引擎可将 NVIDIA GPU 上的 Polars 工作流速度最高提速 13 倍,使数据科学家仅在
    的头像 发表于 11-20 10:03 197次阅读
    将NVIDIA加速计算引入<b class='flag-5'>Polars</b>