Как создать категориальные переменные в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *