1. 程式人生 > 實用技巧 >python中的apply(),applymap(),map() 的用法和區別

python中的apply(),applymap(),map() 的用法和區別

在Python中如果想要對資料使用函式,可以藉助apply(),applymap(),map() 來應用函式,括號裡面可以是直接函式式,或者自定義函式(def)或者匿名函式(lambad)

import pandas as pd
import numpy as np
from pandas import DataFrame
from pandas import Series
df1= DataFrame({
                "sales1":[-1,2,3],
                "sales2":[3,-5,7],
               })
df1

1、當我們要對資料框(DataFrame)的資料進行按行或按列操作時用apply()

df1.apply(lambda x :x.max()-x.min(),axis=1)
#axis=1,表示按行對資料進行操作
#從下面的結果可以看出,我們使用了apply函式之後,系統自動按行找最大值和最小值計算,每一行輸出一個值
0    4
1    7
2    4
dtype: int64

df1.apply(lambda x :x.max()-x.min(),axis=0)
#預設引數axis=0,表示按列對資料進行操作
#從下面的結果可以看出,我們使用了apply函式之後,系統自動按列找最大值和最小值計算,每一列輸出一個值
sales1     4
sales2    12
dtype: int64

2、當我們要對資料框(DataFrame)的每一個數據進行操作時用applymap(),返回結果是DataFrame格式
df1.applymap(lambda x : 1 if x>0 else 0)
#從下面的結果可以看出,我們使用了applymap函式之後,
#系統自動對每一個數據進行判斷,判斷之後輸出結果

3、當我們要對Series的每一個數據進行操作時用map()

df1.sales1.map(lambda x : 1 if x>0 else 0)
#df1.sales1就是一個Series
0    0
1    1
2    1
Name: sales1, dtype: int64

4、總結:要對資料進行應用函式時,先看資料結構是DataFrame還是Series,Seriesj結構直接用map(),DataFrame結構的話再看是要按行還是按列進行操作來選擇對應的函式即可~