iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

今天我們來介紹如何在表格中:

  • 格式化數字(GT.fmt_number())。
  • 格式化整數(GT.fmt_integer())。
  • 格式化科學記號(GT.fmt_scientific())。
  • 格式化百分比(GT.fmt_percent())。
  • 格式化貨幣(GT.fmt_currency())。

這幾個函數有許多共通的參數,相信在經過下面幾個例子的說明之後,大家一定很快就能掌握到如何使用。

以下將繼續使用df_demo為範例說明:
df_demo

GT.fmt_number()

GT.fmt_number(self, columns=None, rows=None, decimals=2, n_sigfig=None, drop_trailing_zeros=False, drop_trailing_dec_mark=True, use_seps=True, scale_by=1, compact=False, pattern='{x}', sep_mark=',', dec_mark='.', force_sign=False, locale=None)

GT.fmt_number()可以將欄位值格式化為數字形式。例如:

(GT(df_demo).fmt_number(cs.numeric()))

fmt number

這裡我們可以使用Polars的cs.numeric()快速選出所有欄位格式為數字型別的欄位。

GT.fmt_number()有一個好用compact參數,可以將數值格式換成使用像是KM的數字寫法:

(GT(df_demo).fmt_number(cs.numeric(), compact=True))

fmt number compact

大部份的GT_fmt_*()都接受一個pattern參數。使用方法是先將欄位值想作是一個字串"{x}",接下來可以於該字串中添加其它變化,有點像是f-string一樣。舉例來說,如果我們想在欄位值前後都加上兩條底線的話,可以這麼寫:

(GT(df_demo).fmt_number(cs.numeric(), pattern="__{x}__"))

fmt number pattern

GT.fmt_integer()

GT.fmt_integer(self, columns=None, rows=None, use_seps=True, scale_by=1, compact=False, pattern='{x}', sep_mark=',', force_sign=False, locale=None)

GT.fmt_integer()可以將欄位值格式化為整數形式。例如:

(GT(df_demo).fmt_integer("sci"))

fmt integer

假如我們想將「"sci"」欄位顯示為乘上100之後的值,可以使用scale_by參數來調整:

(GT(df_demo).fmt_integer("sci", scale_by=100))

fmt integer scale

此外,假如我們不喜歡每三個位數就會出現一個,的話,可以使用use_seps參數來控制:

(GT(df_demo).fmt_integer("sci", scale_by=100, use_seps=False))

fmt integer scale and use_seps

GT.fmt_scientific()

GT.fmt_scientific(self, columns=None, rows=None, decimals=2, n_sigfig=None, drop_trailing_zeros=False, drop_trailing_dec_mark=True, scale_by=1, exp_style='x10n', pattern='{x}', sep_mark=',', dec_mark='.', force_sign_m=False, force_sign_n=False, locale=None)

GT.fmt_scientific()可以將欄位值格式化為科學符號形式。例如:

(GT(df_demo).fmt_scientific("sci"))

fmt scientific

我們可以使用n_sigfig參數來指定科學符號前想顯示的位數:

(GT(df_demo).fmt_scientific("sci", n_sigfig=10))

fmt scientific n_sigfig

另外,可以使用force_sign_m來控制是否要強制添加正負符號:

(GT(df_demo).fmt_scientific("sci", force_sign_m=True))

fmt scientific force_sign_m

GT.fmt_percent()

GT.fmt_percent(self, columns=None, rows=None, decimals=2, drop_trailing_zeros=False, drop_trailing_dec_mark=True, scale_values=True, use_seps=True, pattern='{x}', sep_mark=',', dec_mark='.', force_sign=False, placement='right', incl_space=False, locale=None)

GT.fmt_percent()可以將欄位值格式化為百分比形式。例如:

(GT(df_demo).fmt_percent("perc"))

fmt percent

此外,可以使用decimals參數調整顯示的小數位數:

(GT(df_demo).fmt_percent("perc", decimals=1))

fmt percent decimals

也可以使用incl_space參數在數字與百分比符號之間增加空格:

(GT(df_demo).fmt_percent("perc", decimals=1, incl_space=True))

fmt percent decimals and incl_space

GT.fmt_currency()

GT.fmt_currency(self, columns=None, rows=None, currency=None, use_subunits=True, decimals=None, drop_trailing_dec_mark=True, use_seps=True, scale_by=1, pattern='{x}', sep_mark=',', dec_mark='.', force_sign=False, placement='left', incl_space=False, locale=None)

GT.fmt_currency()可以將欄位值格式化為貨幣形式。例如:

(GT(df_demo).fmt_currency("sci"))

fmt currency

此外可以藉由搭配scale_bycurrency參數,來轉換顯示倍數及貨幣幣種。例如進行台幣與日幣的轉換:

(GT(df_demo).fmt_currency("sci", decimals=0, currency="JPY", scale_by=4.4))

fmt currency decimals, currency and scale_by

最後,也可以試著使用locale參數,讓gt自己決定適合的貨幣顯示方式。例如將locale設定為ja(日本):

(GT(df_demo).fmt_currency("sci", locale="ja"))

fmt currency locale

locale功能目前並沒有很明確的文件說明,其內部是依靠x_locales.csv這個資料集來訂立locale參數及取得各地區或國家所相對應的設定。

Code

本日程式碼傳送門


上一篇
[Day10] - 欄位相關操作
下一篇
[Day12] - 格式化時間
系列文
眾裏尋它:Python表格利器Great Tables30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言