自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文弄懂Apply、Map和Aplymap三種函數(shù)的區(qū)別

開發(fā) 前端
在日常處理數(shù)據(jù)的過程中,會(huì)經(jīng)常遇到這樣的情況,對(duì)一個(gè)DataFrame進(jìn)行逐行、逐列或者逐元素的操作,很多小伙伴也知道需要用到apply、map或者applymap,但是具體什么情況下運(yùn)用哪種方法或者說對(duì)這些方法了解不夠,用起來暈暈乎乎始終沒有很明白。

 在日常處理數(shù)據(jù)的過程中,會(huì)經(jīng)常遇到這樣的情況,對(duì)一個(gè)DataFrame進(jìn)行逐行、逐列或者逐元素的操作,很多小伙伴也知道需要用到apply、map或者applymap,但是具體什么情況下運(yùn)用哪種方法或者說對(duì)這些方法了解不夠,用起來暈暈乎乎始終沒有很明白,希望這一篇文章能夠幫助有需要的小伙伴弄懂他們之間的區(qū)別,并且在遇到問題的時(shí)候能夠很清楚明白用哪個(gè)以及該怎樣使用。閑話少敘,我們正式開始吧。

[[322964]]

首先,來個(gè)總結(jié)

  • apply:應(yīng)用在DataFrame的行或列中,也可以應(yīng)用到單獨(dú)一個(gè)Series的每個(gè)元素中
  • map:應(yīng)用在單獨(dú)一個(gè)Series的每個(gè)元素中
  • applymap:應(yīng)用在DataFrame的每個(gè)元素中

apply

先從apply開始,當(dāng)然最權(quán)威的說明還是要看官方文檔:

apply是沿DataFrame的軸應(yīng)用功能,傳遞給函數(shù)的對(duì)象是Series對(duì)象,其索引為DataFrame的索引(axis = 0'')或DataFrame的列(axis = 1'')

當(dāng)然比較常用的還是DataFrame.apply(),下邊我們通過例子來說明一下幫助理解.

首先有一個(gè)表:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

apply應(yīng)用到DataFrame中

如果我們求一下每一列或者每一列的極差,注意axis參數(shù)的設(shè)置,一般默認(rèn)為0,即求每一列的極值

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

apply的參數(shù)可以直接接收現(xiàn)成的函數(shù),也可以接收自定義函數(shù),比如自定義的匿名函數(shù):

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

通過對(duì)軸信息的設(shè)置,也可以求每一行的極差:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

需要注意的是結(jié)果的索引,能夠很明顯的告訴大家現(xiàn)在求的是行極差還是列極差,如果是行極差,索引是行標(biāo)簽,如果是列極差,索引是列名。

另外,對(duì)整個(gè)DataFrame運(yùn)用apply的時(shí)候,要保證所有的字段都是符合作為參數(shù)的函數(shù)要求才可以,比如在列子中求極值得保證所有字段都是數(shù)值型才行,如果整個(gè)DataFrame不能滿足要求,可以把符合要求的字段切出來再應(yīng)用apply。

如果有需要,也可以把求的結(jié)果添加到原表當(dāng)中。

apply應(yīng)用到Series中

如這個(gè)例子,將A列的所有元素轉(zhuǎn)換數(shù)據(jù)類型,從整型轉(zhuǎn)換成浮點(diǎn)型:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

總結(jié)一下,apply運(yùn)用到整個(gè)DataFrame中可以執(zhí)行整列或者整行的運(yùn)算,運(yùn)用到Series中,執(zhí)行的是對(duì)每個(gè)元素的運(yùn)算。

這個(gè)運(yùn)算,map也可以實(shí)現(xiàn)。

map

首先,還是看下官方文檔是怎么說的:

  • 根據(jù)輸入對(duì)應(yīng)關(guān)系映射Series的值。
  • 用于將Series中的每個(gè)值替換為另一個(gè)值,該值可以從函數(shù)dict或Series派生。

官方指定,map是應(yīng)用于Seriesd 的,參數(shù)可以是函數(shù)也可以字典。

首先,還是要有一個(gè)表:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

現(xiàn)在需要將性別轉(zhuǎn)換成0和1,女為0,男為1,這個(gè)時(shí)候千萬不要寫循環(huán)啊,map()可以輕松實(shí)現(xiàn),先來試試函數(shù)的形式:

def gender(x): G = 1 if x == "男" else 0 return G

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

map的參數(shù)除了可以是參數(shù),也可以是字典,這和apply對(duì)參數(shù)的要求不同:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

applymap

最后來看一下applymap,還是先搬上官方文檔:

  • 將函數(shù)應(yīng)用于元素的數(shù)據(jù)框。
  • 此方法應(yīng)用一個(gè)函數(shù),該函數(shù)接受并返回一個(gè)標(biāo)量到DataFrame的每個(gè)元素。

簡單說,applymap是把函數(shù)應(yīng)用到DataFrame中的每個(gè)元素上的,要和apply對(duì)整列或者整行進(jìn)行的操作區(qū)分開啊,apply想要直接對(duì)每個(gè)元素進(jìn)行操作,得單獨(dú)提取出Series才可以實(shí)現(xiàn),不能直接再整個(gè)DataFrame上執(zhí)行。下邊來看個(gè)例子。

還是開頭的那個(gè)表:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

現(xiàn)在要把每個(gè)元素的數(shù)據(jù)類型都轉(zhuǎn)換成浮點(diǎn)型,applymap()就派上用場了:

 

一文弄懂a(chǎn)pply、map和applymap三種函數(shù)的區(qū)別

 

最后再總結(jié)一下:

apply:

  • 既可以用在DataFrame,也可以用到單獨(dú)的Series中
  • 運(yùn)用到DataFrame時(shí),是用到了整行或者整列上,不是逐一運(yùn)用到每個(gè)元素上
  • 運(yùn)用到Series時(shí),作用到每個(gè)元素上
  • 第一個(gè)參數(shù)只接收python原生函數(shù)或者numpy中的函數(shù)

map

  • 只能運(yùn)用到Series的每個(gè)元素上
  • 參數(shù)可以是函數(shù)也可以是字典,還可以是序列

applymap

  • 只能應(yīng)用在DataFrame中,并且是作用在DataFrame的每個(gè)元素中
  • 參數(shù)只接收可調(diào)用的函數(shù)

常用的用法呢就是前邊舉的例子中的那些了,希望這邊文章能幫助大家分清apply、map和applymap并能靈活運(yùn)用它們。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2025-04-11 11:00:00

存儲(chǔ)技術(shù)DASSAN

2020-11-24 10:13:02

Redis集群數(shù)據(jù)庫

2022-08-09 09:10:43

Kubernetes容器

2023-11-28 09:31:55

MySQL算法

2022-03-01 20:41:00

機(jī)器學(xué)習(xí)特征人工智能

2023-03-30 08:52:40

DartFlutter

2021-06-02 05:43:36

比特幣虛擬貨幣區(qū)塊鏈

2023-03-27 17:58:34

MySQL加鎖間隙鎖

2022-08-03 08:01:16

CDN網(wǎng)站服務(wù)器

2023-09-18 08:02:45

CSS布局屬性

2023-10-26 16:27:50

前端 WebCSS開發(fā)

2023-12-12 07:31:51

Executors工具開發(fā)者

2024-05-09 10:11:30

2022-09-01 08:01:56

Pythongunicorn

2024-08-05 00:05:00

操作系統(tǒng)內(nèi)存管理

2023-07-25 09:53:00

LGACPU數(shù)字

2021-12-20 07:59:07

Go語言結(jié)構(gòu)體

2017-07-28 09:11:14

HIVEHBASE區(qū)別

2023-04-04 08:01:47

2022-09-05 09:25:53

KubernetesService
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)