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

    文章

    1384

    浏览量

    61001
  • Polar
    +关注

    关注

    0

    文章

    11

    浏览量

    14102
  • macOS系统
    +关注

    关注

    0

    文章

    9

    浏览量

    1512
  • vscode
    +关注

    关注

    1

    文章

    146

    浏览量

    7378

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

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

收藏 人收藏

    评论

    相关推荐

    想学习一下C6416 有没有什么经典的书籍 介绍这个

    做图像处理 用C6416 想问一下 有没有什么经典的书籍朱门介绍这个芯片以及怎么用的
    发表于 08-29 14:53

    请问一下这个是什么

    想请教一下这个是什么?在哪里找的 谢谢!
    发表于 08-08 16:44

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

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

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

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

    介绍一下电机的分类

    不同的电机的具体原理不同那么介绍一下电机的分类:同步机,异步机,直流电机。
    发表于 09-03 06:35

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

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

    介绍一下电机驱动模块之L298N

    心血来潮更新一下CSDN博客,手机里有好多博客草稿没发,过段时间我会整理一下,然后全部发上来的。本篇我们来介绍一下电机驱动模块之L298N。
    发表于 12-02 06:47

    介绍一下ESP8266 WiFi 模块

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

    介绍一下串口下载电路

    一下串口下载电路。 STC的51系列单片机程序烧写通过单片机的实现UART口实现,首先单片机彻底断电,然后给单片机上电复位,冷启动,单片机运行系统ISP监控程序(注意,外部手动复位和看门狗复位不会运行
    发表于 01-27 08:12

    介绍一下树莓派外接摄像头之后怎么通过调库的方式来实现监控功能

    文章目录前言、准备工作1.需要的模块和单片机2.下载需要的库3.下载实现监控的主体库二、编译并运行程序1.编译库2.启动软件总结前言今天来介绍一下树莓派外接摄像头之后怎么通过调库的
    发表于 02-17 07:46

    介绍一下SPI协议

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

    这是个人体感应自动喷雾设计,问一下大神,中间这个模块是什么模块啊?

    这是个人体感应自动喷雾设计,问一下大神,中间这个模块是什么模块
    发表于 05-13 22:16

    请问一下OV13850这个模块的SID是怎么接的

    OV13850的手册,它的I2C地址,有两种,由SID这个管脚的电平决定,想请问一下OV13850这个模块的SID是怎么接的,我手上没有这个
    发表于 06-07 11:20

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

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

    Polars模块的使用方式

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