【毎日Python】Pythonでデータフレームの文字列データをダミー変数に変換|pandas.get_dummies

【毎日Python】Pythonでデータフレームの文字列データをダミー変数に変換|pandas.get_dummies
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のカラムを変換できました。

関連メソッド

【毎日Python】Pythonで変数のデータ型を取得する方法|type

【毎日Python】Pythonでカラムごとのデータ型を取得する方法|dtypes