np.percentile 存入DataFrame問題
你好,我在Day 7的代碼中看到以下這一段
--試著將 max 取代為 q99
app_train[app_train['AMT_ANNUITY'] == app_train['AMT_ANNUITY'].max()] = np.percentile(app_train[~app_train['AMT_ANNUITY'].isnull()]['AMT_ANNUITY'], q = 99)
app_train[app_train['AMT_ANNUITY'] == app_train['AMT_ANNUITY'].max()] 是 pandas.core.frame.DataFrame
np.percentile(app_train[~app_train['AMT_ANNUITY'].isnull()]['AMT_ANNUITY'], q = 99) 是 numpy.float64
為什麼可以這樣寫呢? 還且還成功的只改掉 'AMT_ANNUITY' 那欄的值,並不會報錯
回答列表
-
2019/05/13 上午 01:56張維元 (WeiYuan)贊同數:1不贊同數:0留言數:1
app_train[app_train['AMT_ANNUITY'] == app_train['AMT_ANNUITY'].max()]
這樣寫會挑選出 app_train 當中 AMT_ANNUITY 欄位等於 max 的部分,後面
np.percentile(app_train[~app_train['AMT_ANNUITY'].isnull()]['AMT_ANNUITY'], q = 99)
寫法會計算 AMT_ANNUITY 的 99 百分位,應該會是一個值,所以是將後者(q99)存到前者(df)
-
2019/05/16 下午 03:28張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
呃我換個問法,為什麼不是寫成 app_train[app_train['AMT_ANNUITY'] == app_train['AMT_ANNUITY'].max()]['AMT_ANNUITY']呢?
=> 這樣寫應該也可以,只是篩選的順序不同而已?