Функция 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,
которая строит перекрёстные таблицы частот