logo
Loading...

.apply() 與 lambda x 的問題 - Cupoy

關於apply函數的對象,grouped_df 跟 app_train['AMT_INCOME_TO...

ml100-4

.apply() 與 lambda x 的問題

2020/03/11 下午 00:15
機器學習共學討論版
yicchen
觀看數:20
回答數:2
收藏數:0
ml100-4

  1. 關於apply函數的對象,grouped_df 跟 app_train['AMT_INCOME_TOTAL']有什麼差別?
  2. 另外,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 😃😃😃