Pandas: как использовать factorize() для кодирования строк как чисел


Функцию pandas factorize() можно использовать для кодирования строк в виде числовых значений.

Вы можете использовать следующие методы для применения функции factorize() к столбцам в кадре данных pandas:

Метод 1: Факторизация одного столбца

df['col1'] = pd.factorize(df['col'])[0]

Метод 2: Факторизация определенных столбцов

df[['col1', 'col3']] = df[['col1', 'col3']].apply (lambda x: pd.factorize(x)[0])**

Способ 3: факторизовать все столбцы

df = df.apply ( lambda x: pd.factorize (x)[ 0 ])

В следующем примере показано, как использовать каждый метод со следующими пандами DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'conf': ['West', 'West', 'East', 'East'],
 'team': ['A', 'B', 'C', 'D'],
 'position': ['Guard', 'Forward', 'Guard', 'Center'] })

#view DataFrame
df

# conf team position
#0 West A Guard
#1 West B Forward
#2 East C Guard
#3 East D Center**

Пример 1: Факторизация одного столбца

Следующий код показывает, как факторизовать один столбец в DataFrame:

#factorize the conf column only
df['conf'] = pd.factorize(df['conf'])[0]

#view updated DataFrame
df

 conf team position
0 0 A Guard
1 0 B Forward
2 1 C Guard
3 1 D Center

Обратите внимание, что факторизован только столбец 'conf'.

Каждое значение, которое раньше было «Запад», теперь равно 0, а каждое значение, которое раньше было «Востоком», теперь равно 1.

Пример 2. Факторизация определенных столбцов

Следующий код показывает, как факторизовать определенные столбцы в DataFrame:

#factorize conf and team columns only
df[['conf', 'team']] = df[['conf', 'team']].apply(lambda x: pd.factorize(x)[0])

#view updated DataFrame
df

# conf team position
#0 0 0 Guard
#1 0 1 Forward
#2 1 2 Guard
#3 1 3 Center**

Обратите внимание, что столбцы «conf» и «team» были факторизованы.

Пример 3. Факторизация всех столбцов

Следующий код показывает, как факторизовать все столбцы в DataFrame:

#factorize all columns
df = df.apply(lambda x: pd.factorize(x)[0])

#view updated DataFrame
df

# conf team position
#0 0 0 0
#1 0 1 1
#2 1 2 0
#3 1 3 2**

Обратите внимание, что все столбцы факторизованы.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как преобразовать столбцы Pandas DataFrame в строки
Как преобразовать категориальную переменную в числовую в Pandas
Как преобразовать столбцы Pandas DataFrame в целые числа