Pandas applyのおさらい

ラムダ式の用法をマスターする上で、applyの知識をおさらいしておく。

apply

apply関数は、データフレームもシリーズも適用することができる関数。

似た関数にはmapやapplymapがある。mapはシリーズに使用、applymapはデータフレームの各要素に適用する。applyは各行・各列に適用させることができる。

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['A','B','C'])
print (df)

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
def add(x):
    return x+10

df.apply(add)

	  A	B	C
0	11	12	13
1	14	15	16
2	17	18	19

特に指定なく使用すると、データフレーム全体に関数が適用される。

df['A'].apply(add)

0    11
1    14
2    17
Name: A, dtype: int64

列に対して適用すると、シリーズが帰ってくる。

ラムダ式で記述すると、こうなる。

df['A'].apply(lambda x: x+10)

0    11
1    14
2    17
Name: A, dtype: int64

かっこいい…。

よく使う引数、axisの挙動は

df.apply(np.sum, axis=0) # 行に適用(デフォルトはこちら)

A    12
B    15
C    18
dtype: int64

df.apply(np.sum, axis=1) # 列に適用

0     6
1    15
2    24
dtype: int64

applymap

applymapの特徴は、データフレームの要素に対して適用させるところ。そのため、データフレーム以外に用いることができない。applyはデータフレームの行や列に対して適用させるところが異なる。

そのためシリーズ(今回はデータフレームの列)に対してapplymapを適用すると、エラーになる。

df['A'].applymap(lambda x: x*2)

AttributeError: 'Series' object has no attribute 'applymap'

若干使いどころに困る。知識として覚えておく。

このサイトの主
投稿を作成しました 98

関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る