Tratopedia
側 NBM
設定

文字大小

佈景

高對比

中文排版

豎排會把內文排成由右至左的直行,如同台灣的實體書籍。

版本

v1.177.0

本頁建置時的版本編號,也是 service worker 快取所依據的版本。

資料框函式庫 · Python · 效能工程 · 效能評測 · 比較簡報資料截至2026年9月23日

Python兩大資料框函式庫,2026年9月的現況

Polars 與 pandas:各自適合什麼工作

pandas自2009年開源,至今仍是Python下載量最大的表格函式庫。Polars於2020年6月首次提交程式碼,以Rust撰寫、採用Apache Arrow記憶體格式,目標就是更快。兩者在2026年都有重大改變:pandas 3.0預設啟用專用字串型別與寫入時複製(Copy-on-Write);Polars 2.0目前是第二個候選版,把串流引擎設為預設,並因此不再保證列的順序。在大型分析工作上,速度差距真實而且很大;欠缺的是兩者現行版本的公開量測。

  • 3.0.6pandas現行版本,2026年9月17日發布;3.0系列始於1月21日
  • 1.44.2Polars現行版本,2026年9月9日發布;2.0目前是第二個候選版
  • 94×在Polars 2025年6月自己的基準測試中,約10GB規模下領先pandas 2.2.3的倍數
  • 10×pandas上個月在PyPI的下載量領先倍數:5.255億對5,160萬

依證據強度分級 依證據強度排序。實測結果、公司的自我陳述,以及僅止於承諾的事項,絕不放在同一列。

證據強度記錄的內容出處
已確認現行版本:pandas 3.0.6(2026年9月17日)與Polars 1.44.2(2026年9月9日)。Polars 2.0.0rc1於9月2日推出,rc2於9月20日推出。pandas需要Python 3.11以上,Polars需要3.10以上Python套件索引(PyPI)
已確認pandas 3.0預設啟用專用字串型別(安裝PyArrow時以其為後端);把寫入時複製設為預設,因此鏈式賦值不再有效,SettingWithCopyWarning也被移除;新增初步的pd.col()表達式;解析日期字串時預設精度改為微秒pandas的版本說明
已確認Polars 2.0預設以串流引擎執行所有延遲查詢。除非以maintain_order指定,該引擎在join、group by與unpivot時不保證列的順序。它也會拒絕過去放行的有損型別轉換與長度不符的合併Polars的2.0公告
已確認Polars沒有列索引,以Apache Arrow欄式格式而非NumPy陣列儲存資料,更多運算以平行方式執行,並能在執行前規劃與最佳化延遲查詢Polars給pandas使用者的指南
實測在規模因子10(約10GB的CSV)下,Polars串流引擎跑完整套查詢用了3.89秒,pandas 2.2.3用了365.71秒。在約100GB規模下,pandas沒有參與:它會記憶體不足而失敗Polars自己的PDS-H基準測試,2025年6月
實測在大型資料框上,Polars於合成任務的耗能約為pandas的八分之一,於TPC-H任務約為63%;在小型資料框上,TPC-H任務沒有顯著差異。受測版本:pandas 2.1.1、Polars 0.19.7Nahrstedt等人,EASE 2024,經同儕審查
公司宣稱,此處無法查證自2023年種子輪後,使用者「從每月25萬成長到超過2,300萬」,核心函式庫已用於金融、生命科學與物流業的正式環境Polars;TechCrunch轉述Polars
公司宣稱,此處無法查證「整體而言,我們預期串流引擎會輕鬆快上5倍」:這是2.0公告中的預測,不是量測結果Polars的2.0公告
承諾中,尚未推出「串流引擎的完整out-of-core支援」,也就是能可靠處理大於記憶體的資料,以及基於成本的查詢規劃器與join重新排序。這些都列為仍在開發中Polars的2.0公告
承諾中,尚未推出Polars 2.0正式版,預定9月2日後「數週內」推出;截至9月23日尚未發布Polars的2.0公告;PyPI

2008年至2026年9月 以下每一項速度與耗能量測都早於pandas 3.0,沒有一項比較的是兩者的現行版本。

  1. 2008年pandas在AQR Capital Management開始開發,由Wes McKinney主導
  2. 2009年pandas於年底前開源;0.1版於12月25日上架PyPI
  3. 2015年pandas成為NumFOCUS贊助的專案
  4. 2017年9月21日McKinney寫道,他對pandas的經驗法則是準備資料集大小5到10倍的記憶體
  5. 2020年6月23日Ritchie Vink提交Polars的第一個commit
  6. 2023年8月3日Vink與Chiel Peters宣布成立Polars公司,獲得由Bain Capital Ventures領投、約400萬美元的種子輪;函式庫維持MIT授權
  7. 2024年1月18日scikit-learn 1.4讓其轉換器可以輸出Polars資料框
  8. 2024年6月18日阿姆斯特丹自由大學團隊在EASE 2024發表pandas 2.1.1與Polars 0.19.7的耗能與效能研究
  9. 2024年7月1日Polars 1.0.0
  10. 2024年9月17日Polars與NVIDIA以RAPIDS cuDF打造的GPU引擎開放測試
  11. 2025年6月1日Polars發布PDS-H結果,比較Polars 1.30.0與pandas 2.2.3、DuckDB、Dask和PySpark
  12. 2025年9月29日Polars完成由Accel領投的1,800萬歐元A輪(約2,100萬美元),Bain Capital再度參與
  13. 2026年1月21日pandas 3.0.0:預設啟用字串型別與寫入時複製,初步的pd.col()表達式,最低需求Python 3.11
  14. 2026年9月2日Polars 2.0.0rc1推出,延遲查詢預設使用串流引擎
  15. 2026年9月9日Polars 1.44.2,現行穩定版
  16. 2026年9月17日pandas 3.0.6,現行穩定版
  17. 2026年9月20日Polars 2.0.0rc2推出,2.0正式版尚未發布

大型工作快得多,但量測的是已經更新的舊版本 先看Polars開發者自己量測的論據,再看兩個限定它的因素。

Polars的論據在於架構,而它自己的基準測試替這個論據給出了數字。pandas每寫一步就立刻執行、只用一顆核心、沒有最佳化器;Polars可以拿到整個查詢,在執行前先加以最佳化,再分散到所有核心執行。在Polars 2025年6月、以96核心機器進行的PDS-H測試中,約10GB規模下兩者的差距是365.71秒對3.89秒。Polars表示,約100GB規模時pandas因記憶體不足而失敗,所以沒有列入。同一份測試也有兩點值得讀者記住:第三個引擎DuckDB在10GB時緊追Polars,在100GB時則領先;而Polars較舊的記憶體內引擎在該規模下明顯變慢,這正是2.0把串流設為預設的原因。

  • 3.89 sPolars串流引擎,約10GB,整套查詢
  • 365.71 spandas 2.2.3,相同查詢、相同機器
引擎(Polars 2025年6月PDS-H測試)約10GB,秒約100GB,秒
Polars 1.30.0, streaming3.8923.94
DuckDB 1.3.05.8719.65
Polars 1.30.0, in-memory9.68152.27
Dask 2025.5.146.02548.52
PySpark 4.0.0120.11312.43
pandas 2.2.3365.71未執行:記憶體不足

有兩點限定了這個結論。第一是規模。唯一經同儕審查的比較,是阿姆斯特丹自由大學團隊在EASE 2024發表的研究:他們以600萬列執行同類的TPC-H任務,耗能沒有顯著差異,作者還指出pandas略占優勢;到了6,000萬列,以及在他們自己的合成任務上,Polars明顯領先。第二是時效,這是本文的推論,不是任何來源的說法:此處任何量測中最新的pandas是2024年9月的2.2.3;該研究用的是pandas 2.1.1與Polars 0.19.7。pandas 3.0以Arrow為後端的字串與寫入時複製都在這些量測之後,Polars之後也又發了十四個次版本(1.31至1.44)。大型工作上差距很可能仍然很大;但就現行版本而言差多少,此處沒有人量測過。

  • 6M列:同儕審查研究中TPC-H任務沒有顯著差異
  • 2.2.3此處量測過的最新pandas版本;現行版本是3.0.6

與此同時,兩者互相靠攏,代價也隨之移動,這一點同樣是本文的推論。pandas 3.0採用了以Arrow為後端的字串、寫入時複製語意,以及初步的表達式語法,這些都是Polars一開始就圍繞的設計。Polars 2.0則在一項pandas使用者視為理所當然的保證上反其道而行:新預設下,join或group by不再承諾保留列的原始順序。Polars表示這個改變是串流速度所必需,並請依賴順序的使用者以maintain_order明確要求。從一個函式庫移到另一個的程式碼,或在Polars內部升級的程式碼,可能在不報錯的情況下改變輸出。

記憶體、耗能、GPU,以及兩者並用 來自函式庫的創造者、研究作者、NVIDIA,以及兩者周邊的專案。

  • 記憶體

    一條經驗法則,與一份路線圖

    Wes McKinney · Polars

    • pandas的創造者在2017年寫道,他的經驗法則是準備資料集5到10倍的記憶體:10GB的資料集需要64到128GB
    • 這條法則比pandas 3.0早了八年多;此處沒有在原始來源找到Polars的可比數字
    • Polars把「完整的out-of-core支援」(可靠處理超出記憶體的資料)列為2.x仍待完成的工作
  • 耗能

    一項受控研究

    EASE 2024 · 作者於Polars部落格的說明

    • 28項任務,每項以隨機順序重複10次,共560次,於隔離的伺服器上執行
    • 大型資料框:Polars在合成任務的耗能約為pandas的八分之一,在TPC-H任務為63%
    • 耗能與執行時間高度相關,作者認為這要歸功於Polars善用所有CPU核心
  • GPU

    最高13倍,指的是最佳情況

    Polars · NVIDIA

    • 以NVIDIA cuDF為基礎的選用引擎,以collect(engine="gpu")啟用;無法執行的查詢會退回CPU
    • 「最高13倍」是NVIDIA圖表中四個最佳加速之首,出自規模因子80、H100上的22項PDS-H查詢
    • 2024年9月以公開測試版發布;此處未確認它目前的狀態
  • 並用

    不必二選一

    scikit-learn · Narwhals

    • 自2024年1月的1.4版起,scikit-learn的轉換器可用set_output(transform="polars")回傳Polars資料框
    • Narwhals是零相依的相容層,讓以Polars API子集撰寫的函式庫能接受pandas、Polars、cuDF、Modin或PyArrow
    • 它也對Dask、DuckDB、Ibis、PySpark與SQLFrame提供僅限延遲模式的支援
  • 採用

    相差一個數量級

    PyPI Stats · Polars

    • 上個月下載量:pandas 525,518,404次,Polars 51,587,659次,比例為10.2
    • 下載量計算的是安裝次數(包括所有自動化建置),不是人數
    • 2023年8月Polars公布累計下載超過600萬次;到2025年9月,它公布每月使用者超過2,300萬

標題基準測試有多少分量,取決於是誰做的,所以它的條件很重要。PDS-H是Polars自己從TPC-H衍生的測試,Polars也聲明其結果不能與已發表的TPC-H結果比較。它的規則禁止在join前手動裁減資料表、禁止手動調整join順序,並要求每個方案以單一引擎跑完所有查詢:「不准挑選」。該文也點出Polars落敗之處:100GB時的DuckDB,以及第21號查詢(串流引擎尚未實作的範圍join)。在沒有廠商參與下撰寫的EASE論文則指出,在它之前的基準測試都不是系統性或經同儕審查的;在大型資料上,它的結果與Polars的方向一致。

哪一個適合哪種工作 兩個免費、而且越來越能互相搭配的函式庫。問題在於讀者的工作負載,而不是哪一個贏。

  • pandas

    適合既有程式碼與逐步處理的工作

    • 適合:已經以它撰寫的程式碼、以索引標記列或就地修改表格的工作,以及小到受控研究在TPC-H任務上找不到顯著差異的資料集
    • 強項:普及度。下載量是Polars的十倍,而且自2009年起開源至今
    • 3.0以來的強項:不必離開大家熟悉的API,就能得到更可預測的複製行為與更快的字串
    • 代價:即時執行、大多單執行緒,而且依它創造者的經驗法則,在大型資料上相當耗記憶體
  • Polars

    適合大型分析管線

    • 適合:數千萬列或數GB規模的join、group by與掃描,以完整查詢撰寫的管線,以及多核心的機器
    • 強項:大型工作的速度與耗能。在它自己的基準測試中,約10GB時領先pandas 2.2.3兩個數量級;在獨立研究中,大型資料上也省電得多
    • 另一強項:嚴格。遇到有損轉換與長度不符時會報錯,而不是默默產生不同的結果
    • 代價:沒有索引,需要改以表達式思考;在2.0下,join與group by的列順序必須明確要求;超出記憶體的處理仍在完成中

已經確立的

現行版本是pandas 3.0.6與Polars 1.44.2,Polars 2.0處於第二個候選版。pandas 3.0把以Arrow為後端的字串與寫入時複製設為預設;Polars 2.0把串流設為預設,並取消join與group by的列順序保證。在大型分析工作上,無論是Polars自己的基準測試還是同儕審查研究,舊版Polars都比舊版pandas快得多;在該研究的小型TPC-H任務上,差異並不顯著。兩者也可以透過scikit-learn與Narwhals搭配使用。

應保留看待的

任何單一的加速數字:94倍是廠商在單一規模、對pandas 2.2.3的一次測試,13倍是22項查詢中最好的一項GPU結果。串流快5倍與可靠處理超出記憶體的資料都只是預測;使用者與正式環境的說法出自公司本身;5到10倍記憶體是2017年的經驗法則。而「現行版本之間差距仍然很大」是本文的推論:目前還沒有公開量測比較pandas 3.0與Polars。

來源:pandas開發團隊,〈What's new in 3.0.0〉,pandas文件(2026年1月21日);pandas專案,〈About pandas〉,pandas.pydata.org(2026年9月23日讀取);Python套件索引,pandas與polars的版本紀錄(2026年9月23日讀取);PyPI Stats,pandas與polars的下載統計(2026年9月23日讀取);Wes McKinney,〈Apache Arrow and the ‘10 Things I Hate About pandas’〉,wesmckinney.com(2017年9月21日);Ritchie Vink、Chiel Peters,〈Company announcement〉,Polars(2023年8月3日);Ritchie Vink,〈Polars raises €18M Series A to build fast, ergonomic data processing at any scale〉,Polars(2025年9月29日);Anna Heim,〈The startup behind open source tool Polars raises $21M from Accel〉,TechCrunch(2025年9月29日);Ritchie Vink,〈Updated PDS-H benchmark results〉,Polars(2025年6月1日);Ritchie Vink,〈Pre-release of Polars 2.0〉,Polars(2026年9月2日);Ritchie Vink、Robin van den Brink、Lawrence Mitchell,〈GPU acceleration with Polars and NVIDIA RAPIDS〉,Polars(2024年9月17日);Jamil Semaan,〈Polars GPU Engine Powered by NVIDIA cuDF Now Available in Open Beta〉,NVIDIA Technical Blog(2024年9月17日);Felix Nahrstedt、Mehdi Karmouche、Karolina Bargieł、Pouyeh Banijamali、Apoorva Nalini Pradeep Kumar、Ivano Malavolta,〈An Empirical Study on the Energy Usage and Performance of Pandas and Polars Data Analysis Python Libraries〉,EASE 2024, ACM(2024年6月18日);Ivano Malavolta、Karolina Bargieł,〈Benchmarking energy usage and performance of Polars and pandas〉,Polars(2024年8月22日);Polars專案,〈Coming from Pandas〉,Polars使用指南(2026年9月23日讀取);scikit-learn開發者,〈Release Highlights for scikit-learn 1.4〉,scikit-learn.org(2024年1月);Narwhals開發者,〈Narwhals〉,Narwhals文件(2026年9月23日讀取)。

版本

本文內容需要更動時即改寫為新版本,每個版本都保留在自己的網址。

  1. v0001 目前

目前版本也位於 latest/。