Ответ вслух Senior Series, DataFrame и индекс обновлено

Что изменилось в pandas 3.0

Вопрос

Что изменилось в pandas 3.0 и на что это влияет в существующем коде?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Два больших изменения. Первое: Copy-on-Write стал поведением по умолчанию.

Что должно прозвучать в ответе

  • Copy-on-Write по умолчанию: результат индексации ведёт себя как копия

  • Цепочное присваивание `df["a"][0] = 1` больше не меняет df

  • SettingWithCopyWarning ушёл вместе со старой моделью

  • Строки по умолчанию получают dtype `str` вместо `object`

  • Проверки `dtype == object` в коде надо пересмотреть

  • Перед обновлением прогнать тесты на 2.x с включёнными опциями будущего поведения

Что могут спросить следом

  • Как теперь правильно изменить ячейку по условию?
  • Почему CoW экономит память?
  • Что будет с колонкой строк с пропусками?

Разбор

Два больших изменения. Первое: Copy-on-Write стал поведением по умолчанию. Любой объект, полученный индексацией или методом, ведёт себя как независимая копия, а реальное копирование откладывается до первой записи, поэтому часто память даже экономится. Следствие: цепочное присваивание вида df["a"][mask] = 0 больше не меняет исходный DataFrame, нужно писать одним шагом через df.loc[mask, "a"] = 0. Неоднозначность «view или copy» исчезла, вместе с ней ушёл SettingWithCopyWarning. Второе: строковые колонки получают строковый dtype str вместо object, поэтому проверки dtype == object, сериализация и некоторые операции могут вести себя иначе. Перед миграцией обновляюсь до последней 2.x, включаю опции будущего поведения, прогоняю тесты и чиню предупреждения.

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

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