如何在 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:从头开始创建分类变量

以下代码展示了如何使用名为team 的分类变量和名为point的数值变量创建 pandas 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]})

#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 中每个变量的数据类型

我们可以看到:

  • team 变量是一个对象
  • 点变量是一个整数

在 Python 中,对象相当于字符或“分类”变量。因此,团队变量是一个分类变量。

示例 2:从现有数值变量创建分类变量

以下代码演示了如何从 DataFrame 中名为的现有数值变量创建名为status的分类变量:

 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()函数时,标签的数量必须比bin的数量少 1

在我们的示例中,我们使用四个值来定义框的边缘,使用三个标签值来指定用于分类变量的标签。

其他资源

以下教程解释了如何执行其他常见的 panda 任务:

如何在 Pandas 中创建虚拟变量
如何在 Pandas 中将分类变量转换为数值
如何在 Pandas 中将布尔值转换为整数值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注