【データ分析に必要な機械学習】最初に不要な列を削除する項目の確認と削除。
本で一応前処理とか練習したのですが、実際のコンペのデータをダウンロードするとびっくり。
データは多いし、欠損は多いし、列には日にちとあるのにいろんな形式が入っているし、
列の最初から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')
随分減ったと思います。
コンペ初心者、最初の一手、ぜひともご利用ください。
この記事が気に入ったらサポートをしてみませんか?