По порядку Middle Производительность и память обновлено
Порядок оптимизации кода на pandas
Вопрос
Расставьте шаги ускорения медленного кода в разумном порядке.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Измерить и найти узкое место (
%%time,%prun) - 2Перенести фильтры и агрегаты в базу или ближе к началу
- 3Если не хватает: DuckDB, Polars или Spark
- 4Ужать типы и читать только нужные колонки
- 5Убрать построчные циклы и
apply(axis=1)
Показать ответ и разбор
Коротко
Без измерения легко оптимизировать не то. Убрать циклы обычно даёт самый большой выигрыш при минимуме усилий.
Правильный порядок
- 1Измерить и найти узкое место (
%%time,%prun) - 2Убрать построчные циклы и
apply(axis=1) - 3Ужать типы и читать только нужные колонки
- 4Перенести фильтры и агрегаты в базу или ближе к началу
- 5Если не хватает: DuckDB, Polars или Spark
Разбор
Без измерения легко оптимизировать не то. Убрать циклы обычно даёт самый большой выигрыш при минимуме усилий. Затем память и объём данных. Смена инструмента самая дорогая, её оставляют напоследок.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и память»
- Чем заменить apply(axis=1)
- Когда помогает тип category
- Цепочное присваивание в pandas 3.0
- Обнулить тестовые заказы через loc
- Скидка по категории через map
- Категории сумм через np.select
- Ужать DataFrame: category и downcast
- category теряется при concat