pandas.get_dummies関数の概要
pandas.get_dummies
関数は、カテゴリ変数をダミー/指標変数に変換するための便利なツールです。この関数は、指定された1つ以上の列がカテゴリ型であると仮定し、それらをダミー変数に変換します。
ダミー変数は、カテゴリ変数を機械学習アルゴリズムが理解できる形式に変換するために使用されます。各カテゴリは新しい列(ダミー列)を生成し、そのカテゴリに属する観測値は1、そうでない場合は0を取ります。
以下に簡単な使用例を示します:
import pandas as pd
# サンプルデータの作成
df = pd.DataFrame({
'A': ['a', 'b', 'a'],
'B': ['b', 'a', 'c']
})
# get_dummies関数の使用
print(pd.get_dummies(df, prefix=['col1', 'col2']))
出力:
col1_a col1_b col2_a col2_b col2_c
0 1 0 0 1 0
1 0 1 1 0 0
2 1 0 0 0 1
この例では、get_dummies
関数は、A
とB
の各列の各一意の値に対して新しいダミー列を作成しました。ダミー列の名前は、元の列名と一意のカテゴリ値を組み合わせたものになります。prefix
パラメータを使用して、ダミー列の接頭辞を指定することもできます。これは、特に元のデータフレームに多数の列がある場合や、列名が明確でない場合に役立ちます。この関数の詳細なパラメータと使用例については、次のセクションで説明します。
ダミー変数の作成方法
pandas.get_dummies
関数を使用してダミー変数を作成する方法を以下に示します。
まず、pandasライブラリをインポートします。
import pandas as pd
次に、カテゴリ変数を含むデータフレームを作成します。
df = pd.DataFrame({
'A': ['cat', 'dog', 'cat', 'dog', 'bird'],
'B': ['apple', 'banana', 'apple', 'apple', 'banana']
})
このデータフレームでは、A
とB
の両方の列がカテゴリ変数です。
次に、get_dummies
関数を使用してこれらのカテゴリ変数をダミー変数に変換します。
df_dummies = pd.get_dummies(df, prefix=['A', 'B'])
prefix
パラメータは、作成されるダミー変数の列名の接頭辞を指定します。この例では、元の列名A
とB
が接頭辞として使用され、ダミー変数の列名はA_cat
、A_dog
、A_bird
、B_apple
、B_banana
となります。
最後に、新しく作成されたデータフレームを表示します。
print(df_dummies)
出力:
A_bird A_cat A_dog B_apple B_banana
0 0 1 0 1 0
1 0 0 1 0 1
2 0 1 0 1 0
3 0 0 1 1 0
4 1 0 0 0 1
このように、pandas.get_dummies
関数を使用すると、カテゴリ変数を簡単にダミー変数に変換できます。この関数は、機械学習モデルの入力として使用するためのデータの前処理に非常に便利です。
get_dummies関数のパラメータ詳細
pandas.get_dummies
関数は、以下の主要なパラメータを持っています:
-
data : これはダミー変数に変換するデータを指定します。これは通常、データフレームまたはシリーズオブジェクトです。
-
prefix : ダミー変数の列名の接頭辞を指定します。これは文字列または文字列のリストで、元の列名の代わりに使用されます。
-
prefix_sep : 接頭辞とダミー変数の値を区切る文字列を指定します。デフォルトは
_
です。 -
dummy_na : これは欠損値を持つダミー変数を作成するかどうかを指定します。デフォルトは
False
で、これは欠損値を無視することを意味します。 -
columns : ダミー変数に変換する列を指定します。これは列名のリストです。
-
drop_first : 最初のカテゴリを削除するかどうかを指定します。これはダミー変数のトラップを避けるために使用されます。
以下に、これらのパラメータを使用した例を示します:
import pandas as pd
# サンプルデータの作成
df = pd.DataFrame({
'A': ['cat', 'dog', 'cat', 'dog', 'bird', None],
'B': ['apple', 'banana', 'apple', 'apple', 'banana', 'apple']
})
# get_dummies関数の使用
df_dummies = pd.get_dummies(df, prefix=['A', 'B'], dummy_na=True, drop_first=True)
# 結果の表示
print(df_dummies)
この例では、dummy_na=True
を設定して欠損値を持つダミー変数を作成し、drop_first=True
を設定して最初のカテゴリを削除しています。
実践的な使用例
以下に、pandas.get_dummies
関数を使用した実践的な使用例を示します。この例では、機械学習モデルの入力として使用するためのデータの前処理を行います。
まず、必要なライブラリをインポートします。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
次に、サンプルデータセットを作成します。
df = pd.DataFrame({
'Species': ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica', 'Iris-setosa', 'Iris-versicolor'],
'PetalLengthCm': [1.4, 4.7, 5.6, 1.5, 4.5],
'PetalWidthCm': [0.2, 1.4, 2.2, 0.2, 1.5],
'Label': [0, 1, 2, 0, 1]
})
このデータセットでは、Species
列がカテゴリ変数で、PetalLengthCm
とPetalWidthCm
列が数値変数です。Label
列は目的変数で、これが予測対象です。
次に、get_dummies
関数を使用してSpecies
列をダミー変数に変換します。
df = pd.get_dummies(df, columns=['Species'])
次に、データを訓練データとテストデータに分割します。
X = df.drop('Label', axis=1)
y = df['Label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
次に、データをスケーリングします。
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
最後に、ロジスティック回帰モデルを訓練し、テストデータでの精度を評価します。
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print('Accuracy:', accuracy_score(y_test, y_pred))
このように、pandas.get_dummies
関数は、カテゴリ変数を含むデータの前処理に非常に便利です。
まとめ
この記事では、Pandasライブラリのget_dummies
関数について詳しく説明しました。この関数は、カテゴリ変数をダミー変数に変換するための強力なツールであり、データ分析や機械学習の前処理において非常に役立ちます。
まず、get_dummies
関数の基本的な使用方法とその出力について説明しました。次に、ダミー変数の作成方法について具体的なコード例を用いて説明しました。さらに、get_dummies
関数の主要なパラメータについて詳しく説明しました。
最後に、実践的な使用例を通じて、get_dummies
関数がどのようにデータの前処理に活用できるかを示しました。この例では、カテゴリ変数を含むデータセットを前処理し、そのデータを用いて機械学習モデルを訓練しました。
get_dummies
関数は、その使いやすさと柔軟性から、データ分析や機械学習における重要なツールとなっています。この関数を理解し、適切に使用することで、カテゴリ変数を含むデータの分析やモデルの訓練がより容易になります。