🙂

エンコーディング利用例:ある列の値を数値化→条件によって別のカラムに数値を加える

2024/01/08に公開

PandasとScikit-learnのOrdinalEncoderを使用して、データ内のある列を数値に変換する方法を紹介します。

例として、train_dfのlocale列にを変換していきます。train_dfのlocale列には、「national」、「regional」、「local」、およびNaN値が含まれています。

これを、OrdinalEncoderで、数値に変換します。変換後、リストを表示します。

from sklearn.preprocessing import OrdinalEncoder
encoder = OrdinalEncoder()
train_df['locale'] = encoder.fit_transform(train_df[['locale']])
list(zip(encoder.categories_[0], range(len(encoder.categories_[0]))))

コードを実行すると、次のように、元の値と変換後の数値がリスト化されます。

【結果例】
[('Local', 0), ('National', 1), ('Regional', 2), (nan, 3)]

次に、条件に基づいて処理を行っていきます。
今回はtrain_dfにfestivalカラムを追加し、localeの値に応じて、festivalカラムに数字を加えてみます。例えば、localeが0('Local'に対応)の場合にfestivalカラムに1を加える処理を行います。

train_df['festival'] = 0
for index, row in train_df.iterrows():
    if row['locale'] == 0:
        train_df.at[index, 'festival'] += 1

【結果例】

エンコーディングを行うことで、文字データを数値に変換し、処理を行いやすくなります。

Discussion