.apply() 與 lambda x 的問題
- 關於apply函數的對象,grouped_df 跟 app_train['AMT_INCOME_TOTAL']有什麼差別?
- 另外,lambda 函數作用的x是grouped_df裡面的什麼 ?
(lambda x:(x-np.mean(x))/np.std(x))
附上程式碼:
grp = ['CNT_CHILDREN_GROUP', 'TARGET']
grouped_df = app_train.groupby(grp)['AMT_INCOME_TOTAL']
#1
app_train['AMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET'] = grouped_df.apply(lambda x:(x-np.mean(x))/np.std(x))
#2
app_train['AMT_INCOME_TOTAL_Z_BY_CHILDREN_GRP-TARGET'] = app_train['AMT_INCOME_TOTAL'].apply(lambda x:(x-np.mean(x))/np.std(x))
謝謝
回答列表
-
2020/03/11 下午 05:22徐正憲贊同數:4不贊同數:0留言數:1
1.將式子寫開
app_train['A']= <==令一個變數名為A
app_train.groupby(['B', 'C']) <==計算要group by B和C
['D'] <==取app_train中的D欄位值
.apply(lambda x:(x-np.mean(x))/np.std(x)) <==計算公式為(x-np.mean(x))/np.std(x)
此處的grouped_df是為了計算時要groupby B和C
app_train['AMT_INCOME_TOTAL']僅是取AMT_INCOME_TOTAL欄位值,不一樣
2.從上面的拆解可以看出來x作用的是AMT_INCOME_TOTAL欄位
-
2020/03/17 上午 01:13張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,一句話解釋:
grouped_df 是 app_train['AMT_INCOME_TOTAL'] 依照資料分組過後的結果,apply 會對每一組做相同的運算,運算會定義在 lambda 當中。具體拆解我覺得正憲的說明很好理解:)
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃