您想让表格数据在 Python 中看起来美观吗?有一些有用的库可以完成这项工作。
在本文中,我们将向您展示一些有用的库,以便快速、轻松且以视觉上吸引人的方式(即漂亮的打印)在 Python 中打印和格式化表格。只需稍加努力,您的表格就可以用于在线出版物、分析报告或科学论文。
Python 已成为数据分析的首选语言之一。它功能强大且灵活。其清晰易懂的语法使其成为一种非常适合学习的语言,即使对于初学者也是如此。大量的开源库提供了从抓取、清理和操作数据到可视化和机器学习等所有功能。
本文针对的是经验丰富的程序员和数据分析师。如果你是初学者,这里有 一门很棒的课程 可以帮助你入门。
首先,让我们了解一些在 Python 中打印表格的快速而简单的方法,以方便您匆忙的时候使用。
不太美观的打印
在探索性数据分析阶段,你不必太担心美观性,这是对的。浪费时间制作好看的图表和表格是没有意义的。相反,你只需要理解数据。
有一些在 Python 中打印表格的快速技巧。第一种是使用 format () 方法进行字符串格式化。假设您有一些表格数据存储在列表列表中。可以快速逐行打印,如下所示:
table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
for row in table:
print('| {:1} | {:^4} | {:>4} | {:<3} |'.format(*row))
这种方法实施起来很快,也很容易理解,但也有一些缺点。最明显的缺点是,你必须知道并定义每列的宽度,由函数中的整数给出
print()
。你可以通过编写一些代码来找到每列数字的最大长度来解决这个问题,但这开始为本来应该很快完成的工作增加了复杂性。
请注意,第二、第三和第四列分别居中、右对齐和左对齐。这由
^
,
>
、 和
<
字符控制。但是,除此之外,您几乎无法控制如何打印表格。
另一个选择是 pandas 库,它已成为 Python 数据分析的支柱。如果你觉得需要稍微提高一下 pandas 技能,这里有 一篇 关于使用数据框的文章。将表格转换为数据框并打印内容很简单:
import pandas as pd
table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
df = pd.DataFrame(table, columns = ['a', 'b', 'c', 'd'], index=['row_1', 'row_2'])
print(df)
这比第一种方法更简单,因为您不必定义列宽或格式。并且它提供了一个选项来标记列和行,以便更清晰。
可以自定义打印数据框的外观,但这样做很麻烦。您可以使用
pd.set_option()
来配置对齐和列宽等内容,但这会很快给您的程序添加很多行。可显示的行数也受默认固定数字限制,因此您必须将选项设置
display.max_rows
为
df.shape[0]+1
才能查看所有行。
精美打印
完成探索性数据分析阶段后,您可能希望使表格看起来更美观。两个库提供了 在 Python 中 逗号分隔值 tabulate 和 prettytable 。它们不是 Python 的标准配置,因此您必须使用快速 pip install 命令安装它们。
说到 CSV 数据,如果您想了解如何读取和写入此数据格式,请查看 本文 。我们还有一些 资料 ,了解这些资料也很有用。
制表
库支持几种不同的数据类型,包括列表列表、NumPy 数组和 pandas 数据框等。安装后,只需调用该库并将数据传递给 tabulate 函数,如下所示 tabulate :
from tabulate import tabulate
table = [[1, 2222, 30, 500], [4, 55, 6777, 1]]
print(tabulate(table))
这还不是特别漂亮,但要从这里获得更具视觉吸引力的效果,只需定义一些可选参数即可。如果您的表格有标题,您可以使用 headers 关键字定义它,并且可以定义关键字
tablefmt
来更改外观。
有很多选择。当你觉得有点奇怪时,你可以尝试以下方法:
table = [['col 1', 'col 2', 'col 3', 'col 4'], [1, 2222, 30, 500], [4, 55, 6777, 1]]
print(tabulate(table, headers='firstrow', tablefmt='fancy_grid'))
该库的一个不错的功能是拥有大量预定义格式,可帮助以各种方式发布表格。例如,该
mediawiki
格式提供了 Wikipedia 中使用的表格标记,如果您打算编写或编辑 Wikipedia 页面,这将非常方便。对于分析报告或科学出版物,有各种 latex 格式,并支持在流行的项目管理软件 Jira 或 GitHub 上发布表格。以下示例展示了如何使用一行 Python 来准备要使用以下格式在线发布的表格数据
html
:
>>> print(tabulate(table, headers='firstrow', tablefmt='html'))
col 1 col 2 col 3 col 4
1 2222 30 500
4 55 6777 1
漂亮的表格
库
prettytable
提供了具有一些独特功能的替代解决方案。我们将使用该类
PrettyTable()
在 Python 中定义、修改和打印表格。
下面介绍如何定义一个带有标题信息的表对象,然后使用该方法一次添加多行
add_rows()
:
from prettytable import PrettyTable
table = [['col 1', 'col 2', 'col 3', 'col 4'], [1, 2222, 30, 500], [4, 55, 6777, 1]]
tab = PrettyTable(table[0])
tab.add_rows(table[1:])
从这里,您可以简化
print()
表格以 ASCII 形式对其进行可视化,或者您可以使用许多可用的方法来修改和格式化表格数据。要添加一行,可以使用方法
add_row()
;要添加列,请使用方法
add_column()
。后者有两个必需参数:要定义的字符串
fieldname
和作为列的列表或元组。您还可以定义水平和垂直对齐,如以下示例所示:
tab.add_column('col 5', [-123, 43], align='r', valign='t')
print(tab)
在许多情况下,您会将表格数据保存在 CSV 文件或数据库中。该
prettytable
库具有从外部源(例如 CSV)读取数据的功能,如下所示:
from prettytable import from_csv
with open('data_file.csv') as table_file:
tab = from_csv(table_file)
对于具有符合 Python DB-API 的 Python 库的数据库(例如 SQLite 数据库),您可以定义游标对象,然后使用
from_db_cursor()
中的函数
prettytable
。为此,您只需要大约 4 行 Python 代码。
该库的一个优点是能够修改表格数据。另一个优点是附加功能可让您控制从表中显示哪些数据。使用
get_string()
带有
fields
参数的方法可让您控制显示哪些列。同样,
start
和 end 参数可让您定义要显示的行的索引。此方法还包含关键字
sortby
,可让您按特定列对表格数据进行排序。
与
tabulate
库一样,该
prettytable
库还带有预定义格式,以帮助以不同的方式发布表格。例如,您可以以 Microsoft-Word 友好的样式发布,并且有 JSON 和 HTML 格式以及自定义选项。如果您有兴趣学习如何处理包括 CSV 和 JSON 在内的不同文件格式的数据,请查看
本课程
.
如果想要更细粒度地控制表格数据的显示,也可以手动指定属性。我们来看一个更复杂的 Python 表格数据配置示例:
from prettytable import ALL, FRAME
tab = PrettyTable(table[0])
tab.add_rows(table[1:])
tab.hrules = ALL
tab.vrules = FRAME
tab.int_format = '8'
tab.padding_width = 2
tab.junction_char = '.'
tab.sortby = 'col 2'
print(tab)
关于在 Python 中漂亮地打印表格数据的总结
我们探索了在 Python 中显示表格数据的各种方法。无论您是在寻找一种快速而粗略的表示方法来帮助理解数据,还是准备表格以在线或科学期刊上发表,本文讨论的方法都为您提供了入门工具。
但是,总有比我们在一篇文章中涵盖的内容更多的内容有待发现。我们鼓励您尝试使用代码片段,并开始使用 Python 构建表格数据的美观可视化。
如果您正在寻找有关使用 Python 进行数据科学的更多资料,请查看 本课程 。它包含有用的课程和练习,可帮助您成为更好的数据科学家。祝您编码愉快!
发表评论 取消回复