Нашли ошибку?
базовыйpandas 3.0.6

Настройки отображения

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

Нужно знать:Что такое pandas

Содержание статьи

Коротко

  • Настройки меняются через pd.set_option("display.…", значение) и действуют на всё отображение до конца программы.
  • pd.option_context(...) в блоке with меняет их временно — так безопаснее.
  • Длинная таблица (больше max_rows строк) показывается сокращённо: min_rows строк по краям и ....
  • Настройки влияют только на вывод: данные не округляются и не обрезаются.
  • Показать всё целиком без смены настроек — df.to_string().

В этом справочнике

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

pd.set_option("display.width", 80)
pd.set_option("display.max_columns", 20)
pd.set_option("display.max_rows", 60)
pd.set_option("display.min_rows", 10)
pd.set_option("display.max_colwidth", 50)
pd.set_option("display.precision", 6)

Настройки NumPy — в статье NumPy: настройки отображения.

Синтаксис

pd.set_option("display.max_rows", 100)
pd.get_option("display.max_rows")
pd.reset_option("display.max_rows")
with pd.option_context("display.max_rows", 10, "display.precision", 2):
  print(df)
df.to_string(max_rows=None, index=True)

Параметры

ПараметрЧто делаетПо умолчанию
display.max_rowsсколько строк можно показать целиком; больше — сокращение60
display.min_rowsсколько строк показать при сокращении10
display.max_columnsсколько столбцов показать; 0 — по ширине терминала0 в терминале, иначе 20
display.widthширина вывода в символах80
display.precisionзнаков после запятой у float6
display.float_formatфункция форматирования float, например "{:,.2f}".formatNone
display.max_colwidthмаксимальная длина текста в ячейке50

Примеры

Данные для примеровиспользуются во всех примерах ниже
orders = pd.DataFrame({
    "order": range(1, 101),
    "amount": [round(100 + i * 12.345, 3) for i in range(100)],
})
Длинная таблица
orders                                   # 100 строк > max_rows: показаны края
Вывод
    order    amount
0       1   100.000
1       2   112.345
2       3   124.690
3       4   137.035
4       5   149.380
..    ...       ...
95     96  1272.775
96     97  1285.120
97     98  1297.465
98     99  1309.810
99    100  1322.155

[100 rows x 2 columns]
Временно меньше строк
with pd.option_context("display.max_rows", 6, "display.min_rows", 4):
    print(orders)
Вывод
    order    amount
0       1   100.000
1       2   112.345
..    ...       ...
98     99  1309.810
99    100  1322.155

[100 rows x 2 columns]
Формат чисел
with pd.option_context("display.float_format", "{:,.1f}".format):
    print(orders.tail(3))
Вывод
    order  amount
97     98 1,297.5
98     99 1,309.8
99    100 1,322.2
Широкая таблица
wide = pd.DataFrame([range(30)], columns=[f"c{i}" for i in range(30)])
wide                                     # 30 столбцов > max_columns
Вывод
   c0  c1  c2  c3  c4  c5  c6  c7  c8  c9  ...  c20  c21  c22  c23  c24  c25  \
0   0   1   2   3   4   5   6   7   8   9  ...   20   21   22   23   24   25

   c26  c27  c28  c29
0   26   27   28   29

[1 rows x 30 columns]
Длинный текст в ячейке
notes = pd.DataFrame({"note": ["Очень длинный комментарий покупателя о доставке и упаковке заказа"]})
with pd.option_context("display.max_colwidth", 25):
    print(notes)
Вывод
                       note
0  Очень длинный коммент...
to_string
print(orders.head(12).to_string(index=False, max_rows=6))
Вывод
 order  amount
     1 100.000
     2 112.345
     3 124.690
   ...     ...
    10 211.105
    11 223.450
    12 235.795

Подводные камни

precision не округляет данные

Как и в NumPy, это только отображение. Округлить данные — df.round(2).

Отображение и значение
ratios = pd.DataFrame({"share": [1 / 3, 2 / 3, 1 / 7]})
with pd.option_context("display.precision", 2):
    print(ratios)
ratios.loc[0, "share"]                   # данные не округлены
Вывод
   share
0   0.33
1   0.67
2   0.14
np.float64(0.3333333333333333)

set_option в середине программы

Глобальная настройка меняет вывод во всём остальном коде, включая чужие функции. Для одного print используйте option_context.

Текущее значение настройки
pd.get_option("display.max_rows")
Вывод
60