Вывод таблиц в Python с примерами кода

Как вывести таблицу в python

Как вывести таблицу в python

Создание простой таблицы с использованием стандартного списка

Создание простой таблицы с использованием стандартного списка

Пример создания таблицы с данными о студентах и их оценках:

table = [
["Имя", "Возраст", "Оценка"],
["Алексей", 20, 8.5],
["Мария", 22, 9.0],
["Иван", 19, 7.8]
]

for row in table:
print(" | ".join(map(str, row)))

Результат будет следующим:

Имя | Возраст | Оценка

Алексей | 20 | 8.5

Мария | 22 | 9.0

Иван | 19 | 7.8

Для сохранения выравнивания столбцов можно использовать форматирование строк с фиксированной шириной:

for row in table:
print("{:<10} {:<6} {:<6}".format(row[0], row[1], row[2]))

Эта методика подходит для текстового представления таблицы в консоли и обеспечивает читаемость без сторонних библиотек. Каждый столбец можно расширять, изменяя параметры форматирования, чтобы соответствовать максимальной длине данных.

Форматирование таблиц через библиотеку PrettyTable

Для создания таблицы используется класс PrettyTable. Заголовки задаются через метод field_names:

from prettytable import PrettyTable
table = PrettyTable()
table.field_names = ["ID", "Имя", "Возраст"]

Выравнивание столбцов можно настроить с помощью атрибута align. Например, числовые значения лучше выравнивать по правому краю, текст – по левому:

table.align["ID"] = "r"
table.align["Имя"] = "l"
table.align["Возраст"] = "r"

Добавление строк выполняется методом add_row:

table.add_row([1, "Алексей", 28])
table.add_row([2, "Мария", 34])

Для ограничения ширины столбцов используется свойство max_width, что удобно при длинных текстовых данных:

table.max_width["Имя"] = 10

Смена стиля границ позволяет выбрать подходящий визуальный формат. PrettyTable поддерживает несколько стилей через метод set_style, например:

from prettytable import MSWORD_FRIENDLY
table.set_style(MSWORD_FRIENDLY)

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

import pandas as pd

data = {'Имя': ['Анна', 'Иван', 'Мария'], 'Возраст': [28, 34, 22], 'Город': ['Москва', 'Казань', 'Санкт-Петербург']}

df = pd.DataFrame(data)

print(df)

Результат будет следующим:

Имя Возраст Город
0 Анна 28 Москва
1 Иван 34 Казань
2 Мария 22 Санкт-Петербург

df.head(2)

Выведет первые две строки таблицы.

Если требуется вывести таблицу с индексами и заголовками столбцов в удобочитаемом виде в консоли, можно использовать метод to_string():

print(df.to_string(index=False))

Для экспорта в HTML используется to_html(). Таблицу можно сохранить в файл или сразу отобразить в Jupyter Notebook:

html_table = df.to_html(index=False)

with open("table.html", "w", encoding="utf-8") as f:

f.write(html_table)

Настройка ширины столбцов и выравнивания текста

Настройка ширины столбцов и выравнивания текста

import pandas as pd
pd.set_option('display.max_colwidth', 30)
df = pd.DataFrame({
'Имя': ['Александр', 'Мария'],
'Описание': ['Разработчик Python с опытом 5 лет', 'Специалист по аналитике данных']
})
print(df)

Для текстового выравнивания в pandas удобно использовать метод style.set_properties:

df.style.set_properties(subset=['Имя'], {'text-align': 'center'})
df.style.set_properties(subset=['Описание'], {'text-align': 'left'})

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

from tabulate import tabulate
data = [['Александр', 'Разработчик Python с опытом 5 лет'],
['Мария', 'Специалист по аналитике данных']]
headers = ['Имя', 'Описание']
print(tabulate(data, headers, tablefmt='grid', stralign='center', maxcolwidths=[10, 25]))
rows = [
['Александр'.ljust(12), 'Разработчик Python'.ljust(25)],
['Мария'.ljust(12), 'Аналитик данных'.ljust(25)]
]
for row in rows:
print(' | '.join(row))

Рекомендация: ширину столбцов устанавливать с запасом в 2–5 символов больше максимальной длины данных, чтобы строки не обрезались. Для смешанного выравнивания удобно использовать левое для описания и центрированное для коротких текстов.

Добавление заголовков и нумерации строк

Заголовки и нумерация строк делают таблицы в Python читаемыми и структурированными. Для работы с таблицами чаще используют библиотеки pandas и tabulate.

Пример добавления заголовков с использованием pandas:

import pandas as pd
data = [
[25, 'Иван', 'Москва'],
[30, 'Мария', 'Санкт-Петербург'],
[22, 'Алексей', 'Казань']
]
# Указываем заголовки столбцов
df = pd.DataFrame(data, columns=['Возраст', 'Имя', 'Город'])
print(df)
# Добавление пользовательской нумерации
df.index = range(1, len(df) + 1)
print(df)

С библиотекой tabulate заголовки добавляются через параметр headers:

from tabulate import tabulate
table = [
[25, 'Иван', 'Москва'],
[30, 'Мария', 'Санкт-Петербург'],
[22, 'Алексей', 'Казань']
]
headers = ['№', 'Имя', 'Город']
# Добавляем нумерацию строк вручную
for i, row in enumerate(table, start=1):
row.insert(0, i)
print(tabulate(table, headers=headers, tablefmt='grid'))

Рекомендации по нумерации и заголовкам:

  • Используйте последовательную нумерацию начиная с 1 для удобства восприятия.
  • Заголовки должны отражать содержание столбцов, избегайте абстрактных названий.
  • При больших таблицах лучше добавлять нумерацию, чтобы быстро ссылаться на строки.
  • Для печатных отчетов рекомендуется формат grid или fancy_grid в tabulate – улучшает визуальное разграничение строк и столбцов.

Следуя этим методам, таблицы становятся структурированными, а работа с данными – наглядной и удобной.

Экспорт таблиц в текстовые и CSV файлы

Экспорт таблиц в текстовые и CSV файлы

В Python для сохранения таблиц в текстовые и CSV файлы используют стандартные библиотеки csv и pandas. Эти подходы позволяют сохранять данные для дальнейшего анализа или обмена с другими приложениями.

Экспорт с использованием модуля csv

Экспорт с использованием модуля csv

Модуль csv обеспечивает контроль над разделителями, кавычками и кодировкой.

import csv
data = [
["Имя", "Возраст", "Город"],
["Анна", 28, "Москва"],
["Иван", 35, "Санкт-Петербург"]
]
with open("table.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file, delimiter=";")
writer.writerows(data)
  • Параметр delimiter=";" позволяет выбрать разделитель, часто используется ; для совместимости с Excel.
  • newline="" предотвращает появление пустых строк между записями на Windows.
  • Кодировка utf-8 гарантирует корректное отображение кириллицы.

Экспорт с использованием pandas

Библиотека pandas упрощает сохранение DataFrame в CSV и текстовые файлы с разделителями.

import pandas as pd
df = pd.DataFrame({
"Имя": ["Анна", "Иван"],
"Возраст": [28, 35],
"Город": ["Москва", "Санкт-Петербург"]
})
df.to_csv("table.csv", sep=";", index=False, encoding="utf-8")
  • index=False исключает индексы из файла.
  • sep=";" задает разделитель, удобный для Excel и LibreOffice.
  • Можно использовать df.to_csv("table.txt", sep="\t") для табличного текстового формата с табуляцией.

Рекомендации при экспорте

  1. Всегда указывайте кодировку, особенно при работе с кириллицей.
  2. Для больших таблиц используйте pandas – он быстрее и проще управляет индексами и заголовками.
  3. Для совместимости с Excel используйте разделитель ; и сохранение без индекса.
  4. Для табличного текста с выравниванием столбцов используйте модуль tabulate совместно с сохранением через open("file.txt", "w").

Для создания таблиц с цветовым оформлением в Python удобно использовать библиотеку pandas совместно с Styler. С помощью метода style можно задавать фоновый цвет ячеек, цвет текста и шрифты по условиям.

Пример: закрасим значения больше 50 красным, а меньше – зелёным:

import pandas as pd
data = {'Продукт': ['Яблоки', 'Бананы', 'Вишня'],
'Количество': [45, 75, 30]}
df = pd.DataFrame(data)
styled = df.style.applymap(lambda x: 'background-color: red' if x > 50 else 'background-color: green', subset=['Количество'])
styled

Для добавления границ, изменения шрифта и цвета текста используется метод set_table_styles:

styles = [
{'selector': 'th', 'props': [('background-color', '#4CAF50'), ('color', 'white'), ('font-size', '14px')]},
{'selector': 'td', 'props': [('border', '1px solid black'), ('text-align', 'center')]}
]
df.style.set_table_styles(styles)

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

df.style.highlight_max(subset=['Количество'], color='orange').set_table_styles(
[{'selector': 'td', 'props': [('padding', '8px')]}]
)

Для интерактивного отображения в Jupyter Notebook удобно использовать background_gradient для градиентного окрашивания:

df.style.background_gradient(cmap='Blues', subset=['Количество'])

Совет: при оформлении больших таблиц стоит ограничивать количество цветов и использовать контрастные оттенки, чтобы информация оставалась читаемой. Цветовое кодирование лучше комбинировать с числовыми метками и подсветкой важных значений.

Вопрос-ответ:

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

Для вывода таблиц простым текстом можно использовать стандартные средства Python. Например, используя строки с форматированием через метод format или f-строки. Сначала создаётся список словарей или вложенный список с данными, затем формируется заголовок и строки таблицы. Можно задавать ширину колонок через форматирование, чтобы выравнивать содержимое. Это позволяет получать читаемую таблицу прямо в консоли без установки дополнительных модулей.

Какие способы существуют для вывода таблиц в Python?

В Python есть несколько методов для отображения табличных данных. Один из простых вариантов — использование стандартного модуля `pprint` для аккуратного вывода списков словарей. Более функциональный подход предоставляет библиотека `pandas`, где таблицы можно создавать через `DataFrame`, а затем выводить в консоль или в файл с помощью метода `print()` или `.to_string()`. Для более сложного форматирования можно использовать сторонние пакеты, такие как `tabulate` или `prettytable`, которые позволяют создавать таблицы с красивыми границами и выравниванием столбцов.

Как вывести таблицу из списка словарей с помощью библиотеки `tabulate`?

Библиотека `tabulate` позволяет легко преобразовать список словарей в читабельную таблицу. Например, если у вас есть список: data = [{"Имя": "Аня", "Возраст": 25}, {"Имя": "Иван", "Возраст": 30}], то таблицу можно вывести так: from tabulate import tabulate; print(tabulate(data, headers="keys", tablefmt="grid")). В результате получится таблица с заголовками и аккуратными линиями, что упрощает восприятие информации.

Можно ли выводить большие таблицы в консоль, не теряя форматирования?

Да, но при работе с большими объемами данных нужно учитывать ограничения консоли. В `pandas` есть возможность контролировать отображение через параметры `pd.set_option('display.max_rows', None)` и `pd.set_option('display.max_columns', None)`, чтобы показать все строки и столбцы. Также помогает использование формата `.to_string()`, который формирует всю таблицу как текст с сохранением выравнивания столбцов. Если таблица очень большая, иногда удобнее выводить её частями или сохранять в файл, например, через `.to_csv()`.

В чём отличие вывода таблиц через `pandas` и через `prettytable`?

Основное отличие заключается в функционале и внешнем виде. `pandas` создаёт таблицы как объект `DataFrame`, который удобен для анализа, фильтрации и манипуляций с данными. При выводе в консоль таблица сохраняет строгие границы столбцов, но внешний вид ограничен стандартным текстовым представлением. `prettytable` ориентирован на наглядный вывод: можно легко менять стиль рамок, выравнивание текста и добавлять заголовки. Таким образом, `pandas` лучше для работы с данными, а `prettytable` — для красивого отображения таблиц для пользователя.

Ссылка на основную публикацию