一括で特徴ベクトル化

サンプルデータ

import pandas as pd

X = pd.read_csv("../data/sample.csv")
X.head()
元号和暦西暦人口総数町名
0大正9.01920.0394748A町
1大正9.01920.031421B町
2大正9.01920.0226993C町
3大正9.01920.0253689D町
4大正9.01920.0288602E町

make_column_transformer

sklearn.compose.make_column_transformerを使用します。指定した複数列に対して、一括で前処理方法を指定します。

from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.compose import make_column_transformer

c_oh = OneHotEncoder()
n_ss = StandardScaler()

ct = make_column_transformer(
    (c_oh, ["元号", "町名"]),  # カテゴリ変数にonehot
    (n_ss, ["西暦", "人口総数"]),  # 数値列をスケーリング
    remainder="passthrough",  # 指定の無い列はそのまま
    sparse_threshold=0,
)

X_transform = ct.fit_transform(X)

# 変換後のテーブル
pd.DataFrame(X_transform).head()
0123456789...22232425262728293031
01.00.00.01.00.00.00.00.00.00.0...0.00.00.00.00.00.00.0-1.6654662.0469089.0
11.00.00.00.01.00.00.00.00.00.0...0.00.00.00.00.00.00.0-1.665466-0.5579779.0
21.00.00.00.00.01.00.00.00.00.0...0.00.00.00.00.00.00.0-1.6654660.8441839.0
31.00.00.00.00.00.01.00.00.00.0...0.00.00.00.00.00.00.0-1.6654661.0355819.0
41.00.00.00.00.00.00.01.00.00.0...0.00.00.00.00.00.00.0-1.6654661.2858919.0

5 rows × 32 columns