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

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

3天内不再提示

Polars模块的使用方式

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-17 10:39 次阅读

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

它拥有以下特性:

1.多线程

2.强大的表达式API

3.查询优化

下面给大家简单介绍一下这个模块的使用方式。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

**(可选1) **如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

**(可选2) **此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install polars

2.Polars 使用介绍

在初始化变量的时候,Polars用起来的方式和Pandas没有太大区别,下面我们定义一个初始变量,后面所有示例都使用这个变量:

import polars as pl
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()
]))

图片

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 │
│ strstr ┆ --- ┆ i64 ┆ --- ┆ --- ┆ --- ┆ --- │
│ ┆ ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╪═════════════╡
│ "apple""beetle""fruits"114744           │
│ "apple""beetle""fruits"114733           │
│ "banana""beetle""fruits"114855           │
│ "banana""audi""fruits"112822           │
│ "banana""beetle""fruits"114811           │
└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘

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 │
# └─────┘
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2696

    浏览量

    47439
  • 多线程
    +关注

    关注

    0

    文章

    278

    浏览量

    19946
  • 数据分析
    +关注

    关注

    2

    文章

    1446

    浏览量

    34051
收藏 人收藏

    评论

    相关推荐

    Wifi模块的工作方式功能是什么?

    Wifi模块的工作方式是什么呢,Wifi模块的主要功能又有哪些呢?本文主要介绍了有关Wifi模块的基础知识即:Wifi模块的工作
    发表于 06-12 14:22 5887次阅读

    易语言-超级快捷方式模块+例程

    易语言是一门以中文作为程序代码编程语言学习例程:超级快捷方式模块
    发表于 06-06 16:03 11次下载

    关于WiFi模块的WPS连接方式的详细介绍

    详细介绍了WiFi模块的WPS连接方式,以及硬件整体架构,硬件wps引脚分配
    发表于 03-30 15:46 24次下载

    一文总结蓝牙模块的工作方式汇总,很全值得收藏!

    蓝牙模块的工作方式有哪些呢?资料总结了蓝牙模块的常见的7种工作方式,需要的亲可以收藏下
    发表于 04-26 15:05 15次下载
    一文总结蓝牙<b class='flag-5'>模块</b>的工作<b class='flag-5'>方式</b>汇总,很全值得收藏!

    【技术分享】WiFi模块常见的配网方式简介

    配网方式。WiFi模块常见的WiFi模块配网方式,一般可以归类为直接配网、智能配网、WEB配网、WPS配网。其中最为常见的就是前三种,用户可以根据具体的使用场合选择各种最适合的配网
    的头像 发表于 05-07 22:54 7924次阅读
    【技术分享】WiFi<b class='flag-5'>模块</b>常见的配网<b class='flag-5'>方式</b>简介

    485无线通信模块与4-20mA采集模块传输方式的区别

    若将485无线通信模块与4-20mA采集模块进行比较,则两者在传输方式上的差别仍较大。与普通仪表一样,信号电流都是4-20mA,即最小电流是4mA,最大电流是20mA。在传送信号时,要考虑到导线还有
    发表于 03-03 14:50 1.2w次阅读

    模块的分类方式及类型详解

    不同的应用需求,不同参数和功能的光模块应运而生。光模块的分类方式及类型详见如下: 1、按封装分类 光模块按照封装形式来分有以下几种常见类型:SFP、SFP+、SFP28、QSFP+、Q
    发表于 06-08 15:14 7582次阅读

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

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

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

    Polars 是一个速度极快的 DataFrames 库。
    的头像 发表于 02-03 09:15 1556次阅读

    DC电源模块具有不同的安装方式和安全规范

    BOSHIDA DC电源模块具有不同的安装方式和安全规范 DC电源模块是将低压直流电转换为需要的输出电压的装置。它们广泛应用于各种领域和行业,如通信、医疗、工业、家用电器等。安装DC电源模块
    的头像 发表于 09-19 11:09 697次阅读
    DC电源<b class='flag-5'>模块</b>具有不同的安装<b class='flag-5'>方式</b>和安全规范

    verilog调用模块端口对应方式

    Verilog是一种硬件描述语言(HDL),广泛应用于数字电路设计和硬件验证。在Verilog中,模块是构建电路的基本单元,而模块端口对应方式则用于描述模块之间信号传递的
    的头像 发表于 02-23 10:20 1748次阅读

    DC电源模块的原理及工作方式

    BOSHIDA  DC电源模块的原理及工作方式 DC电源模块是一种将交流电转换为直流电的设备,它将交流电输入端转换为稳定的直流电输出,以供电子设备使用。DC电源模块的工作原理及工作
    的头像 发表于 04-24 10:37 732次阅读
    DC电源<b class='flag-5'>模块</b>的原理及工作<b class='flag-5'>方式</b>

    电源模块的散热原理,电源模块的散热方式有哪些

    电源模块的散热原理主要依赖于三种传热方式:导热、对流和辐射。以下是针对这三种散热方式的详细解释和归纳:
    的头像 发表于 06-10 17:00 975次阅读

    开关量模块接线方式有哪些

    开关量模块接线方式是自动化控制系统中的重要组成部分,它负责接收和处理开关信号,实现对设备的控制。 一、开关量模块概述 1.1 开关量模块定义 开关量
    的头像 发表于 08-30 14:17 635次阅读

    将NVIDIA加速计算引入Polars

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