用Python制作漂亮的表格

Great Tables通过编码界面的功能实现了中世纪表格的优雅。有了Great Tables,任何人都可以用 Python 制作漂亮的表格。框架将表格分为六个独立组件的组合。使用此框架,可以构造表、设置值的格式并设置表的样式。该包中提供的方法使人们能够构建跨学科的表格。

您可以迭代地使用Great Tables进行构建,从代码中的表格主体开始,添加样式、格式设置和其他组件。下面是一个示意图,描述了不同表格组件之间的相互关系:

包含可在Great Tables 中使用的完整表格组件集的示意图。

以下六个组成部分:

  • 表头:放置标题和副标题的地方,可以简洁地描述表格内容

  • 列标签:列标签定义每列的内容,扳手是列组上的标题

  • Stub Head:“左上角”位置,可以以多种方式使用标签

  • Row Stub:用于行信息,包括行分组标签

  • 表体:包含单元格,因此它是数据所在的位置

  • 表页脚:用于显示与表内容有关的附加信息的位置

下面的表格利用了Great Tables中提供的不同组件。它包含人员的姓名和地址。


from great_tables import GT, md, system_fonts

(
    GT(simple_table, rowname_col="Name")
    .tab_header(title="Names, Addresses, and Characteristics of Remote Correspondents")
    .tab_stubhead(label=md("*Name*"))
    .tab_spanner(label="Location", columns=["Address", "City", "Postcode"])
    .tab_spanner(label="Personal Characteristics", columns=["DOB", "Height", "Weight"])
    .tab_source_note(source_note=md("**Data last updated**: December 18, 2022."))
    .fmt_date(columns="DOB", date_style="m_day_year")
    .fmt_integer(columns="Weight", pattern="{x} lbs")
    .opt_stylize()
    .opt_align_table_header(align="left")
    .opt_vertical_padding(scale=0.75)
    .tab_options(
        table_font_names=system_fonts(name="rounded-sans"),
        table_font_size="14px",
    )
)

有一个蓝色的行存根组件,使行标签与表主体不同。这很重要,因为所描述的每个人都会形成独特的观察结果,我们希望突出每一行的主题。标题提供了表中所含内容的上下文。两个列扳手将列排列成合理的分组(例如“位置”)。蓝色线条和单元格背景的一致使用使表格具有专业的外观。

查看上面的表代码,您会发现每个修改表的方法都以tab_.这些特定方法添加表格组件(例如,tab_header()创建表格标题),非常易于使用。

格式化

表结构很重要,但不是唯一的。不同学科的表格对于所显示的任何值都有一组特定的显示要求。即使像数字这样简单的东西也可以根据社区的规范和期望以多种不同的方式进行格式化。当我们考虑到日期、时间和货币也需要格式化时,这就延伸到了非常广泛的领域。

根据您的显示要求,像 134,000 这样的原始值可以表示为:

  • 科学记数法 ( fmt_scientific()): 1.34 × 10 5

  • 德语区域设置中的数字 ( fmt_number()):134.000,00

  • 紧凑整数值 ( fmt_integer()):134K

当值需要以图像或图表的形式表达时,问题会变得更糟。例如,如果您是一名医学分析师,您可能需要有效地传达患者的测试结果随着时间的推移是改善还是恶化。将此类数据读取为一行中的数字序列可能会减慢解释速度。但通过使用_nanoplots_(可用作fmt_nanoplot()格式化方法),读者可以立即发现趋势。下面的示例提供了一系列几天的测试结果。

import great_tables
from great_tables import GT, md
from great_tables.data import illness
import polars as pl

illness_mini = (
    pl.from_pandas(illness)
    .head(10)
    .select(
        "test", values=pl.concat_str(pl.exclude("test", "units"), separator=" ", ignore_nulls=True)
    )
    .slice(1, 9)
)

(
    GT(illness_mini, rowname_col="test")
    .fmt_nanoplot(columns="values")
    .tab_header(md("Partial summary of daily tests<br>performed on YF patient"))
    .tab_stubhead(label=md("**Test**"))
    .cols_label(values=md("*Progression*"))
    .cols_align(align="center", columns="values")
    .tab_source_note(source_note="Measurements from Day 3 through to Day 8.")
)

如果将鼠标悬停在数据点上,您仍然会获得每一天的值。我们设计了纳米图来简化绘图可视化,平衡绘图的快速视觉解释与表格的紧凑性。

Great Tables包含许多格式化功能。如果您查看了上表中显示的代码,您可能会注意到有一些以fmt_(ie,fmt_date(),fmt_integer(),fmt_nanoplot()) 开头的方法。我们希望提供多种格式化方法来满足不同用户的需求。我们还希望它们易于使用,但具有许多有用的选项,可以为您的所有格式化任务提供灵活性。

Great Tables 展示

Great Tables专注于展示的表格。如果您正在分析数据库中的数据,您可能需要一个简单的表格显示,该表格显示提供用于导航和过滤数百、数千甚至更多记录的控件。这对于这些情况来说非常有用。

想要得到漂亮的表格输出结果,重点是结构、格式和样式。我们认为漂亮的表格应该做到以下几点:

  • 让信息更容易消化

  • 在需要时提供额外的上下文

  • 遵循文档或组织的风格

我们希望帮助想要以这种方式呈现数据的用户类型。这通常是您在期刊文章、书籍和报告中看到的内容。我们认为静态汇总表领域值得关注。此类表格看起来_很棒_,我们在Great Tablesopt_*() API 中提供了各种方法,因此可以更轻松地为读者提供出色的表格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值