介绍一下pandas 的get dummies 函数
时间: 2023-12-31 14:05:12 浏览: 32
pandas 的 get_dummies 函数是一种将分类变量转换为虚拟变量的方法,也称为 one-hot 编码。在数据处理和机器学习中,分类变量通常不能直接用于建模,需要将其转换为数值变量。get_dummies 函数实现了这个过程,将分类变量的每个取值都拆分成一个新的列,并用 0 或 1 来表示该行是否包含该取值。
函数的基本语法是:
```
pd.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
```
其中,参数说明如下:
- data:要进行转换的数据,可以是 DataFrame 或 Series。
- prefix:新列的前缀,用于区分原始列和新列。
- prefix_sep:新列前缀和原始列名称之间的分隔符,默认为“_”。
- dummy_na:是否为缺失值创建虚拟变量,默认为 False。
- columns:要进行转换的列的名称或位置。默认情况下,所有的非数值列都会被转换。
- sparse:是否返回稀疏矩阵。默认为 False。
- drop_first:是否删除第一个虚拟变量列。默认为 False。
- dtype:指定结果的数据类型。
下面是一个示例:
```python
import pandas as pd
data = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]})
dummies = pd.get_dummies(data[['A', 'B']])
result = pd.concat([data['C'], dummies], axis=1)
print(result)
```
输出结果为:
```
C A_bar A_foo B_one B_three B_two
0 1 0 1 1 0 0
1 2 1 0 1 0 0
2 3 0 1 0 0 1
3 4 1 0 0 1 0
4 5 0 1 0 0 1
5 6 1 0 0 0 1
6 7 0 1 1 0 0
7 8 0 1 0 1 0
```
可以看到,get_dummies 函数将原始 DataFrame 中的两列 A 和 B 转换为了虚拟变量,并拼接在一起。每个取值都被拆分成一个新的列,并用 0 或 1 来表示该行是否包含该取值。