なんか便利そうだけど、よく分からないので触れずにいたラムダ関数をマスターすべく、勉強することにする。λを見ると、Half-Lifeしか思い浮かばない。
とっても分かりやすいnoteがあったので、それに従って進めていく。
https://note.com/enkey/n/n6c60800c9b43
spam = lambda x: x + 3
spam(5)
8
うーん。うん。これだとよく分からない。
# ライブラリのインストール
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# データフレームをつくる
df = pd.DataFrame({
'id':[1,2,3,4,5],
'name':['Jeremy', 'Frank', 'Janet', 'Ryan', 'Mary'],
'age':[20,25,15,10,30],
'income':[4000,7000,200,0,10000]
})
df
id name age income
0 1 Jeremy 20 4000
1 2 Frank 25 7000
2 3 Janet 15 200
3 4 Ryan 10 0
4 5 Mary 30 10000
年齢と収入のデータフレームができた。
# apply関数で使ってみる
df['age'] = df.apply(lambda x: x['age']+30, axis=1)
df
id name age income
0 1 Jeremy 50 4000
1 2 Frank 55 7000
2 3 Janet 45 200
3 4 Ryan 40 0
4 5 Mary 60 10000
30歳プラスされた。
df['age'] = df['age'] + 30
df
こっちのほうが分かりやすい、が、新しいことを覚えないと前に進まないのだ。
上のラムダ式の場合、データフレームに対してapplyを適用する。下のやり方だとシリーズに対して30を足していくスタイル。下の方法(シリーズに適用)をラムダ式で記述すると、下記のようになる。
df['age'] = df['age'].apply(lambda x: x+3)
applyの用法が若干怪しいので、一度そちらをおさらいする。