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

Функция factorize

Функция factorize преобразует категориальные данные в числовые метки. Она применяется к Series или массивам и возвращает кортеж из двух элементов: массив числовых кодов и массив уникальных значений. Первый параметр values - это данные для кодирования. Второй параметр sort определяет, нужно ли сортировать уникальные значения. Третий параметр na_sentinel задаёт метку для пропущенных значений. Функция полезна для подготовки данных к машинному обучению и анализа категорий.

Синтаксис

pd.factorize(values, sort=False, na_sentinel=-1)

Пример

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

import pandas as pd ser = pd.Series(['a', 'b', 'a', 'c', 'b']) codes, uniques = pd.factorize(ser) print('Codes:', codes) print('Uniques:', uniques)

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

Codes: [0 1 0 2 1] Uniques: Index(['a', 'b', 'c'], dtype='object')

Пример

Закодируем значения с сортировкой уникальных элементов:

import pandas as pd ser = pd.Series(['z', 'a', 'b', 'z', 'a']) codes, uniques = pd.factorize(ser, sort=True) print('Codes with sort:', codes) print('Uniques sorted:', uniques)

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

Codes with sort: [2 0 1 2 0] Uniques sorted: Index(['a', 'b', 'z'], dtype='object')

Пример

Обработаем пропущенные значения, указав специальную метку:

import pandas as pd import numpy as np ser = pd.Series(['x', np.nan, 'y', 'x', np.nan]) codes, uniques = pd.factorize(ser, na_sentinel=-99) print('Codes with NaN:', codes) print('Uniques:', uniques)

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

Codes with NaN: [ 0 -99 1 0 -99] Uniques: Index(['x', 'y'], dtype='object')

Пример

Применим функцию к числовым данным для преобразования в категории:

import pandas as pd ser = pd.Series([10, 20, 10, 30, 20]) codes, uniques = pd.factorize(ser) print('Codes for numbers:', codes) print('Unique numbers:', uniques)

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

Codes for numbers: [0 1 0 2 1] Unique numbers: Index([10, 20, 30], dtype='int64')

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

  • функция get_dummies,
    которая создаёт фиктивные переменные для категорий
  • функция cut,
    которая разбивает данные на интервалы
  • функция qcut,
    которая разбивает на равные по частоте интервалы
  • функция crosstab,
    которая строит перекрёстные таблицы частот
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить