marcopagot
@marcopagot (Asuka)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

DataFrameのカラム名を変更したい

解決したいこと

主成分分析した際に、カラム名が全て0からの番号になってしまったため、元々のDetaFrameのカラム名を反映させたいです。

課題)
機械学習初学者です。現在、中古マンションの価格を予測するこんぺに参加しており、特徴量作成の段階で主成分分析を行いました。
すると、元々のDataFrameのカラム名が数字になってしまい元に戻す方法がわからずに困っております。

データの概要

入力

train_numeric

出力

    ID  市区町村コード   最寄駅距離 面積(㎡) 建築年   建ぺい率(%)   容積率(%)  取引価格総額_log
2   40058576    40134   45.0    70  2001.0  60.0    200.0   7.255273
3   40014894    40131   21.0    70  1989.0  60.0    200.0   6.740363
6   40037069    40133   5.0 50  1987.0  80.0    400.0   7.204120
7   40037756    40133   2.0 20  1996.0  80.0    400.0   6.838849
9   40101379    40133   7.0 30  2008.0  80.0    400.0   7.255273
... ... ... ... ... ... ... ... ...
662793  12057260    12203   11.0    55  1977.0  60.0    200.0   7.146128
662794  12086172    12204   5.0 90  2007.0  80.0    400.0   7.623249
662795  12160526    12232   6.0 145 1991.0  60.0    200.0   7.380211
662797  12089617    12216   14.0    55  1974.0  60.0    200.0   6.869232
662798  12009712    12103   2.0 65  2009.0  80.0    400.0   7.643453
503366 rows × 8 columns

発生している問題・エラー

入力

scaler = StandardScaler()
scaler.fit(train_numeric)
train_numeric_scaled = scaler.transform(train_numeric)
train_numeric_scaled_df = pd.DataFrame(data=train_numeric_scaled)
train_numeric = train_numeric_scaled_df
train_numeric

出力

    0   1   2   3   4   5   6   7
0   2.307480    2.304820    2.769211    0.424077    0.526747    -0.714299   -0.672540   0.090638
1   2.302830    2.304502    0.773677    0.424077    -0.523724   -0.714299   -0.672540   -1.381582
2   2.305191    2.304714    -0.556679   -0.364734   -0.698803   1.213976    0.690446    -0.055616
3   2.305264    2.304714    -0.806121   -1.547950   0.089051    1.213976    0.690446    -1.099992
4   2.312037    2.304714    -0.390384   -1.153544   1.139522    1.213976    0.690446    0.090638
... ... ... ... ... ... ... ... ...
503361  -0.673413   -0.659827   -0.057795   -0.167531   -1.574195   -0.714299   -0.672540   -0.221426
503362  -0.670335   -0.659721   -0.556679   1.212888    1.051982    1.213976    0.690446    1.142750
503363  -0.662419   -0.656749   -0.473532   3.382117    -0.348646   -0.714299   -0.672540   0.447860
503364  -0.669968   -0.658447   0.191646    -0.167531   -1.836813   -0.714299   -0.672540   -1.013122
503365  -0.678474   -0.670441   -0.806121   0.226874    1.227061    1.213976    0.690446    1.200515
503366 rows × 8 columns

ご覧の通り、カラム名が消えてしまっています、、、、

自分で試したこと

おそらく、4行目のpd.DataFrameの引数にカラム名を指定すれば問題ないのだと思いますがその方法が分かりません。。。
知見のある方、ご教示の程宜しくお願い致します。

0

1Answer

引数のcolumnsに元のカラム名を渡してあげれば実現できると思います。

train_numeric_scaled_df = pd.DataFrame(data=train_numeric_scaled, columns= train_numeric.columns)

image.png

3Like

Comments

  1. @marcopagot

    Questioner

    Yotty様
    いつもありがとうございます。
    .columnsを入れていなかった為永遠に出来ていませんでした、、、。
    ありがとうございます🙇‍♂️

Your answer might help someone💌