apply()
apply()屬于DataFrame、Series對象的方法,可以針對DataFrame中的行數(shù)據(jù)或列數(shù)據(jù)、以及Series中數(shù)據(jù)應用操作。對DataFrame時,默認axis=0時,以列為單位進行操作;axis=1時,以行為單位進行操作??墒褂镁酆虾瘮?shù)。
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.rand(4, 3), columns = list('abc'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])
print(frame)
# 輸出如下:
# a b c
# Utah 0.443188 0.919623 0.550259
# Ohio 0.013923 0.557696 0.723975
# Texas 0.865469 0.720604 0.081306
# Oregon 0.506174 0.212421 0.061561
func = lambda x: x.max() - x.min()
print(frame.apply(func))
# 輸出如下:
# a 0.851545
# b 0.707202
# c 0.662415
# dtype: float64
applymap()
applymap()是pandas里DataFrame的方法,它對DataFrame中的所有元素應用操作,不能使用聚合函數(shù)。
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.rand(4, 3), columns = list('abc'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])
print(frame)
# 輸出如下:
# a b c
# Utah 0.443188 0.919623 0.550259
# Ohio 0.013923 0.557696 0.723975
# Texas 0.865469 0.720604 0.081306
# Oregon 0.506174 0.212421 0.061561
#注意使用applymap()可以格式化字符串,使用apply()會報錯,可采用函數(shù)的方法達到相同的目的。
func = lambda x: f'{x:.2f}%'
print(frame.applymap(func))
# 輸出如下:
# a b c
# Utah 0.34% 0.43% 0.67%
# Ohio 0.75% 0.50% 0.14%
# Texas 0.68% 0.28% 0.90%
# Oregon 0.05% 0.86% 0.78%
agg()
agg()屬于DataFrame、Series對象的方法,可與聚合函數(shù)一起使用,例如sum、avg、count等。
#對dataframe指定列進行指定的聚合運算
df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[np.nan, np.nan, np.nan]],
columns=['A', 'B', 'C'])
df.agg({'A' : ['sum', 'min'], 'B' : ['min', 'max']})
#輸出:
A B
max NaN 8.0
min 1.0 2.0
sum 12.0 NaN
transform()
transform()對DataFrame、Series的每個元素進行操作(以列為單元執(zhí)行),可與聚合函數(shù)一起使用,返回的DataFrame結(jié)構(gòu)和原數(shù)組一致。
df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})
df
A B
0 0 1
1 1 2
2 2 3
df.transform(lambda x: x + 1)
A B
0 1 2
1 2 3
2 3 4
#transform使用多個自定義函數(shù)
df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})
trans=df.transform([np.sqrt, np.exp])
A B
sqrt exp sqrt exp
0 0.000000 1.000000 1.000000 2.718282
1 1.000000 2.718282 1.414214 7.389056
2 1.414214 7.389056 1.732051 20.085537
map()
map()是python自帶的方法,可以在DataFrame中對具體的某一列使用.map()后綴的方式調(diào)用,對整個DataFrame使用會報錯,不能使用聚合函數(shù)。
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.rand(4, 3), columns = list('abc'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])
print(frame)
# 輸出如下:
# a b c
# Utah 0.443188 0.919623 0.550259
# Ohio 0.013923 0.557696 0.723975
# Texas 0.865469 0.720604 0.081306
# Oregon 0.506174 0.212421 0.061561
func = lambda x: f'{x:.2f}%'
print(frame['a'].map(func))
# 輸出如下:
# Utah 0.65%
# Ohio 0.90%
# Texas 0.09%
# Oregon 0.72%
# Name: a, dtype: object