2017-06-17 1 views
2

これは、これは私が持っているコードで3つのcolsの3行複数の列に対してOneHotEncoderを使用し、各列の最初のダミー変数を自動的に削除する方法は?

Name Organization Department

Manie   ABC2 FINANCE

Joyce   ABC1 HR

Ami   NSV2 HR

とデータセットです。今ではここまでで結構です

、どのように私は、それぞれの第1のダミー変数列を削除しますか?

# Importing the libraries 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

# Importing the dataset 
dataset = pd.read_csv('Data1.csv',encoding = "cp1252") 
X = dataset.values 


# Encoding categorical data 
from sklearn.preprocessing import LabelEncoder, OneHotEncoder 
labelencoder_X_0 = LabelEncoder() 
X[:, 0] = labelencoder_X_0.fit_transform(X[:, 0]) 
labelencoder_X_1 = LabelEncoder() 
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1]) 
labelencoder_X_2 = LabelEncoder() 
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2]) 

onehotencoder = OneHotEncoder(categorical_features = "all") 
X = onehotencoder.fit_transform(X).toarray() 
+1

パンダ 'get_dummiesを持っています() 'は、' drop_first'というパラメータを持ち、Trueに設定することができます。以下はget_dummiesの使用例です:https://stackoverflow.com/a/43971156/1870832 –

+0

Hey Max Power、X = pd.get_dummies(X、drop_first = True))を試しましたが、エラーを示しています。SyntaxError:構文が無効です – Vijay

+1

下記の私の答えを参照し、テストされた出力。私はあなたの構文エラーがあなたのコードの別の部分から来たと推測しています。 –

答えて

3
import pandas as pd 
df = pd.DataFrame({'name': ['Manie', 'Joyce', 'Ami'], 
        'Org': ['ABC2', 'ABC1', 'NSV2'], 
        'Dept': ['Finance', 'HR', 'HR']   
     }) 


df_2 = pd.get_dummies(df,drop_first=True) 

テスト:pd.get_dummies(X, columns =[1:]であなたのエラーについて

print(df_2) 
    Dept_HR Org_ABC2 Org_NSV2 name_Joyce name_Manie 
0  0   1   0   0   1 
1  1   0   0   1   0 
2  1   0   1   0   0 

UPDATE:

documentation pageパー、columnsパラメータは、 "列名" を取ります。だから、コードは動作します以下:

df_2 = pd.get_dummies(df, columns=['Org', 'Dept'], drop_first=True) 

は出力:

name Org_ABC2 Org_NSV2 Dept_HR 
0 Manie   1   0  0 
1 Joyce   0   0  1 
2 Ami   0   1  1 

あなたが本当に位置あなたの列を定義したい場合、あなたはこのようにそれを行うことができ:

column_names_for_onehot = df.columns[1:] 
df_2 = pd.get_dummies(df, columns=column_names_for_onehot, drop_first=True) 
+0

ありがとう@Max Power。あなたが素晴らしいです! – Vijay

関連する問題