質問編集履歴
1
自分が行った作業履歴を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,36 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
|
3
|
-
'horsepower'
|
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
|
どこを誤っているのでしょうか。
|