小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

pandas的apply方法基礎(chǔ)使用

 __天眼__ 2019-09-27

pandas中利用apply來對數(shù)據(jù)進行處理十分常見,也十分的方便,原因在于apply方法可以調(diào)用函數(shù):

        應(yīng)用于dataframe的各個列

這里借用了一位老師的圖:(充分說明了group到apply的過程)

  1. In [45]: df = pd.DataFrame({'a':[1,2,1,2],'b':[3,4,5,6]})
  2. In [46]: df
  3. Out[46]:
  4. a b
  5. 0 1 3
  6. 1 2 4
  7. 2 1 5
  8. 3 2 6

group可以直接使用默認函數(shù)方法,也可以和apply的結(jié)合使用:

  1. In [49]: df.groupby('a').sum()
  2. Out[49]:
  3. b
  4. a
  5. 1 8
  6. 2 10
  1. In [52]: df.groupby('a').apply(sum)
  2. Out[52]:
  3. a b
  4. a
  5. 1 2 8
  6. 2 4 10

當然也可以使用我們自己編寫的函數(shù):

  1. def reduce(dx):
  2. dx.sum() #在apply中函數(shù)不需要加(),但是在其他地方調(diào)用函數(shù)需要加上(),不要搞混了
  3. return dx
  4. In [60]: df.groupby('a').apply(reduce)
  5. Out[60]:
  6. a b
  7. a
  8. 1 2 8
  9. 2 4 10

當調(diào)用函數(shù),且需要加入其它參數(shù)時:

  1. def reduce(dx,k):
  2. dx = dx*k
  3. return dx
  4. In [73]: df.apply(reduce,axis=1,args=(2,))
  5. Out[73]:
  6. a b
  7. 0 2 6
  8. 1 4 8
  9. 2 2 10
  10. 3 4 12

多個參數(shù):

  1. def reduce(dx,k,kk):
  2. dx = dx*k+kk
  3. return dx
  4. In [75]: df.apply(reduce,axis=1,args=(2,1,))
  5. Out[75]:
  6. a b
  7. 0 3 7
  8. 1 5 9
  9. 2 3 11
  10. 3 5 13

應(yīng)用函數(shù)添加某列時:

  1. def reduce(dx,k):
  2. dx['c'] = dx['a']*k + dx['b']
  3. return dx
  4. In [77]: df.apply(reduce,axis=1,args=(2,))
  5. Out[77]:
  6. a b c
  7. 0 1 3 5
  8. 1 2 4 8
  9. 2 1 5 7
  10. 3 2 6 10

一個小練習(xí):

  1. In [32]: data
  2. Out[32]:
  3. Pclass Survived
  4. 0 3 0
  5. 1 3 0
  6. 2 2 0
  7. 3 3 0
  8. 4 3 0
  9. 5 3 0
  10. 6 3 0
  11. 7 2 0
  12. 8 3 0
  13. 9 3 0
  14. 10 3 0
  15. 11 1 0
  16. 12 1 0
  17. 13 2 0
  18. 14 1 0
  19. 15 2 0
  20. 16 2 0

這里我們有兩列數(shù)據(jù),完成通過Pclass的值,修改Survived為對應(yīng)值(可以自行添加參數(shù))

  1. def reduce(dx):
  2. if dx['Pclass'] == 1:
  3. dx['Survived'] = 1
  4. elif dx['Pclass'] == 2:
  5. dx['Survived'] =2
  6. elif dx['Pclass'] == 3:
  7. dx['Survived'] = 3
  8. else:
  9. dx['Survived'] = 0
  10. return dx

首先編寫一個函數(shù),再使用apply來調(diào)用

  1. In [34]: data.apply(reduce,axis=1)
  2. Out[34]:
  3. Pclass Survived
  4. 0 3 3
  5. 1 3 3
  6. 2 2 2
  7. 3 3 3
  8. 4 3 3
  9. 5 3 3
  10. 6 3 3
  11. 7 2 2
  12. 8 3 3
  13. 9 3 3
  14. 10 3 3
  15. 11 1 1
  16. 12 1 1
  17. 13 2 2
  18. 14 1 1
  19. 15 2 2
  20. 16 2 2

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多