見出し画像

【データ分析に必要な機械学習】最初に不要な列を削除する項目の確認と削除。

本で一応前処理とか練習したのですが、実際のコンペのデータをダウンロードするとびっくり。

データは多いし、欠損は多いし、列には日にちとあるのにいろんな形式が入っているし、

列の最初からNanの項目がめっちゃあるのものある。

とにかく、最初にいらない項目は、、、パット見何も入っていないデータ。意味のないデータですよね

意味のないデータ。それは1種類しか入っていないデータとかお客様IDとか。

お客様IDとかは意味が無いと分かるので消しますが、

データで1種類もしくはNanの列を見つけましょう。

コードは

one = [col for col in test.columns if test[col].nunique() <= 1]
one

['種類',
'地域',
'都道府県名',
'土地の形状',
'間口',
'延床面積(㎡)',
'前面道路:方位',
'前面道路:種類',
'前面道路:幅員(m)']

ついでに、nullが多いとか、ほとんど同じとかのも一緒にけします。

null = [col for col in test.columns if test[col].isnull().sum() / test.shape[0] > 0.9]
repetitive = [col for col in test.columns if test[col].value_counts(dropna=False, normalize=True).values[0] > 0.9]

全部まとめます

dell = list(set(one+null+tyoufuku))

dropで消します。

test.drop(one, axis=1, inplace=True)
print(test.columns)

>>Index(['ID', '市区町村コード', '市区町村名', '地区名', '最寄駅:名称', '最寄駅:距離(分)', '間取り', '面積(㎡)',
'建築年', '建物の構造', '今後の利用目的', '都市計画', '建ぺい率(%)', '容積率(%)', '取引時点', '改装',
'取引価格(総額)_log'],
dtype='object')

これで。

もともとが↓なので。

>>Index(['ID', '種類', '地域', '市区町村コード', '都道府県名', '市区町村名', '地区名', '最寄駅:名称',
'最寄駅:距離(分)', '間取り', '面積(㎡)', '土地の形状', '間口', '延床面積(㎡)', '建築年', '建物の構造',
'用途', '今後の利用目的', '前面道路:方位', '前面道路:種類', '前面道路:幅員(m)', '都市計画', '建ぺい率(%)',
'容積率(%)', '取引時点', '改装', '取引の事情等', '取引価格(総額)_log'],
dtype='object')

随分減ったと思います。

コンペ初心者、最初の一手、ぜひともご利用ください。








この記事が気に入ったらサポートをしてみませんか?