当我们在对一些具有分类属性的数据进行分析时,常常需要将这些分类数据进行one-hot编码,以便在后续的数据分析中更加方便。Pandas中通过get_dummies()
函数可以非常方便地对数据进行one-hot编码。
基本语法
Pandas中的get_dummies()
语法如下:
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
参数说明:
- data:指定需要进行one-hot编码的数据。
- prefix:默认为None,指定生成的哑变量列的前缀。
- prefix_sep:指定生成的哑变量列的分隔符,默认为"_"
- dummy_na:默认为False,用于指定是否增加一列表示NaN值。
- columns:指定对哪些列进行one-hot编码,默认为所有的非数值型列。
- sparse:默认为False,表示哑变量是否为稀疏矩阵。
- drop_first:默认为False,表示是否删除哑变量矩阵中的一个列。
- dtype:默认为None,表示生成的数据类型。
示例1:对整个DataFrame进行one-hot编码
下面是一个对整个DataFrame进行one-hot编码的示例:
import pandas as pd
data = pd.DataFrame({'animal': ['cat', 'dog', 'cat', 'fish', 'dog', 'cat'],
'age': [2, 3, 4, 5, 2, 1],
'speed': [20, 30, 15, 10, 25, 20]})
onehot_data = pd.get_dummies(data)
print(onehot_data)
输出结果如下:
age speed animal_cat animal_dog animal_fish
0 2 20 1 0 0
1 3 30 0 1 0
2 4 15 1 0 0
3 5 10 0 0 1
4 2 25 0 1 0
5 1 20 1 0 0
从输出结果可以看出,Pandas通过get_dummies()
函数,将原始的数据DataFrame转换成了哑变量的形式。
示例2:对DataFrame的指定列进行one-hot编码
下面是一个对DataFrame中指定列进行one-hot编码的示例:
import pandas as pd
data = pd.DataFrame({'animal': ['cat', 'dog', 'cat', 'fish', 'dog', 'cat'],
'age': [2, 3, 4, 5, 2, 1],
'speed': [20, 30, 15, 10, 25, 20]})
onehot_data = pd.get_dummies(data, columns=['animal'])
print(onehot_data)
输出结果如下:
age speed animal_cat animal_dog animal_fish
0 2 20 1 0 0
1 3 30 0 1 0
2 4 15 1 0 0
3 5 10 0 0 1
4 2 25 0 1 0
5 1 20 1 0 0
从输出结果可以看出,Pandas通过get_dummies()
函数,只对指定的列——"animal"列进行了one-hot编码,而"age"和"speed"列保持不变。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas使用get_dummies进行one-hot编码的方法 - Python技术站