概要
pandas の apply、applymap、map の使い方について解説します。
関数一覧
DataFrame | Series |
---|---|
pandas.DataFrame.apply | pandas.Series.apply |
pandas.DataFrame.applymap | |
pandas.Series.map |
pandas.DataFrame.apply
pandas.DataFrame.apply は、DataFrame の列または行単位で関数を適用する場合に使用します。
引数
名前 | 型 | デフォルト値 |
---|---|---|
func | function | |
列または行に適用する関数 | ||
axis | {0 or ‘index’, 1 or ‘columns’} | 0 |
関数を適用する axis 方向 | ||
raw | bool | False |
True の場合、関数は ndarray オブジェクトを受け取る。False の場合、関数は Series オブジェクトを受け取る。 | ||
result_type | {‘expand’, ‘reduce’, ‘broadcast’, None} | None |
axis=1 のみ有効な設定
| ||
args | tuple | |
関数に追加の位置引数を渡す場合は指定する。 | ||
**kwds | ||
関数に追加のキーワード引数を渡す場合は指定する。 |
返り値
名前 | 説明 |
---|---|
Series or DataFrame | 関数を適用した結果 |
サンプルコード
In [1]:
A | B | |
---|---|---|
0 | 1 | 1 |
1 | 2 | 2 |
2 | 3 | 3 |
In [2]:
A | B | |
---|---|---|
0 | 1 | 1 |
1 | 4 | 4 |
2 | 9 | 9 |
axis – 関数を適用する方向を指定する
axis=0
の場合、列方向に適用します。
In [3]:
A | B | |
---|---|---|
0 | 0.333333 | 0.333333 |
1 | 0.666667 | 0.666667 |
2 | 1.000000 | 1.000000 |
axis=1
の場合、列方向に適用します。
In [4]:
A | B | |
---|---|---|
0 | 0.5 | 0.5 |
1 | 1.0 | 1.0 |
2 | 1.5 | 1.5 |
raw – Series の代わりに ndarray を関数に渡す
In [5]:
A | B | |
---|---|---|
0 | 1 | 0 |
1 | 0 | 2 |
2 | 2 | 1 |
result_type – apply() の返り値の形状を設定する
この設定は axis=1
の場合のみ有効です。
In [6]:
0 | 1 | 2 | |
---|---|---|---|
0 | 4 | 5 | 6 |
1 | 4 | 5 | 6 |
2 | 4 | 5 | 6 |
In [7]:
0 (4, 5, 6) 1 (4, 5, 6) 2 (4, 5, 6) dtype: object
In [8]:
A | B | |
---|---|---|
0 | 4 | 4 |
1 | 4 | 4 |
2 | 4 | 4 |
In [9]:
0 | 1 | |
---|---|---|
0 | 4 | 5 |
1 | 4 | 5 |
2 | 4 | 5 |
In [10]:
0 4 1 4 2 4 dtype: int64
args, kwargs – 関数に渡す追加の引数を設定する
In [11]:
A | B | |
---|---|---|
0 | 3 | 3 |
1 | 4 | 4 |
2 | 5 | 5 |
In [12]:
A | B | |
---|---|---|
0 | 3 | 3 |
1 | 4 | 4 |
2 | 5 | 5 |
pandas.DataFrame.applymap
pandas.DataFrame.applymap は、DataFrame の各要素に対して関数を適用する場合に使用します。
引数
名前 | 型 | デフォルト値 |
---|---|---|
func | callable | |
1つの値を返す関数 |
返り値
名前 | 説明 |
---|---|
DataFrame | 関数を適用した結果 |
サンプルコード
In [13]:
0 | 1 | |
---|---|---|
0 | 123 | 1234 |
1 | 12345678 | 12345 |
In [14]:
0 | 1 | |
---|---|---|
0 | 3 | 4 |
1 | 8 | 5 |
pandas.Series.apply
pandas.Series.apply は、Series の各値に関数を適用して変換します。
引数
名前 | 型 | デフォルト値 |
---|---|---|
func | function | |
適用する関数 | ||
convert_dtype | bool | True |
関数をした適用した結果、最適な型がある場合はその型にキャストする。 | ||
args | tuple | |
関数に渡す位置引数がある場合は指定する。 | ||
**kwds | ||
関数に渡すキーワード引数がある場合は指定する。 |
返り値
名前 | 説明 |
---|---|
Series or DataFrame | 関数が Series を返す場合、それを各行とした DataFrame を返す |
サンプルコード
In [15]:
0 1.000000 1 1.414214 2 1.732051 dtype: float64
In [16]:
0 | 1 | 2 | |
---|---|---|---|
0 | 1 | 1 | 1 |
1 | 2 | 4 | 8 |
2 | 3 | 9 | 27 |
pandas.Series.map
pandas.Series.map は、dict または関数で変換方法を指定して、値を変換します。
引数
名前 | 型 | デフォルト値 |
---|---|---|
arg | function, collections.abc.Mapping subclass or Series | |
変換方法 | ||
na_action | {None, ‘ignore’} | None |
“ignore” の場合、NaN の値は関数の適用をスキップします。 |
返り値
名前 | 説明 |
---|---|
Series | 変換結果 |
サンプルコード
args が dict の場合
args
に変換前の値を key、変換後の値を value とした dict を指定した場合、その辞書に従い変換します。
辞書に key が存在しない場合は NaN に変換されます。
In [17]:
0 kitten 1 puppy 2 NaN 3 NaN dtype: object
args が関数の場合
args
が関数の場合は pandas.Series.apply
と同じ挙動になります。
In [18]:
0 1 1 4 2 9 dtype: int64
In [ ]:
na_action
na_action=True
の場合、NaN には関数を適用しません。
In [19]:
0 I am a cat 1 I am a dog 2 I am a nan 3 I am a rabbit dtype: object 0 I am a cat 1 I am a dog 2 NaN 3 I am a rabbit dtype: object
コメント