Мы уже делились, что вышел pandas 3.0. Сегодня чуть более детально о том, что реально изменилось:
📍Наконец-то убили SettingWithCopyWarning
Тот самый «адский ворнинг» при работе со срезами DataFrame — всё.
В pandas 3 полностью внедрён Copy-on-Write:
— фильтрации больше не копируют данные сразу
— копия создаётся только при мутации
— .copy() после каждого шага больше не нужен
— предупреждение исчезло
👍 Это одно из самых важных UX-улучшений за годы.
📍Новый синтаксис выражений — pandas.col()
Method chaining в pandas всегда выглядел громоздко из-за lambda:
.assign(max_people=lambda df: df.max_people + df.max_children)
Теперь можно писать как в Polars / PySpark:
.assign(max_people=pandas.col("max_people") + pandas.col("max_children"))
📍UDF больше не приговор к «очень медленно»
.apply() раньше = боль и падение производительности.
В pandas 3 появился интерфейс execution engines.
Теперь UDF можно JIT-компилировать:
df.apply(func, axis=1, engine=bodo.jit())
Код остаётся понятным Python и производительность может быть выше векторизованного варианта.
📍Строки и Arrow
Полного «Arrow внутри pandas» не случилось.
Вместо этого:
— новый dtype: str
— под капотом может быть Arrow или legacy, в зависимости от окружения
— больше совместимости, меньше боли при апгрейде
— но всё ещё 3 разных способа хранить строки
🔗 Подробно с примерами в статье
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
