マンションの価格予測解析を行うにあたって、以下リンク先のページを参考にさせて頂いています。
https://note.com/maytakesao/n/n126165676d30
このうち、《変更前コード》において、
《変更前エラー》
Python
1--------------------------------------------------------------------------- 2TypeError Traceback (most recent call last) 3<ipython-input-29-63695056f7a7> in <module> 4 2 df_data_normal = df_data_normal[df_data_normal['種類'] == '中古マンション等'] 5 3 #面積(㎡)⇒120以内を使う, 最寄駅:距離(分)⇒30以内を使う,建築年(西暦) ⇒1950年以上を使う 6----> 4 df_data_normal = df_data_normal.loc[df_data_normal['面積(㎡)'] <=120] 7 5 df_data_normal = df_data_normal.loc[df_data_normal['最寄駅:距離(分)'] <=30] 8 6 df_data_normal = df_data_normal.loc[df_data_normal['建築年(西暦)'] >= 1950] 9 105 frames 11/usr/local/lib/python3.7/dist-packages/pandas/_libs/ops.pyx in pandas._libs.ops.scalar_compare() 12 13TypeError: '<=' not supported between instances of 'str' and 'int'
というエラーが出ます。
そこで、astypeを用いて、文字列(str)から整数(int)に変換を試み、
《変更後コード》のように記載したところ、'面積(㎡)'に対してKeyerrorが出てしまい、
実行できませんでした。解決方法を教えて頂けるとありがたいです。
《変更後エラー》
Python
1--------------------------------------------------------------------------- 2KeyError Traceback (most recent call last) 3<ipython-input-28-add3df40f807> in <module> 4 2 df_data_normal = df_data_normal[df_data_normal['種類'] == '中古マンション等'] 5 3 #面積(㎡)⇒120以内を使う, 最寄駅:距離(分)⇒30以内を使う,建築年(西暦) ⇒1950年以上を使う 6----> 4 df['面積(㎡)'] = df['面積(㎡)'].astype(int) 7 5 df['最寄駅:距離(分)'] = df['最寄駅:距離(分)'].astype(int) 8 6 df['建築年(西暦)'] = df['建築年(西暦)'].astype(int) 9 102 frames 11/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/range.py in get_loc(self, key, method, tolerance) 12 386 except ValueError as err: 13 387 raise KeyError(key) from err 14--> 388 raise KeyError(key) 15 389 return super().get_loc(key, method=method, tolerance=tolerance) 16 390 17 18KeyError: '面積(㎡)'
《変更前コード》
Python
1#中古マンション等のみ抽出 2df_data_normal = df_data_normal[df_data_normal['種類'] == '中古マンション等'] 3#面積(㎡)⇒120以内を使う, 最寄駅:距離(分)⇒30以内を使う,建築年(西暦) ⇒1950年以上を使う 4df_data_normal = df_data_normal.loc[df_data_normal['面積(㎡)'] <=120] 5df_data_normal = df_data_normal.loc[df_data_normal['最寄駅:距離(分)'] <=30] 6df_data_normal = df_data_normal.loc[df_data_normal['建築年(西暦)'] >= 1950]
《変更後コード》
Python
1#中古マンション等のみ抽出 2df_data_normal = df_data_normal[df_data_normal['種類'] == '中古マンション等'] 3#面積(㎡)⇒120以内を使う, 最寄駅:距離(分)⇒30以内を使う,建築年(西暦) ⇒1950年以上を使う 4df['面積(㎡)'] = df['面積(㎡)'].astype(int) 5df['最寄駅:距離(分)'] = df['最寄駅:距離(分)'].astype(int) 6df['建築年(西暦)'] = df['建築年(西暦)'].astype(int) 7df_data_normal = df_data_normal.loc[df_data_normal[df['面積(㎡)'] <=120]] 8df_data_normal = df_data_normal.loc[df_data_normal[df['最寄駅:距離(分)'] <=30]] 9df_data_normal = df_data_normal.loc[df_data_normal[df['建築年(西暦)'] >= 1950]]
よろしくおねがいします。
コードが見にくいので、「コードの挿入」で記入してください。
> うまくいかず
どの箇所が”どう”上手く行かないのでしょうか?
エラーは表示されたもの(Traceback)をすべて提示ください。
また、エラーが発生するところまででよいので、実行可能な完全なコードを提示すると回答得られやすくなります。
なお、参考サイトでは「最寄駅:距離(分)」列などのデータクレンジング処理に関するコードが省略されているようです。
「df_data_normal」と「df」は同じモノでしょうか?
> KeyError: '面積(㎡)'
上記が出たときに print(df.columns) を実行して、カラム名の差異を確認するとエラーの原因が分かるかと思います。
>can110さん
理解が不十分で質問に回答できず申し訳ありません。
丁寧なアドバイスありがとうございました。助かりました。
>megさん
使用方法、確認方法等コメントありがとうございました。助かりました。
回答1件
あなたの回答
tips
プレビュー