日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
6.6KStar!比Pandas快很多的數(shù)據(jù)處理庫

Polars 是一個使用 Apache Arrow 列格式作為內(nèi)存模型,用Rust實現(xiàn)的,在Rust, Python以及Node.js中均可使用的速度極快的數(shù)據(jù)幀庫。

創(chuàng)新互聯(lián)是專業(yè)的肥鄉(xiāng)網(wǎng)站建設(shè)公司,肥鄉(xiāng)接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行肥鄉(xiāng)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

它有以下幾個特點:

  • 懶|立即執(zhí)行
  • 多線程
  • SIMD
  • 查詢優(yōu)化
  • 強(qiáng)大的表達(dá)式API
  • 支持多種語言:Rust、Python 等

了解更多內(nèi)容可以點擊這個 用戶指南 。

Python代碼示例

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

# embarrassingly parallel execution
# very expressive query language
>>> (
... 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"), # groups by "cars"
... pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"), # groups by "fruits"
... pl.col("A").reverse().over("fruits").alias("rev_A_by_fruits"), # groups by "fruits
... pl.col("A").sort_by("B").over("fruits").alias("sort_A_by_B_by_fruits"), # groups 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 │
└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘

性能

Polars速度非???,事實上,它是目前性能最好的解決方案之一。具體可參見 h2oai's db基準(zhǔn)測試結(jié)果 。

此處我們自己用一些示例代碼來對比python中pandas和polars處理數(shù)據(jù)的速度差距。

import pandas as pd
import polars as pl
import timeit

# 讀取時間對比
start_df = timeit.default_timer()
df = pd.read_csv("/Users/lenskit/Desktop/aa.csv")
df = df.sort_values("company_name", ascending=False).head()
stop_df = timeit.default_timer()
print('time: ', stop_df - start_df)

start_pl = timeit.default_timer()
data = pl.read_csv("/Users/lenskit/Desktop/aa.csv")
data.sort(by="company_name", reverse=True).head()
stop_pl = timeit.default_timer()
print('time1: ', stop_pl - start_pl)

# 縱向拼接時間對比
start_df1 = timeit.default_timer()
df_1 = pd.read_csv('/Users/lenskit/Desktop/aa.csv')
df_2 = pd.read_csv('/Users/lenskit/Desktop/bb.csv')
df_1.append(df_2, ignore_index=True)
stop_df1 = timeit.default_timer()
print('time2: ', stop_df1 - start_df1)

start_pl1 = timeit.default_timer()
pl_1 = pl.read_csv('/Users/lenskit/Desktop/aa.csv')
pl_2 = pl.read_csv('/Users/lenskit/Desktop/bb.csv')
pl_1.vstack(pl_2)
stop_pl1 = timeit.default_timer()
print('time3: ', stop_pl1 - start_pl1)


time: 5.088931238
time1: 0.8967700230000002
time2: 4.707102063
time3: 0.639797883

可以看到在讀取文件上,polars比pandas速度快了5倍多,在數(shù)據(jù)縱向拼接上,polars比pandas快了有7倍多。

Python安裝

用如下語句安裝最新的polars版本:

$ pip3 install -U polars[pyarrow]

目前polars的更新頻率很高(每周/每隔幾天),所以最好定期更新一下polars來獲得最新的錯誤修復(fù)/功能。

Rust安裝

您可以從 http:// crates.io 獲取最新版本,或者如果你想使用最新的功能/性能改進(jìn),可以用如下命令指向版本的master分支。

polars = { git = "https://github.com/pola-rs/polars", rev = "" }

注意需要Rust version >=1.58

文檔

想知道Polars支持的所有功能嗎?閱讀文檔!

Python

  • 安裝指南:$ pip3 install polars
  • Python文檔https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars/py-polars/html/reference/index.html
  • 用戶指南https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars-book/user-guide/index.html

Rust

  • Rust文件(主分支)https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars/polars/index.html
  • 用戶指南https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars-book/user-guide/index.html

Node

  • 安裝指南:yarn install nodejs-polars
  • Node文檔https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars/nodejs-polars/html/index.html
  • 用戶指南https://link.zhihu.com/?target=https%3A//pola-rs.github.io/polars-book/user-guide/index.html

[Python]: 從源代碼編譯polars

如果你想要獲取最前沿的版本或最大的性能,你應(yīng)該從源代碼編譯Polar。

這可以通過按順序執(zhí)行以下步驟來完成:

  • 1、安裝最新的 Rust編譯器
  • 2、安裝 maturin? :$ pip3 install maturin
  • 3、選擇以下任一:
  • 最快的二進(jìn)制文件,非常長的編譯時間:
  • $ cd py-polars && maturin develop --rustc-extra-args="-C target-cpu=native" --release
  • 較快的二進(jìn)制文件,短一些的編譯時間:
  • $ cd py-polars && maturin develop --rustc-extra-args="-C codegen-units=16 -C lto=

需要注意的是,Python實現(xiàn)的Rust crate被稱為 py-polars ,以區(qū)別于Rust crate包 polars 本身。然而,Python包和Python模塊都被命名為 polars ,所以你可以 pip install polars 和 import polars 。

Arrow2

Polars已經(jīng)轉(zhuǎn)移到 arrow2 。Arrow2是 Apache Arrow Columnar Format 更快、更安全的實現(xiàn)。Arrow2還具有更細(xì)粒度的代碼庫,有助于減少編譯器膨脹。


文章題目:6.6KStar!比Pandas快很多的數(shù)據(jù)處理庫
本文鏈接:http://www.dlmjj.cn/article/djgoijj.html