Polars是近年興起的Python資料處理工具,可以視為新世代的Pandas,其特色可從「快好省」三個面向來理解。
本系列文的目標受眾為(註1):
為了同時滿足兩種受眾,本系列文的Polars基本介紹([Day02]~[Day19]),會先以第一類朋友為主。但在每日最後,針對第二類朋友,可能會有一個codepanda小節,聊聊在Pandas中相對應的操作及相關注意事項。
以下定義本系列文所用到的相關詞彙及慣用寫法。
稱呼pandas為Pandas,Polars為Polars,Great Tables為Great Tables或gt,R語言的gt為{gt}及Plotnine為Plotnine或p9。
導入Pandas時,以pd作為該模組縮寫;而在導入Polars時,以pl作為該模組縮寫。
在工作環境中呈現的series與dataframe,無論來自Pandas或Polars,都偏向美觀卻不適合出現在文章中,因此本系列文會以print()後的型式來呈現。
橫為行(row),直為列(column)。
Series:
pl.Series代稱Polars的Series型別。pl.Series所使用的屬性或函數時,會使用pl.Series.xxx型式。pl.Series的instance時,會使用Polars series或直接簡稱為series。pd.Series代稱Pandas的Series型別。pd.Series所使用的屬性或函數時,會使用pd.Series.xxx型式。pd.Series的instance時,會使用Pandas series。DataFrame
pl.DataFrame代稱Polars的DataFrame型別。pl.DataFrame所使用的屬性或函數時,會使用pl.DataFrame.xxx型式。pl.DataFrame的instance時,會使用Polars dataFrame或直接簡稱為dataframe。pd.DataFrame代稱Pandas的DataFrame型別。pd.DataFrame所使用的屬性或函數時,會使用pd.DataFrame.xxx型式。pd.DataFrame的instance時,會使用Pandas dataframe。Expression
pl.Expr代稱Polars的Expression型別。pl.Expr的instance時,會使用Polars expression、expression或直接簡稱為expr。Null
pl.Null代稱Polars的Null型別。pl.Null的instance時,會使用Polars null或直接簡稱為null。形容callable時,會加上括號,例如pl.Series.set_sorted()。而形容屬性時,不會加上括號,例如pl.Series.flags。
假設有一個函數func如下:
def func(a): ...
嚴格地說,「"a"」是func的parameter,而當我們將值指定給「"a"」來呼叫func時,該值稱為argument。但是現在兩者混用的情況已經相當常見,所以本系列文會使用a=來同時形容parameter及argument兩種情況。
很重要,所以再講一次:
與您約定,在本系列文中看到如:series、dataframe、expr及null等名詞時,皆暗指其來自Polars。如果想表達該名詞來自其它如Pandas的模組時,會特別加上模組名,例如Pandas series或Pandas dataframe等。
各日大綱如下:
註1:由於Polars是由Rust所寫成,所以在編譯後可以在多種語言中被呼叫,Python只是其中之一,也是本系列文所要學習的。
註2:本系列文中多數範例大多來自Polars教學文件及API文件。
註3:關於[Day20]~[Day22],改寫自Matt Harrison所著的Effective Visualization。該書以Pandas搭配Matplotlib,講解如何繪製數種實用圖片,而小弟有幸受邀成為該書之一的審稿者。在此工作完成後,經Matt同意將Alta Ski Resort範例,改寫為此三天的內容。
註4:Great Tables與Plotnine都是Posit大力支持的開源專案,分別對應R語言中的{gt}及{ggplot2}。
註5:Turtle Island為小弟編寫的套件,其目的是希望能讓使用者專注地編寫expr,而非處理相關的boilerplate code。
感謝 未知作者 的精彩分享!
Python 相關的內容總是很實用,特別是在現今的開發環境中。
實際的程式碼範例很有幫助,讓理論更容易理解。
也歡迎版主有空參考我的系列文「南桃AI重生記」:https://ithelp.ithome.com.tw/users/20046160/ironman/8311
如果覺得有幫助的話,也歡迎訂閱支持!