Как создать категориальные переменные в pandas (с примерами)
Вы можете использовать любой из следующих методов для создания категориальной переменной в pandas:
Метод 1. Создайте категориальную переменную с нуля
df[' cat_variable '] = [' A ', ' B ', ' C ', ' D ']
Способ 2. Создайте категориальную переменную на основе существующей числовой переменной.
df[' cat_variable '] = pd. cut (df[' numeric_variable '], bins=[ 0,15,25 ,float(' Inf ') ] , labels=[' Bad ', ' OK ', ' Good '])
Следующие примеры показывают, как использовать каждый метод на практике.
Пример 1. Создание категориальной переменной с нуля
Следующий код показывает, как создать DataFrame pandas с категориальной переменной Team и числовой переменной Points :
import pandas as pd
#create DataFrame with one categorical variable and one numeric variable
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
' points ': [12, 15, 19, 22, 24, 25, 26, 30]})
#view DataFrame
print (df)
team points
0 to 12
1 B 15
2 C 19
3 D 22
4 E 24
5 F 25
6 G 26
7:30 a.m.
#view data type of each column in DataFrame
print ( df.dtypes )
team object
int64 dots
dtype:object
Используя df.dtypes, мы можем увидеть тип данных каждой переменной в DataFrame.
Мы можем видеть:
- Переменная команды является объектом .
- Переменная Points является целым числом .
В Python объект эквивалентен символу или «категориальной» переменной. Таким образом, переменная команды является категориальной переменной.
Пример 2. Создание категориальной переменной из существующей числовой переменной.
Следующий код показывает, как создать категориальную переменную с именем status из существующей числовой переменной с именем Points в DataFrame:
import pandas as pd
#create DataFrame with one categorical variable and one numeric variable
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
' points ': [12, 15, 19, 22, 24, 25, 26, 30]})
#create categorical variable 'status' based on existing numerical 'points' variable
df[' status '] = pd. cut (df[' points '],
bins=[ 0,15,25 ,float(' Inf ') ] ,
labels=[' Bad ', ' OK ', ' Good '])
#view updated DataFrame
print (df)
team points status
0 To 12 Bad
1 B 15 Bad
2 C 19 OK
3 D 22 OK
4 E 24 OK
5 F 25 OK
6 G 26 Good
7:30 a.m. Good
Используя функцию Cut() , мы создали новую категориальную переменную под названием status , которая принимает следующие значения:
- « Плохо », если значение в столбце «баллы» меньше или равно 15.
- В противном случае, « ОК », если значение в столбце баллов меньше или равно 25.
- В противном случае « Хорошо ».
Обратите внимание, что при использовании функции Cut() количество меток должно быть на единицу меньше количества ячеек .
В нашем примере мы использовали четыре значения для блоков , чтобы определить края блоков, и три значения для меток , чтобы указать метки, которые будут использоваться для категориальной переменной.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи panda:
Как создать фиктивные переменные в Pandas
Как преобразовать категориальную переменную в числовую в Pandas
Как преобразовать логические значения в целочисленные значения в Pandas