import pandas as pd
import numpy as np
df = pd.DataFrame([[1,2,'A'],[2,1,'A'], [1,3,'B'], [2, 2,'A']],
columns=['grade', 'class', 'area'],
index=['idx01', 'idx02', 'idx03','idx04'])
df
Pythonで、カテゴリー変数をダミー変数に変更する方法です。
使用するのは、Pythonのpandasライブラリのget_dummiesメソッドです。
カテゴリー変数とは、数値で表すことができないデータのことで、文字列が該当します。
ダミー変数とは、0と1で構成される数値のデータのことです。
get_dummiesメソッドは、機械学習の前処理でよく使用されるメソッドです。
今回はこのようなデータフレームを用意します。
df.dtypes
カラムごとのデータ型を確認してみましょう。
数値型のintと文字列のobjectであることがわかります。
get_dummiesメソッドでは、デフォルトで変換されるのはobject型とPandasのcategory型です。
pd.get_dummies(df)
メソッドを使用して変換してみましょう。
文字列のカラムareaがダミー変数に変換されました。
カラム名は、元のカラム名に要素だった値がアンダースコアで追加されたものです。
df = df.astype({'class': 'category'})
classというカラムのデータ型をcategory型に変換みましょう。
df['class']
Pandasのcategory型とは、見た目は同じですが、このような項目が追加されます。
pd.get_dummies(df)
このデータフレームをダミー変数に変換してみましょう。
classとareaが変換されました。
pd.get_dummies(df,columns=['grade'])
数値型のカラムでも、引数columsに指定することで、ダミー変数に変換することができます。
実行します。
gradeのカラムを変換できました。