Панды за 3 минуты

Используйте to_string(), чтобы остановить Python от скрытия тела напечатанных фреймов данных

Что мы должны сделать, чтобы увидеть весь напечатанный фрейм данных после выполнения скрипта Python?

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

Итак, нам нужно распечатать некоторые фреймы данных или важные переменные во время выполнения скрипта, чтобы проверить, являются ли они «правильными». Однако простая команда печати иногда может отображать только верхнюю и нижнюю строки фрейма данных (как показано в примере ниже), что излишне усложняет процедуру проверки.

Обычно кадры данных имеют формат pandas.DataFrame, и если вы используете команду печати напрямую, вы можете получить что-то вроде этого:

import pandas as pd
import numpy as np

data = np.random.randn(5000, 5)
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])

print(df.head(100))

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

set_option()

Одно из самых простых решений — отредактировать количество строк по умолчанию, которое показывает Pandas.

pd.set_option('display.max_rows', 500)
print(df.head(100))

где set_option — это метод, который позволяет вам управлять поведением функций Pandas, включая настройку максимального количества отображаемых строк или столбцов, как мы сделали выше. Первый аргумент display.max_rows — настроить максимальное количество отображаемых строк, а 500 — это значение, которое мы установили как максимальное количество строк.

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

Например, у меня есть сценарий, структурированный так, как показано на рисунке.

## Code Block 1 ##
...
print(df1.head(20))
...

## Code Block 2 ##
...
print(df2.head(100))
...

## Code Block N ##
...
print(df_n)
...

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

В таком случае нам, вероятно, нужно использовать функцию pd.set_option(), чтобы установить желаемые display или pd.reset_option(), чтобы использовать параметры по умолчанию каждый раз перед печатью фрейма данных, что делает его очень грязным и хлопотным.

## Code Block 1 ##
...
pd.set_option('display.max_rows', 20)
print(df1.head(20))
...

## Code Block 2 ##
...
pd.set_option('display.max_rows', 100)
print(df2.head(100))
...

## Code Block N ##
...
pd.reset_option('display.max_rows')
print(df_n)
...

На самом деле существует более гибкий и эффективный способ отображения всего фрейма данных без указания параметров отображения для Pandas.

нанизывать()

to_string() напрямую передает объект pd.DataFrame в строковый объект, и когда мы его выводим, ему все равно на ограничение отображения из pandas.

pd.set_option('display.max_rows', 10)
print(df.head(100).to_string())

Выше мы можем видеть, что, хотя я установил максимальное количество отображаемых строк как 10, to_string() помогает нам распечатать весь фрейм данных из 100 строк.

Функция to_string() преобразует весь фрейм данных в формат string, чтобы сохранить все значения и индексы во фрейме данных на этапе печати. Поскольку set_option() эффективен только для объектов pandas, наша печать string не ограничена максимальным количеством отображаемых строк, установленным ранее.

Итак, стратегия заключается в том, что вам не нужно ничего устанавливать через set_option(), и вам нужно только использовать to_string(), чтобы увидеть весь фрейм данных. Это избавит вас от размышлений о том, какую опцию установить в какой части скрипта.

Выводы

  1. Используйте set_option('display.max_rows'), если у вас есть постоянное количество строк для отображения во всем скрипте.
  2. Используйте to_string(), если вы хотите распечатать весь фрейм данных Pandas, независимо от того, какие параметры Pandas были установлены.

Спасибо за прочтение! Надеюсь, вам понравится использовать трюк Pandas в своей работе!

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