27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pandasでダミー変数を作成する(get_dummies)

Posted at

###pandas でダミー変数を作成する

この記事ではpandas 0.18.1を利用しています。

Rを使っていた人が Python(scikit-learn)で同じことをやろうとした場合、カテゴリカルな変数の扱いに困るケースがあると思います。
カテゴリカルなデータは sklearn(numpy.ndarray をインプットとする場合)ではそのままでは扱えないので、ダミー変数に変換します。

データは以下のようなデータ。
sexは男性が1、女性が2、ageは各年代に対応する値が1~3で入っているとします。

df1
	id	sex	age
0	1001	1	3
1	1002	2	2
2	1003	1	3
3	1004	2	1
4	1005	2	1
df1 = df1.reset_index(drop=True)    # 後からインデックスでマージするので、念のため初期化しておく

dummy_df = pd.get_dummies(df1[['sex', 'age']], drop_first = True)   
print dummy_df
	sex_2	age_2	age_3
0	0.0	0.0	1.0
1	1.0	1.0	0.0
2	0.0	0.0	1.0
3	1.0	0.0	0.0
4	1.0	0.0	0.0

うまくダミー変数にできています。
各変数についてダミー変数を設けたのち、drop_firstで最初の変数を除いています。
(残しておくと変数が従属関係になり都合が悪いので、ここでは除く処置を取っています)
なお、drop_firstはpandas 0.18.0 以降の対応なのでご注意ください。


df2 = pd.merge(df1, dummy_df, left_index=True, right_index=True)
print df2
    id sex age  sex_2  age_2  age_3
0  1001   1   3    0.0    0.0    1.0
1  1002   2   2    1.0    1.0    0.0
2  1003   1   3    0.0    0.0    1.0
3  1004   2   1    1.0    0.0    0.0
4  1005   2   1    1.0    0.0    0.0

マージすると、ちゃんとダミー変数にできていることが確認できます。

27
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?