Что изменилось в pandas 3.0
Вопрос
Что изменилось в pandas 3.0 и на что это влияет в существующем коде?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.