我们首先试一下dataframe
参考了他人博客的数据设置,其他很多是自己做的工作
import pandas as pd
df = pd.DataFrame([
['green' , 'A'],
['red' , 'B'],
['blue' , 'A']])
#我们这里形成一个(3,2)的dataframe
df.columns = ['color', 'class']
pd.get_dummies(df)
Out[4]:
color_blue color_green color_red class_A class_B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
可以看到有这么几个事
- 默认就是所有变量都转了
- 默认转了以后的变量用columns名_数值名表示
df = pd.DataFrame([
['green' , 'A'],
['red' , 'B'],
['blue' , 'A']])
pd.get_dummies(df)
Out[6]:
0_blue 0_green 0_red 1_A 1_B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
例如像这种没名字的就是0_xxx,1_xxx
drop_first 的含义和应用
df = pd.DataFrame([
['green' , 'A'],
['red' , 'B'],
['blue' , 'A']])
pd.get_dummies(df,drop_first= True)
Out[8]:
0_green 0_red 1_B
0 1 0 0
1 0 1 1
2 0 0 0
说白了就是把第一维的给丢了,主要用处是一些离散数据会有单独的一个维度来作为垃圾桶,例如 周一周二、、、、、周日和不确定,这个不确定当然就是我们不想要的
prefix和prefix_sep
prefix : 给输出的列添加前缀,如prefix=“A”,输出的列会显示类似
prefix_sep : 设置前缀跟分类的分隔符sepration,默认是下划线"_"
df = pd.DataFrame([
['green' , 'A'],
['red' , 'B'],
['blue' , 'A']])
pd.get_dummies(df,prefix = 'SKYWF')
Out[10]:
SKYWF_blue SKYWF_green SKYWF_red SKYWF_A SKYWF_B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
pd.get_dummies(df,prefix_sep = '@')
Out[11]:
0@blue 0@green 0@red 1@A 1@B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0