掌握python polars庫進(jìn)行高效高速的數(shù)據(jù)處理。
python庫polars
https://github.com/pola-rs/polars
Polars 是一個(gè)使用 Rust 編寫的高性能數(shù)據(jù)處理庫,它提供了一個(gè)類似于 pandas 的 API,但專注于高效和高速的數(shù)據(jù)處理。
Polars 的語法與 Pandas 非常相似,因此從一個(gè)庫到另一個(gè)庫的轉(zhuǎn)換非常簡單。
特點(diǎn)
高性能:Polars 的底層是用 Rust 編寫的,這使得它在處理大數(shù)據(jù)集時(shí)能夠提供出色的性能。
內(nèi)存效率:它使用高效的內(nèi)存管理技術(shù),減少內(nèi)存占用,特別是在處理大型數(shù)據(jù)集時(shí)。
易用 API:Polars 的 API 設(shè)計(jì)類似于 pandas,這對(duì)于那些已經(jīng)熟悉 pandas 的用戶來說,學(xué)習(xí)成本較低。
多線程和向量化操作:通過優(yōu)化多線程處理和向量化操作,Polars 能夠進(jìn)一步提高處理數(shù)據(jù)的速度。
豐富的數(shù)據(jù)操作功能:提供了廣泛的數(shù)據(jù)操作功能,包括過濾、排序、分組、聚合等。
矢量化查詢引擎:Polars 使用 Apache Arrow(一種列式數(shù)據(jù)格式)以矢量化方式處理你的查詢。
Polars 提供了兩種主要的 API
DataFrame API 和 Lazy API。這兩種 API 都支持豐富的數(shù)據(jù)操作功能,但它們?cè)谔幚頂?shù)據(jù)的方式上有所不同。
DataFrame API
這是 Polars 的立即執(zhí)行 API,類似于 pandas 的使用方式。
當(dāng)使用 DataFrame API 時(shí),所有的數(shù)據(jù)操作(如篩選、排序、聚合)都會(huì)立即執(zhí)行并返回結(jié)果。
這種方式直觀且易于調(diào)試,因?yàn)槊總€(gè)步驟的輸出都可以立即查看。
適用于數(shù)據(jù)集較小,或者需要立即反饋的場(chǎng)景。
Lazy API
Lazy API 基于延遲執(zhí)行的概念,這意味著數(shù)據(jù)操作不會(huì)立即執(zhí)行。
在這種模式下,操作會(huì)被視為一系列的指令或計(jì)劃,在實(shí)際需要結(jié)果時(shí)才執(zhí)行。
這允許 Polars 對(duì)整個(gè)操作流程進(jìn)行優(yōu)化,比如合并多個(gè)步驟、消除不必要的計(jì)算,從而提高整體效率。
Lazy API 特別適合處理大型數(shù)據(jù)集,因?yàn)樗梢詼p少內(nèi)存占用并提高性能
庫的安裝
我們可以直接使用 pip 來進(jìn)行庫的安裝。
pip install polars
性能對(duì)比
首先,我們創(chuàng)建一個(gè)大型的虛擬數(shù)據(jù)集,它包括 100 萬行和 51 列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(0, 100, size=(1000000, 50))) df = df.rename(columns={i:f"x_{i} " for i in range(50)}) df["category"] = ["A", "B", "C", "D"] * 2500000 df.to_csv('data.csv')
加載數(shù)據(jù)集
import polars as pl df_pl = pl.read_csv("data.csv") df_pd = pd.read_csv("data.csv")
過濾操作
我們將對(duì)操作進(jìn)行計(jì)時(shí),以便我們可以比較 polars 和 Pandas 的性能。
%time df_pd_d = df[df["category"]=="D"] %time df_pl_d = df_pl.filter(pl.col("category")=="D")
pandas 使用的時(shí)間是 231 ms,而 polars 只需要 70.6 ms
多條件過濾
%time df_pd_d=df_pd[(df_pd["category"] == "D") & (df_pd["x_1 "] > 10)] %time df_pl_d=df_pl.filter((pl.col("category")=="D") & (pl.col("x_1 ") > 10))
以上就是掌握python polars庫進(jìn)行高效高速的數(shù)據(jù)處理。的詳細(xì)內(nèi)容,更多關(guān)于python polars庫數(shù)據(jù)處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python tkinter Entry控件的焦點(diǎn)移動(dòng)操作
這篇文章主要介紹了python tkinter Entry控件的焦點(diǎn)移動(dòng)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python批量解壓文件中出現(xiàn)中文亂碼的原因及解決方法
這篇文章主要給大家記一次Python批量解壓文件遇中文亂碼及解決過程,文中有詳細(xì)的圖解及代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-08-08Python實(shí)現(xiàn)掃描局域網(wǎng)活動(dòng)ip(掃描在線電腦)
這篇文章主要介紹了Python實(shí)現(xiàn)掃描局域網(wǎng)活動(dòng)ip(掃描在線電腦),本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04

OpenCV半小時(shí)掌握基本操作之圖像基礎(chǔ)操作

一文實(shí)現(xiàn)刪除numpy數(shù)組中的指定索引元素