Выбор ответа Senior Series, DataFrame и индекс обновлено

Сколько памяти занимают строки

Вопрос

df.info() показывает 8 КБ на строковую колонку из 1000 значений, а процесс съел гораздо больше. Как увидеть реальный размер колонки?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: df.memoryusage(deep=True). Без deep=True pandas для строк и объектов считает только массив ссылок, по 8 байт на элемент, отсюда 8 КБ.

Варианты ответа

  1. sys.getsizeof(df) без параметров
  2. df.size * df.itemsize
  3. df.memory_usage(deep=True)правильный ответ
  4. df.dtypes.nbytes

Разбор

Без deep=True pandas для строк и объектов считает только массив ссылок, по 8 байт на элемент, отсюда 8 КБ. С deep=True учитываются сами строки, и цифра вырастает в разы. df.size это число ячеек, а не байты, а itemsize у DataFrame нет. dtypes показывает типы, их nbytes к данным не относится. sys.getsizeof у DataFrame вызывает тот же подсчёт, но полагаться на него неудобно. Лечение памяти: category для повторяющихся строк, downcast чисел.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.