はじめに
今回はpandasのオブジェクトに対して関数を適用する方法について扱います。シリーズやデータフレームに対して、関数を適用したいことがありますよね。
pandasのシリーズとデータフレームはNumpyの関数を直接適用することが鹿野です。これ以外に自作の関数などを適用するようなときには、pplyメソッドが用意が便利です。
サンプルデータの作成
val=np.random.randint(-100,100,size=9).reshape(3,3)
df=pd.DataFrame(val,index=list('def'),columns=list('abc'))
df
applyメソッド
まずは平均値を求めてみましょう。次のようにします。
df.apply('mean')
applyメソッドにはaxis引数が用意されています。初期値は0なので今回は列方向の平均が算出されました。行方向に関数を適用したい場合はaxis=1を指定します。
df.apply(np.sum,axis=1)
mean関数やsum関数は任意の方向で集約された値がシリーズとして戻ります。よって、applyメソッドの戻りもシリーズでした。applyメソッドへ指定する関数の戻しがデータフレームの場合は、applyメソッドの戻しもデータフレームとなります。
現場で使える! PANDASデータ前処理入門 機械学習・データサイエンスで役立つ前処理手法
df.apply(lambda x:x+2)
aggメソッド
applyメソッドと類似したメソッドとして、データフレームとシリーズにはaggメソッドがあります。1つの関数を適用する場合はapplyメソッドと同等ですが、aggメソッドは複数の関数を適用することに適しています。
df.agg(['max','min'])
aggメソッドへ{カラムラベル:関数}のようなディクショナリを指定することで、異なる関数を違うカラムごとに適用することが可能です。
df.agg({'a':['min','max'],'b':'sum'})
applymapメソッド
データフレームの各要素毎に処理をおこなう関数を適用する場合はapplymapメソッドを使います。
df.applymap(lambda x:True if x >0 else False)
データフレームの各要素に関数を適用するので、結果もデータフレームになります。
まとめ
今回はデータフレームに関数を適用すると方法を扱いました。データ分析をしていると、データフレームに関数を適用したいケースがよくあります。しっかり復習しておきましょう。
コメント