Зачем нужен индекс в pandas
Вопрос
Зачем в pandas индекс? Когда его стоит ставить через set_index, а когда держать данные в колонках?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Индекс это метки строк, по ним идёт выравнивание при арифметике и join
Быстрый доступ по метке через `.loc`, срезы по датам у DatetimeIndex
Индекс может быть неуникальным и составным (MultiIndex)
После groupby ключи уходят в индекс, `reset_index` возвращает их
Держать в колонках удобно для merge, фильтров и экспорта
Ловушка: неожиданные NaN из-за невыровненных индексов
Что могут спросить следом
- Что будет при сложении двух Series с разными индексами?
- Чем
joinотличается отmergeпо индексу? - Зачем DatetimeIndex для временных рядов?
Разбор
Индекс это метки строк. На нём построено главное свойство pandas, выравнивание: при сложении двух Series или присваивании колонки значения сопоставляются по меткам, а не по номерам. Ещё индекс даёт доступ по метке через .loc и срезы по датам, если это DatetimeIndex, и на нём работают join, resample, unstack. Индекс бывает неуникальным и многоуровневым, MultiIndex появляется после groupby по нескольким ключам. Я ставлю set_index, когда у данных есть естественный ключ и я буду обращаться по нему или это временной ряд. Если же данные дальше идут в merge, фильтры и выгрузку, держу ключи колонками и после агрегатов делаю reset_index. Главная ловушка: невыровненные индексы молча дают NaN, поэтому после склеек проверяю is_unique и количество пропусков.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.