機械学習:Pandas DataFrameの前処理コマンド

スポンサーリンク
Python基礎
スポンサーリンク

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)

コメント