質問編集履歴

1

自分が行った作業履歴を追記しました。

2022/11/28 09:45

投稿

BunkeiDX
BunkeiDX

スコア27

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,36 @@
1
1
  ### 実現したいこと
2
2
 
3
- 'horsepower'変数に欠損値(NaN)があり平均値を代入したいと考えていま’horsepower’はint64です。
3
+ 'horsepower'は馬力のデータが入って変数なのですが、df_train.info()を実行するとobject型ということでした。元データを見てみると、?とうデータが9件入っていました
4
4
 
5
+ ?を欠損値(NaN)に変えて、欠損値に平均値を代入したいと考えています。
6
+
7
+
8
+ ### 私がやったこと
9
+ #### 1. ?を欠損値に置き換える
10
+ ```python
11
+ df_train['horsepower'].isnull().sum()
12
+ ```
13
+ で欠損値の件数を調べたら0件でした。
14
+
15
+ いずれにしても?は邪魔なので、NaNにするために
16
+
17
+ ```python
18
+ df_train['horsepower'] = df_train['horsepower'].replace('?', np.nan)
19
+ ```
20
+ を実行して?をNaNに変換することができました。
21
+
22
+ ```python
23
+ df_train.isnull().sum()
24
+ ```
25
+ を実行して得られた件数は?の件数と同じく9件でした。
26
+
5
- ### 発生してい問題・エラーメッセージ
27
+ #### 2. 欠損値に平均値を代入す
28
+ 以前学習したpythonの教材で、欠損値(NaN)を平均値に置き換えるために下のコードを見つけました。
29
+
30
+ ```python
31
+ sample_data_frame.fillna(sample_data_frame.mean())
32
+ ```
33
+ sample_data_frameをこの分析で使用しているファイル名df_trainに変えて、次の実行しました。
6
34
 
7
35
  ```python
8
36
  df_train['horsepower'] = df_train['horsepower'].fillna(df_train['horsepower'].mean())
@@ -12,6 +40,12 @@
12
40
  ```
13
41
  TypeError: can only concatenate str (not "int") to str
14
42
  ```
43
+ というエラー出てしまいました。str数値データのなかにNaNが混ざっているデータ構成は教材でも見かけるのにエラーになってしまいます。
44
+
45
+ dtypesで'horsepower'を調べたら、
46
+ ```
47
+ dtype('O')
48
+ ```
15
- いました。
49
+ いう結果が返っました。
16
50
 
17
51
  どこを誤っているのでしょうか。