logo
Loading...

.agg(), .map(), .apply()函數的用法? - Cupoy

想請問.agg(), .map(), .apply()這三種看起來都是丟函數進去,可以簡單解釋一下有...

ml100-2,ml100-2-d24

.agg(), .map(), .apply()函數的用法?

2019/05/19 下午 06:00
機器學習共學討論版
辛普恩
觀看數:5
回答數:2
收藏數:0
ml100-2
ml100-2-d24

想請問.agg(), .map(), .apply()這三種看起來都是丟函數進去,可以簡單解釋一下有什麼相異處以及使用上的時機?

回答列表

  • 2019/05/20 下午 05:05
    陳明佑 (Ming You Chen)
    贊同數:1
    不贊同數:0
    留言數:1

    三者之間, 的確都可以丟函數進去, 

    不過有一點小區別, 因此應用場景有點不同

    .agg()

    可以搭配一些 column 運算 (例如 : mean, median, max, std ...)

    所以通常是配合 groupby, 做一些群聚運算

    .apply()

    應用範圍最廣, 可以對整個 DataFrame, 或者單獨的 row 或 column 進行操作

    (須指定 axis 變數)

    .map()

    只能對 Series (單行的 DataFrame) 操作, 有特殊的寫法但較複雜

    .applymap()

    對整個 DataFrame 的資料進行操作


    我自己常常使用 .agg() 搭配 groupby

    至於特徵工程時, .map() 與 .apply() 沒有特定愛用哪個

    因為都是對 Series 做比較多, 很少需要對 row 做運算的

    .applymap() 倒是沒用過, 因為這種地圖砲等級的運算我只想到 fillna

    但已經有 fillna 了, 就不需要用到 applymap 啦

  • 2019/05/21 上午 10:07
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    DataFrame.apply operates on entire rows or columns at a time.

    => apply 可以對整個 DataFrame 操作,因為它將資料視為一個矩陣。


    DataFrame.applymap,  and Series.map operate on one element at time.

    => applymap 或 map 是延伸自 series 的操作,一次只能操作一個維度,對象是向量。