Функции map() и replace() в pandas: замена значений
Series.map(словарь) заменяет каждое значение по словарю сопоставления — быстро и векторно. df.replace() делает то же, но гибче: работает по всему DataFrame, поддерживает частичную замену и регулярки. Аналитик использует их для перекодировки категорий (город → регион), нормализации значений и маппинга кодов в названия.
Ключевая ловушка map: значения, которых нет в словаре, становятся NaN — если нужно сохранить исходное, используй .map(словарь).fillna(df['col']) или замени на replace (он не трогает несопоставленные). map работает только на Series, replace — и на Series, и на всём DataFrame. Для замены по условию, а не по точному значению, бери np.where/np.select.
Где спрашивают на собеседовании
.map и replace спрашивают в задачах на перекодировку категорий и нормализацию грязных данных. Ценят знание, что map превращает несопоставленные значения в NaN (а replace — нет) и что map быстрее apply для простого маппинга.
FAQ: частые вопросы про .map / replace
Чем map отличается от replace?
map заменяет по словарю И превращает несопоставленные значения в NaN (полная перекодировка). replace меняет только указанные значения, остальные оставляет как есть (частичная замена). map — только на Series, replace — на всём DataFrame.
Почему после map появились NaN?
Значения, отсутствующие в словаре map, становятся NaN. Чтобы сохранить исходные, добавь .fillna(df['col']) после map или используй replace, который не трогает несопоставленные.
Чем map лучше apply для замены?
Для простого сопоставления «значение → значение» map быстрее и читается чище, чем apply с функцией: он оптимизирован под словарь и Series.