精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Pandas中的這3個函數,沒想到竟成了我數據處理的主力

大數據
為展示應用這3個函數完成數據處理過程中的一些demo,這里以經典的泰坦尼克號數據集為例。需要下載該數據集和文中示例源碼的可后臺回復關鍵字apply獲取下載方式。

導讀:學Pandas有一年多了,用Pandas做數據分析也快一年了,常常在總結梳理一些Pandas中好用的方法。例如三個最愛函數、計數、數據透視表、索引變換、聚合統計以及時間序列等等,每一個都稱得上是認知的升華、實踐的結晶。今天,延承這一系列,再分享三個函數,堪稱是個人日常在數據處理環節中應用頻率較高的3個函數:apply、map和applymap,其中apply是主角,map和applymap為贈送。

[[378227]]

數據處理環節無非就是各種數據清洗,除了常規的缺失值和重復值處理邏輯相對較為簡單,更為復雜的其實當屬異常值處理以及各種數據變換:例如類型轉換、簡單數值計算等等。在這一過程中,如何既能保證數據處理效率而又不失優雅,Pandas中的這幾個函數堪稱理想的解決方案。

為展示應用這3個函數完成數據處理過程中的一些demo,這里以經典的泰坦尼克號數據集為例。需要下載該數據集和文中示例源碼的可后臺回復關鍵字apply獲取下載方式。

01 apply的方法論

在學習apply具體應用之前,有必要首先闡釋apply函數的方法論。apply英文原義是"應用"的意思,作為編程語言中的函數名,似乎在很多種語言都有體現,比如近日個人在學習Scala語言中apply被用作是伴生對象中自動創建對象的缺省實現,如此重要的角色也可見apply這個函數的重要性。那么apply應用在Pandas中,其核心功能其實可以概括為一句話:

  • apply:我本身不處理數據,我們只是數據的搬運工。

說人話就是,apply自身是不帶有任何數據處理功能的,但可以用作是對其他數據處理方法的調度器,至于調度什么又為誰而調度呢?這是理解apply的兩個核心環節:

  • 調度什么?調度的是apply函數接收的參數,即apply接收一個數據處理函數為主要參數,并將其應用到相應的數據上。所以調度什么取決于接收了什么樣的數據處理函數;
  • 為誰調度?也就是apply接收的數據處理函數,其作用對象是誰?或者說數據處理的粒度是什么?答案是數據處理的粒度包括了點線面三個層面:即可以是單個元素(標量,scalar),也可以是一行或一列(series),還可以是一個dataframe。

當然,這些文字描述肯定還比較抽象,那么不妨直接進入正題:talk is cheap,show me the code!

02 apply基本方法

示例前面提到,理解apply核心在于明確兩個環節:調度函數和作用對象。調度函數就是apply接收的參數,既可以是Python內置的函數,也支持自定義函數,只要符合指定的作用對象(即是標量還是series亦或一個dataframe)即可。而作用對象則取決于調用apply的對象類型,具體來說:

  • 一個Series對象調用apply時,數據處理函數作用于該Series的每個元素上,即作用對象是一個標量,實現從一個Series轉換到另一個Series;
  • 一個DataFrame對象調用apply時,數據處理函數作用于該DataFrame的每一行或者每一列上,即作用對象是一個Series,實現從一個DataFrame轉換到一個Series上;
  • 一個DataFrame對象經過groupby分組后調用apply時,數據處理函數作用于groupby后的每個子dataframe上,即作用對象還是一個DataFrame(行是每個分組對應的行;列字段少了groupby的相應列),實現從一個DataFrame轉換到一個Series上。

以泰坦尼克號數據集為例,這里分別舉幾個小例子。原始數據集如下:

1. 應用到Series的每個元素①將性別sex列轉化為0和1數值,其中female對應0,male對應1。應用apply函數實現這一功能非常簡單:

其中,這里apply接收了一個lambda匿名函數,通過一個簡單的if-else邏輯實現數據映射。該功能十分簡單,接收的函數也不帶任何其他參數。

②下面再來一個稍微復雜一點的案例,注意到年齡age列當前數據類型是小數,需要將其轉換為整數,同時還有0.9167這種過小的年齡,所以要求接受一個函數,支持接受指定的最大和最小年齡限制,當數據中超出此年齡范圍的統一用截斷填充,同時由于原數據集中age列存在缺失值,還需首先進行缺失值填充。這里首先實現一個自定義函數用于實現指定的年齡處理功能:

  1. def get_age(age, max_age, min_age): 
  2.     age = int(age)  # 轉換為整數 
  3.     if age > max_age: 
  4.         age = max_age 
  5.     if age < min_age: 
  6.         age = min_age 
  7.     return age 

然后,直接對age列調用該函數即可,其中除了第一個參數age由調用該函數的series進行向量化填充外,另兩個參數需要指定,在apply中即通過args傳入。具體而言,實現如下:

2. 應用到DataFrame的每個Series

DataFrame是pandas中的核心數據結構,其每一行和每一列都是一個Series數據類型。那么應用apply到一個DataFrame的每個Series,自然存在一個問題是應用到行還是列的問題,所以一個DataFrame調用apply函數時需要指定一個axis參數,其中axis=0對應行方向的處理,即對每列應用apply接收函數;axis=1對應列方向處理,即對每行應用接收函數。默認為axis=0。這里仍然舉兩個小例子:

①取所有數值列的數據最大值。當然,這個處理其實可以直接調用max函數,但這里為了演示apply應用,所以不妨照此嘗試:

上述apply函數完成了對四個數值列求取最大值,其中缺省axis參數為0,對應行方向處理,即對每一列數據求最大值。

②然后來一個按行方向處理的例子,例如根據性別和年齡,區分4類人群:即女孩、成年女子、男孩、成年男子,其中年齡以18歲為界值進行區分。首先給出人群劃分的函數實現:

  1. def cat_person(sr): 
  2.     if sr['sex_num'] == 0: 
  3.         if sr['age_num'] < 18: 
  4.             return '女孩' 
  5.         else
  6.             return '成年女子' 
  7.     else
  8.         if sr['age_num'] < 18: 
  9.             return '男孩' 
  10.         else
  11.             return '成年男子' 

基于此,用apply簡單調用即可,其中axis=1設置apply的作用方向為按列方向,即對每行進行處理。其中每行都相當于一個帶有age和sex等信息的Series,通過cat_person函數進行提取判斷,即實現了人群的劃分:

3. 應用到DataFrame groupby后的每個分組DataFrame

實際上,個人一直覺得這是一個非常有效的用法,相較于原生的groupby,通過配套使用goupby+apply兩個函數,實現更為個性化的聚合統計功能。例如,這里我們希望統計不同艙位等級內的"生存年齡比"(僅為配合舉例而隨意定義的指標,無實際含義),定義為各艙位等級內生存人員的年齡之和與所有人員年齡之和的比值。為實現這一數據統計,則首先應以艙位等級作為分組字段進行分組,而后對每個分組內的數據進行聚合統計,示例代碼如下:

其中apply接收一個lambda匿名函數,該匿名函數接收一個dataframe為參數(該dataframe中不含pclass列),并提取survived列和age_num列參與計算。最后得到每個艙位等級的一個統計指標結果,返回類型是一個Series對象。

這里,再補充一個前期分享過的一片推文:Pandas用的6不6,來試試這道題就能看出來,實際上也是實現了相同的分組聚合統計功能。

以上,可以梳理apply函數的執行流程:首先明確調用apply的數據結構類型,是Series還是DataFrame,如果是DataFrame還需進一步確定是直接調用apply還是經過groupby分組之后調用,其中前者對應apply的接收函數處理一行或一列,后者對應接收函數處理每個分組對應的子DataFrame,最后根據作用對象類型設計相應的接收函數,從而完成個性化的數據處理。

03 apply的兩個兄弟

前面介紹了apply的三種應用場景,作用對象分別對應元素、Series以及DataFrame,可以說功能已經非常強大了。除了apply之外,pandas其實還提供了兩個功能極為相近的函數:map和applymap,不過相較于功能強大的apply來說,二者功能則相對局限。具體而言,二者分別實現功能如下:

1.map。在Python中提到map關鍵詞,個人首先聯想到的是兩個場景:①一種數據結構,即字典或者叫映射,通過鍵值對的方式組織數據,在Python中叫dict;②Python的一個內置函數叫map,實現數據按照一定規則完成映射的過程。而在Pandas框架中,這兩種含義都有所體現:對一個Series對象的每個元素實現字典映射或者函數變換,其中后者與apply應用于Series的用法完全一致,而前者則僅僅是簡單將函數參數替換為字典變量即可。仍以替換性別一列為0/1數值為例,應用map函數的實現方式為:

雖然map對于Series元素級的變換提供了兩種數據轉換方式,但卻僅能用于Series,而無法應用到DataFrame上。但與此同時,map相較于apply又在另一個方面具有獨特應用,即對于索引列這種特殊的Series只能應用map,而無法應用apply。

2.applymap。從名字上可以看出,這好像是個apply函數與map函數的混合體,實際上也確實有這方面的味道:即applymap綜合了apply可以應用到DataFrame和map僅能應用到元素級進行變換的雙重特性,所以applymap是將接收函數應用于DataFrame的每個元素,以實現相應的變換。

從某種角度來講,這種變換得以實施的前提是該DataFrame的各列元素具有相同的數據類型和相近的業務含義,否則運用相同的數據變換很難保證實際效果。

假設需要獲取DataFrame中各個元素的數據類型,則應用applymap實現如下:

04 小結

  • apply、map和applymap常用于實現Pandas中的數據變換,通過接收一個函數實現特定的變換規則;
  • apply功能最為強大,可應用于Series、DataFrame以及DataFrame分組后的group DataFrame,分別實現元素級、Series級以及DataFrame級別的數據變換;
  • map僅可作用于Series實現元素級的變換,既可以接收一個字典完成變化也可接收特定的函數,而且不僅可作用于普通的Series類型,也可用于索引列的變換,而索引列的變換是apply所不能應用的;
  • applymap僅可用于DataFrame,接收一個函數實現對所有數據實現元素級的變換

 

 

責任編輯:未麗燕 來源: 小數志
相關推薦

2018-01-26 23:23:23

JDBC MySQL數據庫

2018-12-26 09:44:02

分布式緩存本地緩存

2021-01-27 18:13:35

日志nginx信息

2024-01-04 12:33:17

ChatGPTAI視頻

2022-03-21 08:55:53

RocketMQ客戶端過濾機制

2023-12-26 15:10:00

處理二進制文件

2019-03-08 10:08:41

網絡程序猿代碼

2017-12-26 15:41:26

2019-04-28 14:14:48

爬蟲網絡特價機票

2023-01-17 17:54:47

MQ數據丟失

2018-10-22 15:29:50

2022-11-02 07:46:31

GoFrameGcache緩存

2020-12-31 06:12:38

Siri Windows電腦

2023-09-07 06:48:38

Intel顯卡AMD

2023-09-08 06:39:33

NVIDIA顯卡行業

2021-03-18 09:06:17

函數MainJava

2025-03-11 01:28:16

2012-12-28 13:47:36

Raspberry PGeek

2022-01-05 17:13:28

監控HTTPS網站

2017-02-09 17:00:00

iOSSwiftKVC
點贊
收藏

51CTO技術棧公眾號

天天综合91| 色综合久久久久综合一本到桃花网| 欧美一区二区| 亚洲福利影片在线| 国产精品亚洲αv天堂无码| 黄色毛片在线看| 狠狠色狠狠色综合| 欧美激情喷水视频| 人妻熟人中文字幕一区二区| 一区二区三区免费在线看| 精品国产1区2区| 一区二区av| 蜜桃91麻豆精品一二三区| 狂野欧美一区| 欧美国产视频日韩| 久久一级免费视频| 欧美人与动xxxxz0oz| 欧美日韩免费一区二区三区视频| 999一区二区三区| 国产高清免费av在线| 国产精品一区在线观看乱码 | 国产调教视频在线观看| 91在线精品一区二区| 亚洲tv在线观看| 中文字幕在线观看视频免费| 欧美日韩1区| 色偷偷av一区二区三区乱| 黄色片视频免费观看| 高清一区二区中文字幕| 欧美影视一区二区三区| 欧美视频在线播放一区| 欧美人与牲禽动交com| 国产精品美女久久久久久2018| 精品国产综合久久| 午夜精品久久久久久久96蜜桃| 日韩高清一级片| 欧洲亚洲女同hd| 日韩免费一二三区| 午夜国产精品视频免费体验区| 在线观看欧美日韩国产| 中文字幕av网址| 风间由美中文字幕在线看视频国产欧美| 精品视频在线免费观看| 密臀av一区二区三区| 免费h在线看| 精品免费在线观看| 精品国偷自产一区二区三区| 国产激情视频在线| 日韩一区在线看| 在线视频不卡国产| 婷婷免费在线视频| 亚洲私人影院在线观看| 一区二区三区在线视频看| 精品电影在线| 国产欧美日韩一区二区三区在线观看| 久久精品国产精品国产精品污| 视频污在线观看| 91在线视频播放| 欧美精品久久久| 麻豆app在线观看| 国产亚洲欧洲997久久综合| 欧美高清性xxxxhd | 久久精品九色| 日韩欧美一区二区免费| 丰满少妇xbxb毛片日本| 盗摄牛牛av影视一区二区| 亚洲国产高清高潮精品美女| yjizz视频| 日韩手机在线| 在线视频欧美性高潮| 超碰人人人人人人人| 国产精品x453.com| 久久91精品国产91久久跳| 免费在线观看亚洲| 99精品视频免费| 日本aⅴ大伊香蕉精品视频| 四虎影院在线免费播放| 蜜臀av性久久久久蜜臀aⅴ| 国产精品美女久久久久av超清| 在线播放一级片| 久久99久久精品| 超碰国产精品久久国产精品99| 日本波多野结衣在线| 久久久久久毛片| 中文字幕av日韩精品| 制服丝袜在线播放| 精品日本高清在线播放| 亚洲欧美偷拍另类| 一区二区中文字幕在线观看| 日韩精品免费观看| 香蕉成人在线视频| 亚洲国产高清视频| 国产精品久久久久久久久久久久久 | 黄色一级片免费播放| 国产精品视频3p| 亚洲人成电影网站色…| 污污的视频在线免费观看| 极品中文字幕一区| 国产欧美日韩亚洲精品| 人人妻人人玩人人澡人人爽| 国产精品女同一区二区三区| 97免费视频观看| 成人国产在线| 欧美精品一区二| 99热这里只有精品4| 尤物精品在线| 91沈先生作品| 国产视频精选在线| 亚洲高清不卡在线观看| 亚洲一区在线不卡| 欧美色资源站| 欧美片一区二区三区| 国产天堂第一区| 成人app下载| 无颜之月在线看| 日本h片久久| 亚洲精品一区二三区不卡| 中文字幕人妻一区二| 久久永久免费| 好看的日韩精品| 2024最新电影在线免费观看| 欧美在线观看18| 在线 丝袜 欧美 日韩 制服| 激情视频一区二区三区| 成人a视频在线观看| 国产最新视频在线观看| 婷婷夜色潮精品综合在线| 午夜激情视频网| 日韩久久久久| 国产精品日日摸夜夜添夜夜av| 日产精品久久久久久久性色| 亚洲网友自拍偷拍| 波多野结衣中文字幕在线播放| 久久亚洲在线| 国产精品igao视频| 嫩草研究院在线| 黑人精品xxx一区| 99久久久无码国产精品性波多 | 久久精品2019中文字幕| 欧美一级淫片免费视频黄| 99久久精品国产麻豆演员表| 国产aaa免费视频| 欧美影院精品| 欧美乱妇40p| av综合在线观看| 亚洲欧美另类久久久精品2019| 午夜激情av在线| 日韩免费在线| 91免费电影网站| av毛片在线免费| 日韩一区二区在线观看视频播放| 日韩精品123区| 国产一区二区精品在线观看| 熟女视频一区二区三区| 日韩精品一区二区三区免费视频| 久久精品一本久久99精品| 国产精品热久久| 亚洲在线免费播放| 国产又粗又长又爽| 另类天堂av| 婷婷久久五月天| 亚洲一区有码| 美女福利精品视频| www.污网站| 一区二区日韩视频| 国产欧美一区二区在线| 91蝌蚪视频在线观看| 成人影视亚洲图片在线| 国产伊人精品在线| 手机在线免费看av| 亚洲精品福利免费在线观看| 亚洲免费黄色网址| 国产精品美女一区二区在线观看| 97超碰人人爽| 亚洲视频日本| 久久综合九色综合久99| 成人涩涩视频| 操91在线视频| 无码国产精品一区二区色情男同| 一区二区成人在线视频| av无码av天天av天天爽| 日韩精彩视频在线观看| 三年中国中文在线观看免费播放| 中文一区二区三区四区| 日本精品久久久久影院| 三区四区电影在线观看| 日韩精品一区二区三区四区视频 | 国产精品一区二区久久| 午夜激情在线| 亚洲桃花岛网站| 国产99久一区二区三区a片| 欧美日韩国产综合新一区| 亚洲色图欧美色| 粉嫩在线一区二区三区视频| 欧美日韩在线免费播放| 欧美在线免费一级片| 老司机午夜精品视频在线观看| 国产精品国产一区二区| 日本精品裸体写真集在线观看| 久久av中文字幕| 青青草视频在线免费观看| 在线观看91av| 天天干天天色综合| 一区二区三区在线免费观看| 欧美做受xxxxxⅹ性视频| 国产馆精品极品| 天天爱天天操天天干| 亚洲午夜91| 一区高清视频| 色棕色天天综合网| 国产精品久久波多野结衣| 国产精品.xx视频.xxtv| 欧美性在线视频| 最新黄网在线观看| 中文字幕亚洲情99在线| 亚洲人午夜射精精品日韩| 91精品国产一区二区| 国产午夜精品久久久久| 亚洲国产美国国产综合一区二区| 国产精品理论在线| 久久综合精品国产一区二区三区 | 国产精品黄色大片| 亚洲精品日韩专区silk| 国产在线免费av| 久久精品亚洲精品国产欧美kt∨ | 开心激情综合| 99久久伊人精品影院| 91视频成人| 国产精品夜间视频香蕉| 国产一区二区主播在线| 欧美亚洲国产视频小说| 丰满大乳少妇在线观看网站| 久久久精品电影| 日本亚洲精品| 视频直播国产精品| 东热在线免费视频| 亚洲欧美日韩在线高清直播| 青青草超碰在线| 日韩激情视频在线| 天天躁日日躁狠狠躁喷水| 欧美mv日韩mv| www.久久色| 日韩一级二级三级| 国产精品久久久久毛片| 欧美精品在线观看播放| 中文字幕人妻色偷偷久久| 日本精品一级二级| 69视频免费看| 欧美在线影院一区二区| 成人午夜精品视频| 欧美在线视频全部完| 少妇又紧又色又爽又刺激视频| 欧美亚一区二区| 中文字幕a级片| 欧美日韩视频在线第一区| 亚洲天堂网在线观看视频| 欧美性大战久久久| 一二三四区视频| 91精品国产综合久久久久| 99国产在线播放| 精品少妇一区二区三区| 人妻一区二区三区四区| 亚洲女在线观看| √新版天堂资源在线资源| www.xxxx欧美| 天堂av最新在线| 性色av一区二区三区免费| 欧产日产国产精品视频| 国产精品高精视频免费| 亚洲一区二区三区久久久| 国产精品久久久对白| 欧美天堂影院| 神马影院一区二区三区| 91成人精品视频| 国产精品久久久久9999爆乳| 男人的天堂亚洲| 国产成人黄色网址| 国产精品夜夜嗨| 亚洲成人av免费在线观看| 国产精品美女视频| 亚洲精品在线观看av| 91国在线观看| av免费在线不卡| 亚洲精品永久免费| 黄色免费网站在线观看| 久久免费精品日本久久中文字幕| 韩国美女久久| 亚洲在线视频福利| 曰本一区二区三区视频| 正在播放久久| 亚洲欧美不卡| 在线视频日韩欧美| 91美女片黄在线| 国产探花在线播放| 日韩欧美中文字幕在线观看 | 欧美mv和日韩mv国产网站| 暖暖视频在线免费观看| 久久久精品久久| 成人免费无遮挡| 99高清视频有精品视频| 国产精品一区二区三区av麻 | 91精品久久久久久久91蜜桃| 性xxxx18| 欧美成人午夜免费视在线看片| 欧美7777| 国产三区精品| 国产高清久久| 日韩精品一区二区三区不卡| 国产黄色精品网站| 美女av免费看| 狠狠综合久久av一区二区小说| 国产aⅴ一区二区三区| 亚洲少妇激情视频| www.九色在线| 97netav| 日韩欧美在线中字| 欧美精品一区免费| 成人福利视频在线看| 在线观看美女av| 欧美在线观看你懂的| 视频一区二区三区在线看免费看| 欧美老肥婆性猛交视频| 狂野欧美性猛交xxxx| 欧美二级三级| 亚洲在线视频| 亚洲熟女乱综合一区二区三区| 亚洲欧美精品午睡沙发| 国产一区二区三区中文字幕| 亚洲人成绝费网站色www| 成人三级高清视频在线看| 亚洲在线免费观看| 亚洲影视一区二区三区| 黄色小视频免费网站| 欧美激情一区二区三区不卡| 最新中文字幕一区| 日韩av影视综合网| 波多野结依一区| 成人做爰66片免费看网站| 亚洲女同中文字幕| 一级做a爱视频| 亚洲人成小说网站色在线| 亚洲天堂手机版| 精品国产欧美一区二区五十路 | 欧美日韩精品欧美日韩精品一 | 精品福利一区| 国产3p露脸普通话对白| 成人福利在线看| 999这里只有精品| 日韩精品极品在线观看播放免费视频 | 亚洲一区二区三区在线免费| 国产肉体ⅹxxx137大胆| 懂色av一区二区夜夜嗨| 国产精品成人aaaa在线| 亚洲精品美女久久| 中文字幕资源网在线观看免费 | 麻豆短视频在线观看| 亚洲成人一区在线| 亚洲日本在线播放| 人九九综合九九宗合| 欧美日韩在线观看视频小说| 黄色成人免费看| 最新国产精品久久精品| 999av视频| 97视频免费看| 精品一区三区| www.久久av.com| 一区二区在线观看不卡| 手机看片1024国产| 国产mv免费观看入口亚洲| 久久社区一区| 少妇精品无码一区二区| 欧美日韩在线视频观看| 大胆av不用播放器在线播放 | 久久婷婷国产91天堂综合精品| 国产女人aaa级久久久级| 国产精品女同一区二区| 欧美激情综合色| 久9久9色综合| 无套内谢丰满少妇中文字幕| 亚洲v中文字幕| jizz在线观看视频| 91久久大香伊蕉在人线| 99综合在线| 天堂а√在线中文在线鲁大师| 91精品国产手机| 97se综合| www.黄色网址.com| bt欧美亚洲午夜电影天堂| 国产成人麻豆免费观看| 欧美成人免费小视频| 偷拍一区二区| 久久综合在线观看| 欧美日韩亚洲一区二区三区| 男女啪啪在线观看| 久久99国产精品| 精品一区二区日韩| 国产www在线| 久99久在线视频| 日韩欧美电影| 菠萝菠萝蜜网站|