如何在 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 中将布尔值转换为整数值