Вывести всю таблицу в Pandas

Как вывести всю таблицу в Pandas (со всеми рядами и строками, без сокращения данных)?

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

Как выглядит таблица в сокращенном варианте?

Для начала смоделируем эту неприятную ситуацию: загрузим таблицу с данными в переменную data и попробуем вывести ее на экран. В качестве демонстративной таблицы, я загружу данные о ТОП-550 литературных бестселлерах за 2009-2019 годы, набравших наибольшее число продаж на сайте Amazon. Данные выложены на сайте Kaggle, скачать их можно на странице: https://www.kaggle.com/sootersaalu/amazon-top-50-bestselling-books-2009-2019, либо с моего сайта по ссылке «Топ-550 литературных бестселлеров».

Итак, загружаю данные и вывожу таблицу на экран:

import pandas as pd
import pathlib
from pathlib import Path

data_path = Path(pathlib.Path.cwd(), 'datasets', 'bestsellers with categories.csv')
data = pd.read_csv(data_path)
data

вывести всю таблицу в Pandas
Рис1. Сокращенный вид таблицы с данными.

Согласитесь, не очень удобный для восприятия формат вывода: не смотря на то, что под таблицей гордо располагается информация о том, что таблица содержит 550 рядов и 7 столбцов, нам для обзора доступна лишь небольшая часть из них. Остальное содержимое скрыто за многоточием. Кроме этого, некоторые данные в столбце «Name», похоже, усечены. Давайте исправим это!

Корректируем вывод табличных данных с помощью функции set_option() в Pandas

Для начала небольшой спойлер:

При установке значений опций ‘display.max_rows’, ‘display.max_columns’, ‘display.max_colwidth’ как None, можно сбросить ограничения на число выводимых рядов, столбцов таблицы, а также на длину записи в таблице:

# Сброс ограничений на количество выводимых рядов
pd.set_option('display.max_rows', None)

# Сброс ограничений на число столбцов
pd.set_option('display.max_columns', None)

# Сброс ограничений на количество символов в записи
pd.set_option('display.max_colwidth', None)

У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»

А теперь подробности!

В Pandas существует служебная функция set_option(), позволяющая настроить формат вывода таблицы по своему желанию. Рассмотрим наиболее полезные для работы с таблицами параметры функции set_option():

1. display.max_rows

При установке значения для параметра ‘display.max_rows’ Вы можете ограничить количество выведенных строк с данными значением типа int. Рассмотрим пример:

pd.set_option('display.max_rows', 7)

В данном случае на экран будут выведены 7 строк: 3 первых и 3 последних записи таблицы, разделенные строкой с многоточием.

Для того, чтобы сбросить ограничения на число строк, нужно определить значение опции ‘display.max_rows’ как None:

pd.set_potion('display.max_rows', None)
2. display.max_columns

Настройка этой опции позволяет регулировать число выводимых столбцов. Если параметр ‘display.max_columns’ определен значением типа int, меньшим, чем действительное число столбцов в таблице, то при выводе таблицы, мы увидим столбец из многоточий, как на приведенном в начале статьи «Рис.1».

Чтобы снять ограничения на количество столбцов, нужно для опции ‘display.max_columns’ установить значение None:

pd.set_option('display.max_columns', None)
3. display.max_colwidth

Эта опция может быть задана числовым значением типа int или определена, как None. Числовое значение позволяет ограничить количество символов в столбце таблицы. Рассмотрим пример:

pd.set_option('display.max_colwidth, 10)

Приведенная выше в качестве примера строка, ограничит все записи в таблице 10-ю символами.

Для вывода всех символов в записях, нужно определить значение опции ‘display.max_colwidth’ как None:

pd.set_option('display.max_colwidth', None)

Результат сброса ограничений на вывод табличных данных

Протестируем работу функции set_option() на рассмотренном в начале статьи примере. Сбросим ограничения на количество отображаемых данных перед выводом таблицы на экран:

import pandas as pd
import pathlib
from pathlib import Path

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)

data_path = Path(pathlib.Path.cwd(), 'datasets', 'bestsellers with categories.csv')
data = pd.read_csv(data_path)
data
вывести всю таблицу в Pandas

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

Мы достигли желаемой цели благодаря верным значениям опций в функции set_option()!