import pandas as pd
df = pd.read_csv('./input/data.csv')
# 全データの表示
df
# マッピング用の辞書データを用意
size_mapping = {'XL': 4, 'L': 3, 'M': 2, 'S': 1}
# size列に対しってマッピング用辞書の適用
values = df['size'].map(size_mapping)
# size列に対して変換後のデータを代入
df['size'] = values
df
# sklearnのLabelEncoderでお手軽にできる
from sklearn.preprocessing import LabelEncoder
# LabelEncoderオブジェクトを生成
encoder = LabelEncoder()
# fit_transformメソッドで、クラスラベルを整数値にエンコーディング
classlabels_data = encoder.fit_transform(df['classlabel'])
df['classlabel'] = classlabels_data
df
## 元に戻す
df['classlabel'] = encoder.inverse_transform(classlabels_data)
df
# one-hot エンコーディング
from sklearn.preprocessing import OneHotEncoder
# OneHotEncoder で それぞれの色が列になり、該当の色に1がセットされる
encoder = OneHotEncoder()
result = encoder.fit_transform(values.reshape(-1, 1))
# one-hotエンコーディングされたデータをDataFrameに変換
colors_df = pd.DataFrame(result.toarray(), columns=sorted(list(set(df['color']))))
colors_df
## これでもone-hotエンコーディングができる
# one-hotエンコーディングされたDataFrameを取得
colors_df = pd.get_dummies(df['color'])
# 元のDataFrameと、変換されたDataFrameを結合
df = pd.merge(df, colors_df, left_index=True, right_index=True, how='outer')
df