0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一下Polars這個(gè)模塊的使用方式

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:Python實(shí)用寶典 ? 2023-02-03 09:15 ? 次閱讀

Polars 是一個(gè)速度極快的 DataFrames 庫(kù)。

它擁有以下特性:

1.多線(xiàn)程

2.強(qiáng)大的表達(dá)式API

3.查詢(xún)優(yōu)化

下面給大家簡(jiǎn)單介紹一下這個(gè)模塊的使用方式。

1.準(zhǔn)備

請(qǐng)選擇以下任一種方式輸入命令安裝依賴(lài)

1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。

2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。

3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install polars

2.Polars 使用介紹

在初始化變量的時(shí)候,Polars用起來(lái)的方式和Pandas沒(méi)有太大區(qū)別,下面我們定義一個(gè)初始變量,后面所有示例都使用這個(gè)變量:

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

選擇需要展示的數(shù)據(jù):

(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

他還能使用正則表達(dá)式篩選值并進(jìn)行求和等操作:

# 正則表達(dá)式
(df.select([
pl.col("^A|B$").sum()
]))
# 或者多選
(df.select([
pl.col(["A", "B"]).sum()
]))
14ac1d5a-a358-11ed-bfe3-dac502259ad0.png

Polars支持下面這樣復(fù)雜且高效的查詢(xún)及展示:

>>> 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 高級(jí)使用

倒序操作,將值倒序后重新放回變量中,起名為xxx_reverse:

(df.select([
pl.all(),
pl.all().reverse().suffix("_reverse")
]))

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

對(duì)所有列求和,并放回變量中,起名為 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

在設(shè)定一個(gè)新列的時(shí)候,甚至可以根據(jù)條件來(lái)給不同的行設(shè)定值:

(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 函數(shù)很強(qiáng)大,它能在列上執(zhí)行操作,獲得最快的速度,也就是矢量化執(zhí)行:

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 │
# └─────┘








審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1510

    瀏覽量

    62278
  • Polar
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    14154
  • macOS系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1555
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    157

    瀏覽量

    7788

原文標(biāo)題:Polars 速度極快的數(shù)據(jù)處理第三方模塊

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳細(xì)介紹一下PSS+Pnoise仿真

    PSS+Pnoise仿真是很多電路要用到的仿真,今天我們?cè)敿?xì)介紹一下這個(gè)仿真。
    的頭像 發(fā)表于 11-03 18:13 ?8250次閱讀
    詳細(xì)<b class='flag-5'>介紹</b><b class='flag-5'>一下</b>PSS+Pnoise仿真

    請(qǐng)問(wèn)一下這個(gè)模塊用的什么芯片?

    大家有知道這個(gè)模塊用的什么芯片么?目前有這個(gè)需求?;蛘呤欠裼衅渌€(wěn)定成熟的電路分享一下,防止12V直流電機(jī)堵轉(zhuǎn)導(dǎo)致燒掉電機(jī)的
    發(fā)表于 10-30 11:21

    介紹一下波形占空比實(shí)現(xiàn)的方式

    先上圖如圖 是我生成的個(gè)波形 這個(gè)波形的占空比在連續(xù)的四個(gè)周期內(nèi)分別是10%,20%,30%,40%, 并且按照這個(gè)順序循環(huán)這里大致介紹一下
    發(fā)表于 08-04 09:25

    介紹一下三菱變頻器控制方式負(fù)載特征點(diǎn)

    三菱變頻器控制方式負(fù)載特征點(diǎn),在三菱變頻器控制方式V/F控有說(shuō)過(guò)開(kāi)環(huán)和閉環(huán),所以這個(gè)環(huán)節(jié)定很重要,下面小編為大家介紹
    發(fā)表于 09-03 07:35

    介紹一下ESP8266 WiFi 模塊

    文章目錄1 簡(jiǎn)介2 ESP 8266 引腳排列3 供電方式4 單片機(jī)與ESP8266交互5 測(cè)試代碼6 最后1 簡(jiǎn)介Hi,大家好,這里是丹成學(xué)長(zhǎng),今天學(xué)長(zhǎng)向大家介紹一下ESP8266 WiFi
    發(fā)表于 01-18 09:15

    介紹一下SPI協(xié)議

    硬件接口協(xié)議在芯片是被廣泛使用的,上篇博文詳細(xì)介紹了I2C協(xié)議,這次來(lái)介紹一下spi協(xié)議。、SPI介紹1.SPI總線(xiàn)SPI(SerialP
    發(fā)表于 02-17 07:44

    介紹一下這款4g模塊的功能

    軟硬件高度集成模組化的產(chǎn)品,具有兼容性好、通信速度快、通信數(shù)據(jù)量大、網(wǎng)絡(luò)頻譜寬、通信靈活等特點(diǎn),廣泛應(yīng)用于電力、環(huán)保、金融、工業(yè)自動(dòng)化等領(lǐng)域。 下面就介紹一下這款4g模塊的功能---成都縱橫智控研發(fā)! 支持GPS定位 支持北斗、
    的頭像 發(fā)表于 05-07 22:55 ?2.3w次閱讀

    電磁爐加熱一下就停一下什么原因及解決辦法

    電磁爐有時(shí)會(huì)出現(xiàn)加熱故障,現(xiàn)象是熱一下一下在熱一下又停一下,基本隔
    發(fā)表于 03-18 09:02 ?27.6w次閱讀

    電磁爐加熱一下就停一下什么原因

    電磁爐加熱一下就停一下什么原因。
    的頭像 發(fā)表于 06-04 10:01 ?3.9w次閱讀

    介紹一下機(jī)電暫態(tài)開(kāi)源工具箱MatTrans的注意事項(xiàng)

    )作者:一一數(shù)二三這個(gè)工具箱所有代碼開(kāi)源,且提供了圖形化仿真界面,單元模塊化,易于添加新的模塊和仿真器件。介紹一下我使用過(guò)程中的
    發(fā)表于 01-10 11:23 ?1次下載
    <b class='flag-5'>介紹</b><b class='flag-5'>一下</b>機(jī)電暫態(tài)開(kāi)源工具箱MatTrans的注意事項(xiàng)

    Polars個(gè)使用Apache Arrow列格式作為內(nèi)存模型

    需要注意的是,Python實(shí)現(xiàn)的Rust crate被稱(chēng)為py-polars,以區(qū)別于Rust crate包polars本身。然而,Python包和Python模塊都被命名為polars
    發(fā)表于 07-07 16:21 ?1329次閱讀

    簡(jiǎn)單介紹一下什么是微波通訊?

    歡迎來(lái)到東用知識(shí)小課堂,今天東東就為大家簡(jiǎn)單介紹一下什么是微波通訊?我們通常說(shuō)有三大傳輸系統(tǒng):光纖通信、微波通信、衛(wèi)星通信。實(shí)際上,衛(wèi)星通信也是微波通信的種。通俗的講電磁波通信,主要分為廣播
    的頭像 發(fā)表于 03-05 11:33 ?2374次閱讀
    簡(jiǎn)單<b class='flag-5'>介紹</b><b class='flag-5'>一下</b>什么是微波通訊?

    Polars模塊的使用方式

    Polars個(gè)速度極快的 DataFrames 庫(kù)。 它擁有以下特性: 1.多線(xiàn)程 2.強(qiáng)大的表達(dá)式API 3.查詢(xún)優(yōu)化 下面給大家簡(jiǎn)單介紹一下
    的頭像 發(fā)表于 10-17 10:39 ?585次閱讀
    <b class='flag-5'>Polars</b><b class='flag-5'>模塊</b>的使用<b class='flag-5'>方式</b>

    浪涌抗擾度怎么測(cè)?我們用這個(gè)A/D轉(zhuǎn)換器試了一下

    浪涌抗擾度怎么測(cè)?我們用這個(gè)A/D轉(zhuǎn)換器試了一下
    的頭像 發(fā)表于 11-27 15:20 ?813次閱讀
    浪涌抗擾度怎么測(cè)?我們用<b class='flag-5'>這個(gè)</b>A/D轉(zhuǎn)換器試了<b class='flag-5'>一下</b>

    將NVIDIA加速計(jì)算引入Polars

    Polars 近日發(fā)布了款由 RAPIDS cuDF 驅(qū)動(dòng)的全新 GPU 引擎,該引擎可將 NVIDIA GPU 上的 Polars 工作流速度最高提速 13 倍,使數(shù)據(jù)科學(xué)家僅在
    的頭像 發(fā)表于 11-20 10:03 ?288次閱讀
    將NVIDIA加速計(jì)算引入<b class='flag-5'>Polars</b>