Как использовать функцию табуляции для создания красиво отформатированных таблиц в Python

Возможность быстро организовать наши данные в более читаемый формат, например, при обработке данных, может быть чрезвычайно полезной для анализа данных и планирования следующих шагов. Python предлагает возможность легко преобразовывать определенные табличные типы данных в хорошо отформатированные текстовые таблицы, и это с помощью функции tabulate.

установить таблицу

Сначала мы устанавливаем библиотеку tabulate с помощью команды pip install в командной строке:

pip install tabulate

функция импорта табуляции

Затем мы импортируем функцию tabulate из библиотеки tabulate в наш код:

from tabulate import tabulate

И теперь мы готовы использовать функцию tabulate!

табличные типы данных, поддерживаемые tabulate

Функция tabulate может преобразовать любое из следующего в легко читаемую текстовую таблицу: (из документации табуляции)

  • список списков или другой итеративный элемент
  • список или другой повторяемый словарь (ключи как столбцы)
  • dict из итераций (ключи как столбцы)
  • двумерный массив NumPy
  • Массивы записей NumPy (имена в виде столбцов)
  • pandas.DataFrame

список списков

Например, если у нас есть следующий список списков:

table = [['First Name', 'Last Name', 'Age'], ['John', 'Smith', 39], ['Mary', 'Jane', 25], ['Jennifer', 'Doe', 28]]

Мы можем превратить ее в гораздо более читаемую текстовую таблицу с помощью функции tabulate:

print(tabulate(table))

Поскольку первый список в списке списков содержит имена столбцов в качестве своих элементов, мы можем установить его в качестве имен столбцов или заголовков, передав 'firstrow' в качестве аргумента для заголовки:

print(tabulate(table, headers='firstrow'))

Функция tabulate также содержит параметр tablefmt, который позволяет нам улучшить внешний вид нашей таблицы с помощью псевдо- графика:

print(tabulate(table, headers='firstrow', tablefmt='grid'))

Я предпочитаю использовать аргумент ‘fancy_grid’ для tablefmt:

print(tabulate(table, headers='firstrow', tablefmt='fancy_grid'))



словарь итераций

Мы можем создать ту же таблицу выше, используя словарь:

info = {'First Name': ['John', 'Mary', 'Jennifer'], 'Last Name': ['Smith', 'Jane', 'Doe'], 'Age': [39, 25, 28]}

В случае словаря ключи будут заголовками столбцов, а значения будет элементами этих столбцов. Мы указываем, что ключи будут заголовками, передавая ‘keys’ в качестве аргумента для параметра headers:

print(tabulate(info, headers='keys'))

И, конечно же, мы можем использовать параметр tablefmt, чтобы улучшить внешний вид таблицы:

print(tabulate(info, headers='keys', tablefmt='fancy_grid'))

добавление индекса

Мы также можем добавить индекс в нашу таблицу с помощью параметра showindex:

Мы можем добавить собственный индекс, передав iterable в параметр showindex. Например, если мы хотим, чтобы индекс начинался с 1, мы можем передать объект диапазона в качестве аргумента:



недостающие значения

Если мы удалим ‘Jennifer’ из приведенного выше info словаря, наша таблица будет содержать пустое поле:

print(tabulate({'First Name': ['John', 'Mary'], 'Last Name': ['Smith', 'Jane', 'Doe'], 'Age': [39, 25, 28]}, headers="keys", tablefmt='fancy_grid'))

Если в нашей таблице есть отсутствующие значения, мы можем выбрать, чем их заполнить, с помощью параметра missingval. Значение по умолчанию для missingval - пустая строка. Если мы изменим его на ‘N / A’, наша таблица будет выглядеть так:

print(tabulate({'First Name': ['John', 'Mary'], 'Last Name': ['Smith', 'Jane', 'Doe'], 'Age': [39, 25, 28]}, headers="keys", tablefmt='fancy_grid', missingval='N/A'))



Я надеюсь, что это руководство о том, как легко создавать красиво отформатированные таблицы с помощью функции табуляции, было полезным. Спасибо за внимание!