【Python基础】pandas中apply与map的异同
生活随笔
收集整理的這篇文章主要介紹了
【Python基础】pandas中apply与map的异同
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
◆?◆?◆ ?◆?◆
前言
pandas作為數據處理與分析的利器,它的江湖地位非同小可。在我們數據處理與分析過程中,有時候需要對某一列的每一個值都進行處理,這時候推薦大家使用apply或者map。
但是,二者又有啥區別呢?一起來通過幾個小例子學習一下吧。
APPLY
一、直接使用內置函數或者numpy函數
# 數據展示 >>> df Out[1]:姓名 年齡 0 alan 19 1 black 15 2 cici 23 3 david 22 4 eric 18#?計算字符長度 >>> df['姓名'].apply(len) Out[2]:? 0 4 1 5 2 4 3 5 4 4 Name: 姓名, dtype: int64# 計算平方 >>> df['年齡'].apply(np.square) Out[3]:? 0 361 1 225 2 529 3 484 4 324 Name: 年齡, dtype: int64二、使用lambda匿名函數
三、使用def自定義函數
# 自定義函數 def fn(x):if x >=18:return '成年人'else:return '未成年'# 自定義函數作為apply參數?????? >>> df['年齡'].apply(fn) Out[6]:? 0 成年人 1 未成年 2 成年人 3 成年人 4 成年人 Name: 年齡, dtype: object需要注意的是,apply不僅可以用于Series,還可用于DataFrame,具體可以根據自己的業務需要,及數據處理規范來使用即可。
MAP
一、直接使用內置函數或者numpy函數
# 計算字符長度 >>> df['姓名'].map(len) Out[7]:? 0 4 1 5 2 4 3 5 4 4 Name: 姓名, dtype: int64# 計算平方 >>> df['年齡'].map(np.square) Out[8]:? 0 361 1 225 2 529 3 484 4 324 Name: 年齡, dtype: int64二、使用lambda匿名函數
# 根據年齡打標簽:是否成年 >>>?df['年齡'].map(lambda?x:?'已成年'?if?x>=18?else?'未成年') Out[9]:? 0 已成年 1 未成年 2 已成年 3 已成年 4 已成年 Name: 年齡, dtype: object# 修改姓名為首字母大寫 >>>?df['姓名'].map(lambda?x:?x.title()) Out[10]:? 0 Alan 1 Black 2 Cici 3 David 4 Eric Name: 姓名, dtype: object三、使用def自定義函數
#?自定義函數作為map參數?????? >>> df['年齡'].map(fn) Out[11]:? 0 成年人 1 未成年 2 成年人 3 成年人 4 成年人 Name: 年齡, dtype: object四、使用dict作為map參數
# apply沒有這種功能! >>> df['姓名'].map({'alan':'女','black':'男','cici':'女','david':'男','eric':'男'}) Out[12]:? 0 女 1 男 2 女 3 男 4 男 Name: 姓名, dtype: object通過上面的小例子講解,我們可以得出以下結論:
(1)map、apply在用于Series時,對每一個值進行處理,兩者并沒有什么區別。(是否受數據量影響可以自行驗證)
(2)apply不僅可以用于Series,還可以用于DataFrame;而map只能用于Series。
(3)一般情況下,apply應用更廣泛,尤其是自定義函數帶多個參數時,建議使用apply。
記得點在看~祝大家一夜暴富,基金、股票一片紅~
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯總結
以上是生活随笔為你收集整理的【Python基础】pandas中apply与map的异同的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】机器学习训练中常见的问题
- 下一篇: 【数据分析】Databricks入门:分