Простые, но полезные библиотеки для создания текстовых таблиц.
Введение
В последнее время я часто провожу время, читая по утрам о новых пакетах Python. Удивительно, но было так много простых, но полезных библиотек, что мне жаль, что я не знал о них раньше.
Я попытался обобщить их по разным темам, и сегодня в этой статье я хотел бы обсудить с вами одну из таких тем: «Как быстро создавать таблицы в Python?».
Теперь давайте посмотрим, что у нас здесь есть.
симпатичный стол
PrettyTable — это пакет Python, который позволяет создавать базовые таблицы ASCII. Различные шаблоны таблиц, такие как выравнивание текста или порядок данных, можно легко настроить с помощью простых кодов. Для более подробной информации давайте рассмотрим несколько примеров ниже.
Но сначала установим этот пакет:
!pip install prettytable from prettytable import PrettyTable as pt
Создание таблицы
Мы можем применить методы add_row
или add_column
для создания нужных таблиц. Вывод таблицы выглядит следующим образом:
- Add_row(): строки постепенно добавляются в таблицу.
tb = pt() #Add headers tb.field_names = ["ID","Name", "Major","Grade"] #Add rows tb.add_row([1,"Chi", "Statistics",3.5]) tb.add_row([2,"John","Business Administration"],3.6) tb.add_row([3,"Lily","Satistics"],3.7) print(tb)
- Add_column(): столбцы постепенно добавляются в таблицу.
tb1 = pt() #Add headers column_names = ["ID","Name", "Major"] #Add columns tb1.add_column(column_names[0],[1,2,3]) tb1.add_column(column_names[1],["Chi","John","Lily"]) tb1.add_column(column_names[2],["Statistics","Business Administration","Statistics"]) tb1.add_column(column_names[3],[3.5,3.6,3.7]) print(tb1)
Именование таблицы
Мы можем назвать таблицу, добавив к ней заголовок с помощью get_string(title = “table name")
Корректировка данных таблицы
С помощью атрибута align
мы можем управлять выравниванием данных вправо, по центру или влево. Например, я хочу изменить значения данных в столбце Major слева, установить align
на l
Аналогичным образом, если вы хотите, чтобы данные были справа, установите для них значения r
и c
для центрирования.
tb.align["Major"] = "l"
Удаление строк
Удаление ненужных строк из таблиц не требует усилий. Все, что вам нужно сделать, это применить del_row
Поскольку мне больше не нужна последняя строка, вот как я удаляю ее из своей таблицы:
tb.del_row(2)
Сортировка данных
sortby
и reversesort
помогают расположить значения данных в определенном порядке. В то время как sortby
указывает, какой столбец сортируется, reversesort
указывает порядок сортировки.
Например, сортировка учащихся от самой высокой оценки к самой низкой.
tb.sortby = "Grade" tb.reversesort = True
Генерация вывода HTML
Благодаря поддержке get_html_string
мы можем легко сгенерировать вывод HTML в консоли.
print(tb.get_html_string())
Табулировать
Tabulate — еще одна библиотека, которую я хотел бы порекомендовать. По сути, он очень похож на PrettyTable, но я думаю, что он более гибок в настройке сетки по сравнению с PrettyTable. Мы рассмотрим несколько примеров, чтобы увидеть, как эти элементы настраиваются с помощью атрибутов Tabulate.
Мы можем установить этот пакет:
!pip install tabulate
Создание таблицы без линий сетки
df = [["Chi", "Vietnam","Graduate"], ["John","USA","Graduate"], ["Lily","Belgium","Graduate"]] #define header names col_names = ["Name", "Country", "Program"] #display table print(tabulate(df, headers=col_names))
Создание таблицы с линии сетки
print(tabulate(df, headers=col_names, tablefmt="fancy_grid"))
Помимо fancy_grid
, есть еще несколько форматов таблиц, которые вы можете попробовать, например, jira
, textile
, html
.
Добавление индекса в таблицу
Добавление индекса:отображение индекса путем применения атрибута showindex = "always”
Текстовая таблица
Лично я считаю, что это самая настраиваемая библиотека среди трех библиотек. Он может управлять шириной столбца, настраивать выравнивание данных как по горизонтали, так и по вертикали, а также гибко изменять линии сетки таблицы.
Создание таблицы
Например, в приведенном ниже коде показано, как я создаю таблицу с помощью библиотеки Texttable. Подобно PrettyTable, to может вставить строку в таблицу, создав список с содержимое и применить add_row()
function объекта TextTable, чтобы добавить его в таблицу.
#Installing pip instal texttable import texttable as tt tb = tt.TextTable() #Adding header and rows to the table tb.header(["ID","Name", "Major","Grade"]) tb.add_row([1,"Chi", "Statistics","3.5"]) tb.add_row([2,"John","Business Administration","3.6"]) tb.add_row([3,"Lily","Satistics","3.7"]) print(tb.draw())
Изменение ширины столбцов
Ширину столбцов в таблице можно настроить с помощью set_cols_width
Общее количество в списке соответствует количеству столбцов в таблице.
tb.set_cols_width([11,12,15,14])
Настройка выравнивания данных
Методы set_cols_align
и set_cols_valign
можно использовать для выравнивания данных по горизонтали и вертикали внутри ячеек таблицы.
С помощью set_cols_align()
вход может быть установлен как set_cols_align(['c','l','r'])
, что соответствует выравниванию по центру, левому или правому краю.
С помощью set_cols_valign()
мы можем назначить t
для выравнивания по верхнему краю, m
для выравнивания по среднему краю и b
для выравнивания по нижнему краю.
Обратите внимание, что список, помещаемый в функции выравнивания, должен иметь ту же длину, что и количество значений в строке.
Контрольные линии
Для изменения отрисовки линий между строками и столбцами, а также между заголовком и первой строкой используется функция set_deco
. В set_deco
есть четыре управляющих элемента:
texttable.BORDER
граница таблицыtexttable.HEADER
строка под заголовкомtexttable.HLINES
линии между строкамиtexttable.VLINES
линии между столбцами
Объединив эти четыре элемента в set_deco()
, вы решаете, какая функция доступна для таблицы. Например, я решил оставить строки ниже заголовка и между строками в приведенном ниже коде. В то же время, то, что я не упоминаю texttable.BORDER
и texttable.VLINES
, означает, что я отключаю линии между столбцами и вокруг таблицы.
tb.set_deco(tb.HEADER | tb.HLINES)
Заключение
Выше приведены некоторые мои предложения по созданию текстовой таблицы. Я надеюсь, что они могут помочь вам в чем-то.
Всем хорошего дня.