teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2022/11/28 09:45

投稿

BunkeiDX
BunkeiDX

スコア27

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