Pythonのlambdaとapply、mapの使い方

4637 ワード

1 lambda
Lambdaプロトタイプ:lambdaパラメータlambdaパラメータ:操作(パラメータ)
Lambda関数は匿名関数とも呼ばれ、特定の名前のない関数であり、関数が必要な場所で使用できる単行関数を迅速に定義できます.これはdefで定義された関数とは異なります.
Lambdaとdefの違い:
1)defの作成方法には名前がありますが、lambdaにはありません.
2)lambdaは関数オブジェクトを返しますが、このオブジェクトは識別子を与えません.defは関数オブジェクトを変数(関数名)に割り当てます.
3)lambdaは式にすぎず,defは文である.
4)lambda式:「後には1つの式しかありませんが、defは複数あります.
5)ifやforやprintのような文はlambdaでは使用できません.defは使用できます.
6)lambdaは一般的に簡単な関数を定義するために用いられ、defは複雑な関数を定義することができる.
1.1最も簡単な例を挙げる

#      :
g = lambda x: x ** 2
print(g(3))
"""
9
"""

#      :
g = lambda x, y, z: (x + y) ** z
print(g(1, 2, 2))
"""
9
"""

1.2

list :


map(lambda x: x * x, [y for y in range(10)])


def sq(x):
    return x * x


map(sq, [y for y in range(10)])

( ) , 。

, , 。 ?


a = [1, 2, 3]


f = lambda x : x + 1

, , 。 [1, 2, 3] , lambda x : x + 1 , 「 」 。

2 map

map() , 。 a f,


map(f, a)

f a , [2, 3, 4]。 lambda f, :


map(lambda x: x + 1, [1, 2, 3])


a = [1, 2, 3]
r = []
for each in a:
    r.append(each + 1)

3 Apply

Python apply :

apply(func,*args,**kwargs)

,func 。

: , ,

:args , , A A(a=1,b=2), (a=3,b=4), (b=4,a=3) 。kwargs , args ,kwargs , args 。

apply func 。

3.1


from past.builtins import apply


def function(a, b):
    print(a, b)


apply(function, 'good', 'better')
apply(function, 2, 3 + 6)
apply(function, ('good',), {'b': 'better'})


good better
2 9
('good',) {'b': 'better'}

3.2 DataFrame apply


#       
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])
print(df)
"""
               b         d         e
utah   -0.667969  1.974801  0.738890
ohio   -0.896774 -0.790914  0.474183
texas   0.043476  0.890176 -0.662676
oregon  0.701109 -2.238288 -0.154442
"""
 
#                   。DataFrame apply         
f=lambda x:x.max()-x.min()
#           ,        
t1=df.apply(f)
print(t1)
t2=df.apply(f,axis=1)
print(t2)
 
"""
b    1.597883
d    4.213089
e    1.401566
dtype: float64
utah      2.642770
ohio      1.370957
texas     1.552852
oregon    2.939397
dtype: float64
"""
 
#    ,   apply               Series
def f(x):
    return pd.Series([x.min(),x.max()],index=['min','max'])
t3=df.apply(f)
#          ,       ,                
print(t3)
 
"""
            b         d         e
min -0.896774 -2.238288 -0.662676
max  0.701109  1.974801  0.738890
"""
 
#    python  ,           
# DataFrame             
f=lambda x: '%.2f'%x
t3=df.applymap(f)
print(t3)
"""
            b      d      e
utah    -0.67   1.97   0.74
ohio    -0.90  -0.79   0.47
texas    0.04   0.89  -0.66
oregon   0.70  -2.24  -0.15
"""
 
#  ,      map,   Series         map  。 dataframe  applymap。
t4=df['e'].map(f)
print(t4)
 
"""
utah     0.74
ohio     0.47
texas   -0.66
oregon  -0.15
"""