我們首先試一下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