РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
462 of 687 menu

Метод set_categories

Метод set_categories аксессора cat применяется к категориальной Series и полностью заменяет существующий набор категорий на новый. В первом параметре передаётся список новых категорий. При необходимости можно управлять поведением с помощью параметра ordered, который указывает, следует ли упорядочивать категории.

Важно отметить, что метод set_categories не изменяет значения элементов в Series, если они присутствуют в новом списке категорий. Если же какое-то значение отсутствует в новых категориях, оно заменяется на NaN. Также метод позволяет изменять порядок категорий, если передать ordered=True.

Синтаксис

ser.cat.set_categories(new_categories, ordered=None)

Где:

  • new_categories - список новых категорий (обязательный параметр);
  • ordered - логическое значение, указывающее, должны ли категории быть упорядоченными (по умолчанию None, оставляет текущий статус упорядоченности).

Пример

Давайте создадим категориальную Series и заменим её категории:

import pandas as pd ser = pd.Series(['a', 'b', 'c', 'a', 'b'], dtype='category') print(ser.cat.categories)

Результат выполнения кода:

Index(['a', 'b', 'c'], dtype='object')

Теперь установим новые категории:

import pandas as pd ser = pd.Series(['a', 'b', 'c', 'a', 'b'], dtype='category') ser = ser.cat.set_categories(['a', 'b', 'c', 'd', 'e']) print(ser.cat.categories)

Результат выполнения кода:

Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

Обратите внимание, что значения элементов остались прежними, так как все они присутствуют в новых категориях.

Пример

Давайте рассмотрим ситуацию, когда новые категории не содержат всех значений из данных:

import pandas as pd ser = pd.Series(['a', 'b', 'c', 'a', 'b'], dtype='category') ser = ser.cat.set_categories(['a', 'b']) print(ser)

Результат выполнения кода:

0 a 1 b 2 NaN 3 a 4 b dtype: category Categories (2, object): ['a', 'b']

Как видно, значение 'c' было заменено на NaN, поскольку его нет в новых категориях.

Пример

Теперь изменим порядок категорий, сделав их упорядоченными:

import pandas as pd ser = pd.Series(['a', 'b', 'c', 'a', 'b'], dtype='category') ser = ser.cat.set_categories(['c', 'b', 'a'], ordered=True) print(ser.cat.categories) print(ser.cat.ordered)

Результат выполнения кода:

Index(['c', 'b', 'a'], dtype='object') True

Теперь категории упорядочены в порядке 'c' < 'b' < 'a'.

Пример

Метод set_categories также удобно использовать для переименования категорий, передавая новые значения вместо старых:

import pandas as pd ser = pd.Series(['a', 'b', 'c', 'a', 'b'], dtype='category') ser = ser.cat.set_categories(['x', 'y', 'z']) print(ser)

Результат выполнения кода:

0 NaN 1 NaN 2 NaN 3 NaN 4 NaN dtype: category Categories (3, object): ['x', 'y', 'z']

Все значения стали NaN, потому что старые категории ('a', 'b', 'c') не совпадают с новыми ('x', 'y', 'z').

Смотрите также

  • метод rename_categories,
    который переименовывает категории
  • метод reorder_categories,
    который изменяет порядок категорий
  • метод add_categories,
    который добавляет новые категории
  • метод remove_categories,
    который удаляет категории
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить