Pandasのラベルエンコーディング手法

はじめに

データ分析では、カテゴリデータを数値に変換する必要があります。そのために使用される一つの手法が「ラベルエンコーディング」です。この記事では、Pandasを使用してラベルエンコーディングを行う方法について説明します。

ラベルエンコーディングとは

ラベルエンコーディングは、カテゴリデータを数値に変換するための手法です。カテゴリデータとは、文字列やカテゴリ型のデータのことを指します。ラベルエンコーディングを行うことで、カテゴリデータを数値データに変換することができます。

ラベルエンコーディングの目的は、機械学習モデルにカテゴリデータを入力する際に、数値データに変換することでモデルの学習を可能にすることです。機械学習モデルは数値データを扱うことができるため、ラベルエンコーディングによってカテゴリデータを数値に変換する必要があります。

カテゴリデータの確認

まずはじめに、Pandasを使ってデータセットのカテゴリデータを特定する方法を紹介します。以下のようなデータセットがあるとします。

import pandas as pd
df = pd.DataFrame({'fruit': ['apple', 'banana', 'orange', 'apple', 'kiwi'],
                   'color': ['red', 'yellow', 'orange', 'red', 'green'],
                   'price': [100, 200, 150, 100, 300]})
print(df)
    fruit   color  price
0   apple     red    100
1  banana  yellow    200
2  orange  orange    150
3   apple     red    100
4    kiwi   green    300

このデータセットには「fruit」と「color」という2つのカテゴリデータが含まれています。Pandasのdtypes属性を使用することで、各列のデータ型を確認することができます。

print(df.dtypes)
fruit    object
color    object
price     int64
dtype: object

ここで、object型は文字列型を表します。つまり、fruitcolorはカテゴリデータであることが分かります。

基本的なラベルエンコーディング手法

Pandasを使用して、基本的なラベルエンコーディングを行う方法を紹介します。以下のコードを実行すると、カテゴリデータを数値に変換することができます。

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['fruit_encoded'] = le.fit_transform(df['fruit'])
print(df)
    fruit   color  price  fruit_encoded
0   apple     red    100              0
1  banana  yellow    200              1
2  orange  orange    150              2
3   apple     red    100              0
4    kiwi   green    300              3

上記のコードでは、LabelEncoderクラスを使用してfruit列を数値に変換しています。変換後の数値はfruit_encoded列に格納されています。

ラベルエンコーディングのカスタマイズ

ラベルエンコーディングをカスタマイズする方法もあります。例えば、カテゴリごとに数値を割り当てる場合や、欠損値を考慮する場合などがあります。以下のコードは、カスタムラベルエンコーディングを行う方法を示しています。

df['color_encoded'] = df['color'].map({'red': 0, 'yellow': 1, 'orange': 2, 'green': 3})
print(df)
    fruit   color  price  fruit_encoded  color_encoded
0   apple     red    100              0              0
1  banana  yellow    200              1              1
2  orange  orange    150              2              2
3   apple     red    100              0              0
4    kiwi   green    300              3              3

上記のコードでは、color列に対してカスタムマッピングを行っています。マッピングによって、red0yellow1orange2green3に変換されています。

実例

最後に、実際のデータセットを使用してラベルエンコーディングを実践してみましょう。以下のコードは、Irisデータセットを使用して品種(species)のラベルエンコーディングを行う例です。

iris_df = pd.read_csv('iris.csv')
le = LabelEncoder()
iris_df['species_encoded'] = le.fit_transform(iris_df['species'])
print(iris_df[['species', 'species_encoded']].head())
  species  species_encoded
0  setosa                0
1  setosa                0
2  setosa                0
3  setosa                0
4  setosa                0

上記のコードでは、Irisデータセットのspecies列をラベルエンコーディングしています。変換後の数値はspecies_encoded列に格納されています。

まとめ

この記事では、Pandasを使用してラベルエンコーディングを行う方法について説明しました。ラベルエンコーディングは、カテゴリデータを数値に変換するための手法であり、機械学習モデルの学習に必要な前処理の一つです。基本的なラベルエンコーディング手法だけでなく、カスタマイズや実例についても紹介しました。Pandasのラベルエンコーディングを使って、効率的なデータ分析を行いましょう。