scikit-learnなどの機械学習ライブラリに入れる前にデータの前処理で、欠損値の処理やカテゴリ変数の変換などをおこない、ライブラリが扱いやすい形にする必要があります。ここではPythonのPandasでよく使う前処理のコマンドをまとめます。
データの読み込み
# 訓練データとテストデータをそれぞれ読み込む
train_data = pd.read_csv("train.csv")
test_data = pd.read_csv("test.csv")
必要な列のデータのみにする
# 必要な列のみ再編集
labels = ["Price","Area","Rooms","Distance","Stairs"]
train_data = [labels]
# 不要な列を消す1
train_data.drop('col1', axis=1, inplace=True)
# 不要な列を消す2
train_data.drop(columns=['col1','col2'], inplace=True)
# 不要な行を消す1
train_data.drop(['idx1','idx3], inplace=True)
# 不要な行を消す2
train_data.drop(index='idx1', inplace=True)
欠損値
# non-nullのデータ数とデータ型を一覧で示す
train_data.info()
# nullのデータ数をカウント
train_data.isnull().sum()
# 欠損値を平均で補完
col1_mean = train_data['col1].mean()
train_data['col1'] = train_data['col1'].fillna(col1_mean)
# 欠損値を最頻値で補完
col1_mode = train_data['col1].mode()
train_data['col1'] = train_data['col1'].fillna(col1_mode)
# 欠損値が含まれる行を削除
train_data = train_data.dropna(how='any')
# 欠損値が含まれる列を削除
train_data = train_data.dropna(how='any', axis=1)
# すべてが欠損値の行を削除
train_data = train_data.dropna(how='all')
カテゴリ変数をダミー変数に変換
# 'male' or 'female'のようなカテゴリ化された列を指定してそれぞれ0,1のダミー変数に変換
cat_labels = ['cat_col1', 'cat_col2']
train_data = pd.get_dummies(train_data, columns=cat_labels)
# すべてのobject型、category型の列をダミー変数に変換
train_data = pd.get_dummies(train_data)
map関数で数値型に変換
train_data['col1'] = df['col1'].map({'case A': 0, 'case B': 1, 'case C': 2})
replaceでパラーメータを変換
# カテゴリ変数を手動でreplaceで数値データに変換
train_data['col1'].replace(['A', 'B'], [0, 1], inplace=True)
コメント