При кодировании строковых и категориальных колонок в зависимости от способа определение области применения происходит либо автоматически, либо вручную.
Таким образом, при не достаточно аккуратном подходе существует риск неконтролируемого изменения всего массива данных. Рассмотрим на примере преобразования следующего датафрейма:
Типы данных в колонках такие:
Распространенным способом преобразования категориальных колонок является вызов функции get_dummies, хотя формально это не самый лучший выбор, так как она не способна хранить внутреннее состояние, чтобы применяться к последующим наборам (читай здесь):
Как можно заметить, функция самостоятельно определяет колонки для преобразования (строчные или категориальные). Однако их можно было задать в аргументе columns. Другим более корректным способом преобразования является использование энкодеров (из sklearn или других библиотек, например, category_encoders). Их поведение отличается от get_dummies, так как при вызове на всем датафрейме они применяются ко всем колонкам:
Видим, что в обоих случаях преобразована и наша численная колонка 'num'. Соответственно, данным энкодерам требуется передавать только часть датафрейма для преобразований:
Хочу обратить внимание, что здесь в демонстрационных целях происходит работа с одной выборкой. В проекте машинного обучения их, как правило, три, тогда все преобразования должны происходить для каждой из выборок, однако обучение преобразователя (fit) происходит на train выборке (дополнительно читай здесь).