Great Tables是一個將Pandas或Polars dataframe製作為表格的Python專案,其啟發來自R語言的gt package(註1)。為方便溝通,本系列文將以gt
來代稱Python的Great Tables package
,而以{gt}
來代稱R語言的gt package
。
兩位gt
的主要維護者於YouTube上,有錄製一段約25分鐘的介紹影片,推薦給大家作為gt
的入門教材。此外,gt
在部落格中也有一篇文章專門講解gt
的設計哲學,相當值得一看。
gt
讓您使用code來製作表格,其Fluent API讓您可以不斷地將表格格式化的步驟串連在一起。也就是說,您將可以在Python生態圈中,打造自己的pipeline,用以進行資料收集、資料分析、結果呈現及產生報告,而不必訴諸如Excel的工具或於中途使用其它程式語言。當有新資料或資料有所更新時,已建立好的pipeline將可以輕鬆生成風格一致的表格及報告。
gt
的目標是希望能將{gt}
中所有的功能重現在Python中,讓您能用熟悉的Python語法建立出好讀美觀的表格。此外,gt
表格可以生成HTML,這個特性可以讓表格很容易地能夠整合到各種web框架。
例如下面這個顏色選擇器,是我於FastHTML Gallery中編寫的範例:
只要將表格輸出為HTML並置入FastHTML提供的compoment中 ,就可以將gt
所生成的表格呈現在網頁上。
由於gt
是一個以實用性為主的工具,所以這個系列文將試著採用HOWTOs的方式來呈現,著重於說明如何使用。
各日大綱如下:
於[Day05]~[Day16]中的大部份時間,我將會以下面這個名為df_demo
的Polars DataFrame作為範例來說明。
df_demo = (
pl.DataFrame(
{
"int": [1, 2, 3],
"float1": [4.4, 5.5, 6.6],
"float2": [7.7, 8.88, 9.999],
"perc": [0.5401, -0.0895, 0.7946],
"sci": [10001.001, -20002.002, 30003.003],
"group": ["A", "B", "B"],
"str": ["Python", "Ruby", "Rust"],
"date": pl.date_range(
date(2024, 9, 1), date(2024, 9, 3), eager=True
),
"time": pl.time_range(
start=time(21, 0),
interval=timedelta(hours=1, minutes=10),
eager=True,
),
}
)
.with_columns(
pl.col("date").dt.combine(pl.col("time")).alias("datetime"),
)
)
使用Polars來說明的主要原因是:
gt
可以十分方便地選擇行或欄。此外,gt
獲得Polars開發團隊的強力支持,協助修改其內部函數,使得兩者可以更佳地整合。事實上,gt
已融入至Polars的style namespace當中。註1:兩者的創始者都為Richard Iannone。目前gt
主要由Richard及Michael Chow維護,小弟則偶爾會貢獻一些PR。由2023年12月開始推廣至今,gt
於GitHub上得到了1800顆星,除了用戶穩定成長中,相對應地也不斷地有新的feature request,希望有興趣的朋友,可以一起來維護,彼此互相交流學習。