回答編集履歴

2

2021/06/02 04:08

投稿

kirara0048
kirara0048

スコア1399

test CHANGED
@@ -140,19 +140,53 @@
140
140
 
141
141
 
142
142
 
143
+ このようにして得たシリーズをもとの`df`に再び割り当てることで、求めたい結果が得られます。
144
+
145
+
146
+
143
147
  ---
144
148
 
145
149
 
146
150
 
147
- このようにして得たシリーズをもとの`df`に再び割り当てることで、以下のような結果が得られます。
151
+ 以下に今回操作をとめます。
148
-
149
-
150
-
152
+
153
+
154
+
151
- ```python
155
+ ```python
156
+
152
-
157
+ In [17]: pref = ["東京", "東京", "東京", "埼玉", "千葉", "神奈川"]
158
+
159
+ ...: value = ["渋谷", "新宿", "池袋", "大宮", "新浦安", "横浜"]
160
+
161
+ ...: df = pd.DataFrame({'都道府県':pref, '市区町村': value})
162
+
163
+ ...: dic = {"渋谷":100, "新宿":90, "大宮":50, "新浦安":45, "横浜":80}
164
+
165
+ ...:
166
+
167
+ ...: df
168
+
169
+ Out[17]:
170
+
171
+ 都道府県 市区町村
172
+
173
+ 0 東京 渋谷
174
+
175
+ 1 東京 新宿
176
+
177
+ 2 東京 池袋
178
+
179
+ 3 埼玉 大宮
180
+
181
+ 4 千葉 新浦安
182
+
183
+ 5 神奈川 横浜
184
+
185
+
186
+
153
- In [107]: df.assign(市区町村=df['市区町村'].map(dic).groupby(df['都道府県']).transform(lambda s: s.fillna(s.mean())))
187
+ In [18]: df.assign(市区町村=df['市区町村'].map(dic).groupby(df['都道府県']).transform(lambda s: s.fillna(s.mean())))
154
-
188
+
155
- Out[107]:
189
+ Out[18]:
156
190
 
157
191
  都道府県 市区町村
158
192
 

1

2021/06/02 04:08

投稿

kirara0048
kirara0048

スコア1399

test CHANGED
@@ -78,11 +78,11 @@
78
78
 
79
79
 
80
80
 
81
- つづいて、値が`NaN`となっているデータを特定の値で上書きする場合には、`.fillna()`メソッドが利用できます。シリーズの平均値で欠損値穴埋めする場合は、`Series.fillna(Series.mean))`のようにします。
81
+ つづいて、値が`NaN`となっているデータを特定の値で上書きする場合には、`.fillna()`メソッドが利用できます。`.map()`メソッドを用いたことがここで生きてきます。`NaN`に変換したことで、わざわざ`'池袋'`をキーにした辞書ライクなものを作成する必要がなくなり、シリーズの標準のメソッド活用することができます。
82
82
 
83
83
 
84
84
 
85
- 以下はこの動作の例です。
85
+ シリーズの平均値で欠損値を穴埋めする場合は、`Series.fillna(Series.mean))`のようにします。以下はこの動作の例です。
86
86
 
87
87
 
88
88