【Pandas】apply,applymap和map的區別
阿新 • • 發佈:2019-01-14
結論
- apply:用在dataframe上,用於對row或者column進行計算;
- applymap:用於dataframe上,是元素級別的操作;
- map:(其實是python自帶的)用於series上,是元素級別的操作。
apply函式
apply函式:pandas裡面所有函式中自由度最高的函式。該函式如下:
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
該函式最有用的是第一個引數,這個引數是函式,相當於C/C++的函式指標。
這個函式需要自己實現,函式的傳入引數根據 axis
來定,比如 axis = 1
,就會把一行資料作為Series的資料
結構傳入給自己實現的函式中,我們在函式中實現對Series不同屬性之間的計算,返回一個結果,則apply函式
會自動遍歷每一行DataFrame的資料,最後將所有結果組合成一個Series資料結構並返回。
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],
})
print(df1)
print(df1.apply(lambda x :x.max()-x.min(),axis=1))
# 0 4
# 1 7
# 2 4
# dtype: int64
print(df1.apply(lambda x :x.max()-x.min(),axis=0))
# sales1 4
# sales2 12
# dtype: int64
applymap函式
當我們要對資料框(DataFrame)的每一個數據進行操作時用applymap(),返回結果是DataFrame格式
df1.applymap(lambda x : 1 if x>0 else 0)
# 從下面的結果可以看出,我們使用了applymap函式之後,
# 系統自動對每一個數據進行判斷,判斷之後輸出結果
map函式
當我們要對Series的每一個數據進行操作時用map()
df1.sales1.map(lambda x : 1 if x>0 else 0)
輸出結果
# 0 0
# 1 1
# 2 1
# Name: sales1, dtype: int64