はじめに
データ分析では、カテゴリデータを数値に変換する必要があります。そのために使用される一つの手法が「ラベルエンコーディング」です。この記事では、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
型は文字列型を表します。つまり、fruit
とcolor
はカテゴリデータであることが分かります。
基本的なラベルエンコーディング手法
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
列に対してカスタムマッピングを行っています。マッピングによって、red
が0
、yellow
が1
、orange
が2
、green
が3
に変換されています。
実例
最後に、実際のデータセットを使用してラベルエンコーディングを実践してみましょう。以下のコードは、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のラベルエンコーディングを使って、効率的なデータ分析を行いましょう。