Pandas數據處理|apply()函數的常規用法

2021-03-02 小張Python

本文介紹一下關於 Pandas 中 apply() 函數的幾個常見用法,apply() 函數的自由度較高,可以直接對 Series 或者 DataFrame 中元素進行逐元素遍歷操作,方便且高效,具有類似於 Numpy 的特性。

apply() 使用時,通常放入一個 lambda 函數表達式、或一個函數作為操作運算,官方上給出的 apply() 用法:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds

func 代表的是傳入的函數或 lambda 表達式;

axis 參數可提供的有兩個,該參數默認為0/列

0 或者 index ,表示函數處理的是每一列;

1 或 columns ,表示處理的是每一行;

raw ;bool 類型,默認為 False;

False ,表示把每一行或列作為 Series 傳入函數中;

True,表示接受的是 ndarray 數據類型;

apply() 最後的是經過函數處理,數據以 Series 或 DataFrame 格式返回。

下面用幾個例子來介紹一下 apply() 的具體使用;

DataFrame 使用apply()

1,計算每個元素的平方根

這裡為了方便,直接用到 numpy 的 sqrt 函數;

>>> df  =pd.DataFrame([[4,9]]*3,columns = ['A','B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9


>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

2,計算每一行元素的平均值

這裡傳入數據是以列的形式存在的,所以 axis = 0,即可以省略;

>>> df.apply(np.mean)
A    4.0
B    9.0

3,計算每一列元素的平均值

與 2 不同的是這裡以行的行形式傳入,要加一個參數 axis =1;

>>> df.apply(np.mean,axis = 1)
0    6.5
1    6.5
2    6.5
dtype: float64

4,添加新列C,其值分別為列A、B之和

實現這個功能,最簡單的一行代碼即可實現:

df['C'] = df.A +df.B

但這裡要用 apply() 來實現,實現對列間操作的用法,操作步驟分為下面兩步:

1,先定義一個函數實現 列A + 列B ;

2,利用apply() 添加該函數,且數據需要逐行加入,因此設置axis = 1

>>> def Add_a(x):
...   return x.A+x.B

>>> df['C'] = df.apply(Add_a,axis=1)
>>> df
   A  B   C
0  4  9  13
1  4  9  13
2  4  9  13

Series 使用apply()

Series 使用 apply() 函數與 DataFrame 相似,用法上最大區別就是加了一個列名 DataFram.類名

1,列 A 中所有元素加 1

不用 apply() 的方法

df.A =df.A +1

利用 apply() 函數進行操作,這裡我傳入一個 lambda 函數:

>>> df.A = df.A.apply(lambda x:x+1)
>>> df
   A  B   C
0  5  9  13
1  5  9  13
2  5  9  13

2,判斷列 A 中元素是否能夠被2整除,用 Yes 或 No在旁邊標註

>>> df.A = df.A.apply(lambda x:str(x)+"\tYes" if x%2==0 else str(x)+"\tNo")
>>> df
       A  B
0  5\tNo  9
1  5\tNo  9
2  5\tNo  9

apply() 的大部分用法都是上面幾點,這裡列的例子較簡單一些,但對於基礎用法理解上來說已經足夠了。

以上就是本文的所有內容,最後感謝大家閱讀!

推薦閱讀:

相關焦點

  • 不再糾結,一文詳解pandas中的map、apply、applymap、groupby、agg...
    二、非聚合類方法這裡的非聚合指的是數據處理前後沒有進行分組操作,數據列的長度沒有發生改變,因此本章節中不涉及groupby()。2.2 apply()apply()堪稱pandas中最好用的方法,其使用方式跟map()很像,主要傳入的主要參數都是接受輸入返回輸出。但相較於map()針對單列Series進行處理,一條apply()語句可以對單列或多列進行運算,覆蓋非常多的使用場景。
  • Pandas三大利器-map、apply、applymap
    、apply、applymap實際工作中,我們在利用 pandas進行數據處理的時候,經常會對數據框中的單行、多行(列也適用)甚至是整個數據進行某種相同方式的處理,比如將數據中的 sex欄位將 男替換成1,女替換成0。
  • 數據分析工具篇——pandas高效函數
    ,這些方法圍繞數據的查詢結果進行深入處理,在數據分析中主要做特徵處理工作。2)map函數:Map函數不僅在python中有,在底層大數據結構中mapreduce的結構,有意思的是這兩個的基本邏輯也有相似之處:它是一個映射函數,可以按照寫好的函數方法,對數據集進行映射處理:def square(x) : return x ** 2print(list
  • Pandas中第二好用的函數 | 優雅的apply
    做人嘛,最重要的就是謙虛,做函數也是一樣的,而apply就是這樣一個優雅而謙虛的函數。我們單獨用一篇來為apply樹碑立傳,原因有二,一是因為apply函數極其靈活高效,甚至是重新定義了pandas的靈活,一旦熟練運用,在數據清洗和分析界可謂是「屠龍在手,天下我有」;二是apply概念相對晦澀,需要結合具體案例去咀嚼和實踐。
  • Python數學建模技巧之pandas數據處理
    最常見的庫有進行矩陣運算的Numpy、進行數據處理的pandas、進行科學計算的Scipy、進行圖形繪製及科學可視化的matplotlib、進行符號計算的Sympy以及方便進行機器學習任務的Sklearn。由於今年美賽官方公告中稱,將會提前在賽題公布之前就提供下載C題數據集的方式。
  • 使用pandas做數據分析,掌握這些函數就夠了
    pandas是數據分析師最常用的工具之一,掌握以下函數足以應對工作中的各種需求,P4 數據集描述P5 重命名列名稱P6 刪除列P7 整體排序P8 通過列條件篩選數據P9 多條件篩選P11 怎樣使用axis參數P12 字符串方法P13 改變數據類型P14 什麼時候使用groupbyP15 探索seriesP16 處理缺失值P17 關於indexP18 選擇多行或多列
  • R語言向量化運算:apply函數族用法心得
    所謂apply函數族,指的是以apply函數為核心,包括lapply, sapply, tapply, mapply, rapply, vapply, eapply等在內八個函數。apply函數可以對矩陣和數組以及數據框按照指定的函數在不同維度上進行循環運算,其用法如下:apply(X,margin,FUN,...)
  • 【數據分析】Pandas
    Python數據分析的工具包,它是基於Numpy構建的,正因pandas的出現,讓Python語言也成為使用最廣泛而且強大的數據分析環境之一。GroupBy當中自由度最高的方法就是apply,它會將待處理的對象拆分為多個片段,然後各個片段分別調用傳入的函數,最後將它們組合到一起。
  • Pandas中groupby的這些用法你都知道嗎?
    是pandas中用於數據分析的一個重要功能,其功能與SQL中的分組操作類似,但功能卻更為強大。03 轉換(apply)——agg/apply/transform分組之後的第二個步驟即為分組轉換操作,也就是應用(apply)一定的函數得到相應的結果。
  • pandas 中這 3 個函數,沒想到竟成了我數據處理的主力!
    今天,延承這一系列,再分享三個函數,堪稱是個人日常在數據處理環節中應用頻率較高的3個函數:apply、map和applymap,其中apply是主角,map和applymap為贈送。數據處理環節無非就是各種數據清洗,除了常規的缺失值和重複值處理邏輯相對較為簡單,更為複雜的其實當屬異常值處理以及各種數據變換:例如類型轉換、簡單數值計算等等。
  • 理解pandas中的apply和map的作用和異同
    (模塊Ⅰ)    1月11-16日  Stata 應用能力提升與實證前沿(模塊Ⅱ)  地點浙江 · 杭州(浙江工商大學)  pandas中的數據類型>我們可以將pandas中的數據簡單的認為只有下面這兩種這兩種數據類型都有map和apply方法Series: apply和mapDataFrame: applySeries.mapSeries.map(arg)傳入的arg : 操作函數、字典或Series返回Series
  • Pandas數據處理map, apply, applymap, Transform詳解
    (func, axis=0, raw=False, result_type=None, args=(), **kwds)沿著DataFrame的軸應用一個函數傳遞給函數的對象是Series對象,其索引要麼是DataFrame的索引(軸=0),要麼是DataFrame的列(axis=1)。
  • Python數據分析中第二好用的函數 | apply
    做人嘛,最重要的就是謙虛,做函數也是一樣的,而apply就是這樣一個優雅而謙虛的函數。我們單獨用一篇來為apply樹碑立傳,原因有二,一是因為apply函數極其靈活高效,甚至是重新定義了pandas的靈活,一旦熟練運用,在數據清洗和分析界可謂是「屠龍在手,天下我有」;二是apply概念相對晦澀,需要結合具體案例去咀嚼和實踐。appl
  • 當pandas遇上數據類型問題
    而在pandas中,一般情況下會根據我們導入的數據,自動分配最合適的數據類型。但是有時候pandas也會犯錯,這時候我們就需要diy自定義數據類型。本文主要將pandas的dtype,如何進行數據類型的操作。pands數據類型數據類型是程式語言的基礎性概念,ta會告訴電腦如何存儲數據、如何操作數據。
  • Pandas的函數應用及映射方法
    CDA數據分析師 出品在數據分析師日常的數據清洗工作中,經常需要對數據進行各種映射變換,通過Pandas可以非常方便地解決此問題,其提供了map()、apply()、mapapply()等方法,下面將一一詳細介紹這三個映射函數的用法及三者的區別。
  • pandas指南:做更高效的數據科學家
    今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。
  • 數據處理利器pandas入門
    我們以全國空氣品質歷史數據(http://beijingair.sinaapp.com)為例,通過實際的數據處理來介紹一下常用的操作。對於時間跨度比較長的數據,也可以求逐日平均,逐月平均等等DataFrame.resmaple('1d').mean(), DataFrame.resample('2m').mean()對行或列應用函數: .apply上面在創建時間索引時便利用了
  • Pandas常用的數據處理方法
    >Pandas中合併數據集有多種方式,這裡我們來逐一介紹1.1 資料庫風格合併資料庫風格的合併指根據索引或某一列的值是否相等進行合併的方式,在pandas中,這種合併使用merge以及join函數實現。
  • 用pandas處理時間格式數據
    本文2023字,預計閱讀需10分鐘;我們在處理時間相關的數據時有很多庫可以用,最常用的還是內置的datetime、time這兩個。
  • R 語言 apply 族函數基本用法(一)
    下面介紹 7 種 apply 族循環函數和 2 個其他循環函數,讓你在數據統計和建模時更有效率。一、apply函數函數用法:apply(X, MARGIN, FUN, ...)函數前面接受 3 個參數,返回一個向量。