Выбор ответа Middle Производительность и память обновлено
iterrows против itertuples
Вопрос
Если цикл по строкам действительно нужен, что выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: itertuples: не создаёт Series на строку и в разы быстрее. iterrows на каждой строке создаёт Series и приводит значения к общему типу, это медленно и может испортить типы (int станет float). itertuples отдаёт лёгкие именованные кортежи.
Варианты ответа
iterrows: он быстрее и сохраняет типы значений в строке- Без разницы: все способы обхода строк одинаково медленные
for i in range(len(df)): df.iloc[i], без лишних объектовitertuples: не создаёт Series на строку и в разы быстрееправильный ответ
Разбор
iterrows на каждой строке создаёт Series и приводит значения к общему типу, это медленно и может испортить типы (int станет float). itertuples отдаёт лёгкие именованные кортежи. Цикл с iloc[i] самый медленный из всех. Но сначала стоит подумать, нельзя ли обойтись без цикла.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и память»
- Чем заменить apply(axis=1)
- Когда помогает тип category
- Цепочное присваивание в pandas 3.0
- Обнулить тестовые заказы через loc
- Скидка по категории через map
- Категории сумм через np.select
- Ужать DataFrame: category и downcast
- category теряется при concat