Python таблицы: руководство по созданию читаемых выводимых данных

Раздел: Обработка данных -> Работа с таблицами

Вывод таблиц в Python: обзор методов

Как вывести таблицу с автоматическим выравниванием и минимальным кодом?

Библиотека tabulate является одним из наиболее удобных инструментов для форматированного вывода табличных данных. Для её установки используется pip: pip install tabulate. Далее достаточно передать список строк (или список словарей) в функцию tabulate.


from tabulate import tabulate

data = [["Иван", 25, "Москва"],
        ["Мария", 30, "Санкт-Петербург"],
        ["Петр", 22, "Казань"]]
headers = ["Имя", "Возраст", "Город"]
print(tabulate(data, headers=headers, tablefmt="grid"))

библиотека таблиц python (библиотека для работы с таблицами в python)

+-------+----------+-----------------+
| Имя   |   Возраст | Город           |
+-------+----------+-----------------+
| Иван  |       25 | Москва           |
| Мария |       30 | Санкт-Петербург  |
| Петр  |       22 | Казань           |
+-------+----------+-----------------+

Python вывести таблицу (вывод таблицы в python)

Параметр tablefmt позволяет выбирать стиль оформления (plain, simple, github, grid, fancy_grid, pipe, orgtbl, jira, rst, mediawiki, html, latex, etc.). Библиотека автоматически определяет ширину столбцов и выравнивает данные.

Типичная ошибка: при использовании Unicode символов (например, кириллицы) в некоторых консолях может нарушиться выравнивание из-за разной ширины символов. Решение: либо использовать шрифты с фиксированной шириной, либо установить переменную окружения PYTHONIOENCODING=utf-8 и выбрать шрифт, поддерживающий кириллицу. В средах с ограниченной поддержкой (например, IDLE) лучше переключиться на вывод в текстовый файл или использовать таблицу без рамок (plain).

Целесообразно использовать tabulate для быстрого прототипирования, логирования, создания отчётов в консоли. Библиотека активно поддерживается и предлагает множество форматов.

Как вывести простую таблицу без сторонних библиотек?

Можно использовать встроенные возможности форматирования строк, например, f-строки с выравниванием.


data = [("Иван", 25, "Москва"), ("Мария", 30, "Санкт-Петербург")]
print(f"{'Имя':<10} {'Возраст':<10} {'Город':<20}")
print("-"*40)
for name, age, city in data:
    print(f"{name:<10} {age:<10} {city:<20}")

таблица python задача (задача на таблицу в python)

Имя        Возраст    Город               
----------------------------------------
Иван       25         Москва              
Мария      30         Санкт-Петербург     

Python работа с таблицами (работа с таблицами в python)

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

Ошибки: легко ошибиться при расчёте ширины, особенно при наличии длинных строк. Для динамического определения ширины можно заранее вычислить максимальную длину значений.

Как получить красивую таблицу с заголовками и границами?

Библиотека PrettyTable предоставляет объектно-ориентированный интерфейс.


from prettytable import PrettyTable

table = PrettyTable()
table.field_names = ["Имя", "Возраст", "Город"]
table.add_row(["Иван", 25, "Москва"])
table.add_row(["Мария", 30, "Санкт-Петербург"])
table.align["Город"] = "l"  # выравнивание влево
print(table)

Python создание таблиц (создание таблиц в python)

+-------+------+-----------------+
|  Имя  | Возраст |     Город      |
+-------+------+-----------------+
|  Иван |   25  | Москва          |
| Мария |   30  | Санкт-Петербург |
+-------+------+-----------------+

сортировка столбца python (сортировка столбца в python)

PrettyTable поддерживает сортировку, группировку, выбор подмножества строк, что удобно для демонстрации данных. Однако для больших таблиц может быть медленнее, чем tabulate.

Проблема: если данные содержат символы новой строки, таблица отображается некорректно. Рекомендуется предварительно обрабатывать строки.

Как вывести таблицу из объектов pandas DataFrame?

Если данные уже находятся в pandas DataFrame, можно использовать встроенный метод to_string или to_markdown.


import pandas as pd

df = pd.DataFrame({"Имя": ["Иван", "Мария"], "Возраст": [25, 30], "Город": ["Москва", "Санкт-Петербург"]})
print(df.to_string(index=False))

Python столбец таблицы (столбец таблицы в python)

   Имя  Возраст           Город
  Иван       25         Москва
 Мария       30 Санкт-Петербург

Python 3 таблица (таблица в python 3)

Для более наглядного вывода можно использовать tabulate непосредственно с DataFrame: tabulate(df, headers='keys', tablefmt='psql'). Pandas также поддерживает HTML и LaTeX вывод.

Примечание: при большом количестве строк pandas обрезает вывод. Чтобы отключить это, задать pd.set_option('display.max_rows', None).

Как настроить таблицу с разными стилями (границы, разделители)?

Библиотека texttable предлагает широкие возможности настройки.


from texttable import Texttable

table = Texttable()
table.set_cols_align(["l", "c", "r"])
table.add_rows([["Имя", "Возраст", "Город"],
                ["Иван", 25, "Москва"],
                ["Мария", 30, "Санкт-Петербург"]])
print(table.draw())

язык программирования python таблица (таблица в языке python)

+-------+------+-----------------+
| Имя   | Возраст |           Город |
+-------+------+-----------------+
| Иван  |  25  |          Москва |
| Мария |  30  | Санкт-Петербург |
+-------+------+-----------------+

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

Ошибка: если не задать выравнивание, по умолчанию используется левое. Для чисел может потребоваться правое выравнивание (указать "r").

- Python таблица значений (таблица значений в python)
- Python таблица переменных (таблица переменных в python)
- Python таблица функций (таблица функций в python)

Расширенные примеры вывода таблиц

Пример 1: Чтение данных из CSV и вывод с помощью tabulate

Пример

import csv
from tabulate import tabulate

with open('data.csv', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    rows = list(reader)

print(tabulate(rows, headers="keys", tablefmt="fancy_grid"))
╒══════════╤════════════════╤══════════════╕
│ Имя      │   Возраст      │ Город        │
╞══════════╪════════════════╪══════════════╡
│ Иван     │             25 │ Москва       │
│ Мария    │             30 │ Санкт-Петербург │
╘══════════╧════════════════╧══════════════╛

Этот подход удобен для быстрого просмотра содержимого CSV-файла в консоли.

Пример 2: PrettyTable с использованием стилей и условного форматирования

Пример

from prettytable import PrettyTable
from prettytable import MSWORD_FRIENDLY

table = PrettyTable()
table.field_names = ["Товар", "Цена", "Количество"]
table.add_row(["Яблоки", 120.50, 10])
table.add_row(["Бананы", 85.00, 5])
table.set_style(MSWORD_FRIENDLY)  # стиль с двойными линиями
print(table)
# (вывод зависит от стиля, примерно)

Примечание: PrettyTable предоставляет несколько встроенных стилей (DEFAULT, MSWORD_FRIENDLY, PLAIN_COLUMNS, RANDOM).

Пример 3: Pandas DataFrame в формате Markdown

Пример

import pandas as pd

df = pd.DataFrame({"Студент": ["Анна", "Борис", "Вера"],
                   "Балл": [88, 92, 76]})
print(df.to_markdown(index=False))
| Студент   |   Балл |
|:----------|-------:|
| Анна      |     88 |
| Борис     |     92 |
| Вера      |     76 |

Markdown-таблицы удобны для вставки в документацию или README-файлы.

Пример 4: Texttable с многострочными ячейками и настройкой ширины

Пример

from texttable import Texttable

t = Texttable(max_width=[20, 30, 10])
t.add_rows([["Название", "Описание", "Код"],
            ["Python", "Язык программирования\nвысокого уровня", "PY"],
            ["SQL", "Управление базами данных\nреляционного типа", "SQL"]])
print(t.draw())
+--------------------+--------------------------------+------------+
| Название           | Описание                       | Код        |
+====================+================================+============+
| Python             | Язык программирования          | PY         |
|                    | высокого уровня                |            |
+--------------------+--------------------------------+------------+
| SQL                | Управление базами данных       | SQL        |
|                    | реляционного типа              |            |
+--------------------+--------------------------------+------------+

Параметр max_width задаёт максимальную ширину столбцов, при превышении текст переносится.

Пример 5: Вывод таблицы результатов SQL-запроса с помощью tabulate

Пример

import sqlite3
from tabulate import tabulate

conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute("SELECT name, age FROM users WHERE age > 20")
rows = cursor.fetchall()
headers = [description[0] for description in cursor.description]
print(tabulate(rows, headers=headers, tablefmt="grid"))
conn.close()
+-------+-----+
| name  | age |
+=======+=====+
| Иван  |  25 |
| Мария |  30 |
+-------+-----+

Данный метод удобен для быстрой инспекции базы данных.

Пример 6: Кастомизация числового формата в tabulate

Пример

from tabulate import tabulate

data = [("Товар", 14.5, 1.23456), ("Другой", 7.2, 0.1234)]
print(tabulate(data, headers=["Наименование", "Цена", "Коэф."], 
               floatfmt=".2f", numalign="right"))
Наименование      Цена    Коэф.
--------------  ------  -------
Товар            14.50     1.23
Другой            7.20     0.12

Параметр floatfmt задаёт формат чисел с плавающей точкой.

Пример 7: Сортировка и фильтрация в PrettyTable для большей наглядности

Пример

from prettytable import PrettyTable

table = PrettyTable()
table.field_names = ["Город", "Население (млн)"]
table.add_row(["Москва", 12.5])
table.add_row(["Санкт-Петербург", 5.4])
table.add_row(["Новосибирск", 1.6])
table.sortby = "Население (млн)"
table.reversesort = True
print(table)
+-----------------+------------------+
|      Город      | Население (млн)  |
+-----------------+------------------+
|     Москва      |      12.5        |
| Санкт-Петербург |       5.4        |
|   Новосибирск   |       1.6        |
+-----------------+------------------+

Это позволяет выделить наибольшие или наименьшие значения.

Вывод таблицы в Python - comments

En
Python вывести таблицу (python)