iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1

What

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的設計哲學,相當值得一看。

Why

gt讓您使用code來製作表格,其Fluent API讓您可以不斷地將表格格式化的步驟串連在一起。也就是說,您將可以在Python生態圈中,打造自己的pipeline,用以進行資料收集、資料分析、結果呈現及產生報告,而不必訴諸如Excel的工具或於中途使用其它程式語言。當有新資料或資料有所更新時,已建立好的pipeline將可以輕鬆生成風格一致的表格及報告。

gt的目標是希望能將{gt}中所有的功能重現在Python中,讓您能用熟悉的Python語法建立出好讀美觀的表格。此外,gt表格可以生成HTML,這個特性可以讓表格很容易地能夠整合到各種web框架。

例如下面這個顏色選擇器,是我於FastHTML Gallery中編寫的範例:

Great Tables shown in FastHTML

只要將表格輸出為HTML並置入FastHTML提供的compoment中 ,就可以將gt所生成的表格呈現在網頁上。

How

由於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"),
    )
)

df_demo

使用Polars來說明的主要原因是:

  • 雖然Pandas用戶眾多,但Polars用戶正以不可忽視的速度上升中。
  • Polars獨特的expression設計,使得gt可以十分方便地選擇行或欄。此外,gt獲得Polars開發團隊的強力支持,協助修改其內部函數,使得兩者可以更佳地整合。事實上,gt已融入至Polars的style namespace當中。

備註

註1:兩者的創始者都為Richard Iannone。目前gt主要由Richard及Michael Chow維護,小弟則偶爾會貢獻一些PR。由2023年12月開始推廣至今,gt於GitHub上得到了1800顆星,除了用戶穩定成長中,相對應地也不斷地有新的feature request,希望有興趣的朋友,可以一起來維護,彼此互相交流學習。


下一篇
[Day02] - 表格基本介紹
系列文
眾裏尋它:Python表格利器Great Tables30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hlb
iT邦新手 5 級 ‧ 2024-11-08 18:39:59

顏色選擇器的連結失效了唷

Jerry Wu iT邦研究生 5 級 ‧ 2024-11-08 18:59:14 檢舉

官網連結有變動,謝謝提醒。

我要留言

立即登入留言