map関数を使うgroupby関数との併用にはapplyを使うまとめ参考PandasのDataFrameやSeriesにPandas以外の関数を適用させる方法はいくつか存在します。1つはapply関数やapplymap関数を使用する方法です。NumPyの関数を適用させたい場合は直接指定する方法でほとんど問題ありませんが、他のモジュールの関数や自作の関数ですとapplyやapplymapを使わないと思うような動作をしないことがあるのでこちらの関数を使って計算することをオススメします。本記事では以下の方法を一つ一つ解説していきます。関数を直接適用applyでDataFrameやSeriesの列や行ごとapplymapでDataFrameの各要素ごとmapでSeriesの各要素ごとgroupbyメソッドと併用できるのはapplyNumPyの関数を直接適用させるDataFrameやSeriesの中身のデータを配列と見立ててNumPyの関数を適用させることができます。使える引数の種類がPandas用に変換されており(例えばkeepdims引数が無効になっているなど)、NumPyの配列を対象にした時ほど自由度は高くありませんが、実用の範囲内ならほぼ問題ないでしょう。PandasとNumPyの親和性は非常に高く、手軽に適用ができます。NumPyの関数のタイプでもnp.sqrt関数のように各要素ごとに処理を実行する関数(ufuncと呼びます)np.sum関数のように列全体や行全体を対象とする関数の2種類に大きく分けることができます。列や行全体(もしくはデータ全体)を処理対象とする関数についてはNumPyのndarrayを対象とするときと若干挙動が異なります。0.508777上のDataFrameを考えます。これに対してそれぞれ指数関数の値を計算するnp.exp関数を適用させてみます。1.663256デフォルトでは列ごとに処理を行うデフォルトではSeriesに対してならデータ全体、DataFrameに対してなら列全体が処理の対象となっており、DataFrameの構造に沿った関数の適用のされかたをしてくれます。先ほどのDataFrameに対してnp.sum関数を適用させてみましょう。4.7996585197314054このようにデフォルトでは列ごとの合計を表示します。基本的に処理の実行する方向は行方向(縦方向)に進んで行くのがデフォルトです。要素の足し合わせを行うcumsum関数も使ってみます。float64これもA列とB列とで別々に処理を行なっています。‘columns’列方向に処理を行いたい場合は引数としてaxis=1を指定すれば良いです。axis='columns'とすることも可能です。先ほどの2つの関数に対してaxis引数を変更します。欠損値があっても関数の適用は可能です。float64関数全体に適用させることはできないようです。自作の関数を適用する自作の関数を適用する場合、要素ごとの処理ならば関数の引数としてDataFrameを指定しても問題ありません。1.293962文字列データの操作はSeries.str.(関数)でPython組み込みの文字列関数を呼び出すことができるので。これを使って処理すると良いでしょう。objectapply関数を使って列ごとや行ごとに関数を適用する次はPandasの関数であるapply関数を使って関数を適用させていきます。無名関数も適用可能です。apply関数によって指定された関数に渡される値は各々の列のSeriesとなっており、axis='columns'もしくはaxis=1と指定された時は行ごとのSeriesが渡されることになっています。行ごとに処理を実行させたい場合はaxis=1またはaxis='columns'と指定します。map関数を使うDataFrameの各要素に対してはapplymap関数を、Seriesの各要素に対してはmap関数を用います。objectgroupby関数との併用にはapplyを使うSeriesやDataFrameをgroupby関数を使ってグループ分けしたのち、グループごとに関数を適用させたい時はapply関数との相性が良いです。groupby関数の詳しい使い方については別途解説します。ここではKaggleのタイタニックのデータを使います。会員登録が必要ですが、以下の公式サイトからダウンロード可能です。Titanicここのtrain.csvという訓練データを使います。グループごとの概要を取得する。...:このように、辞書形式で関数を指定するとSeriesが返されるのでデータの見通しがよくなります。性別(Sex)と経済的階級(Pclass)でグループ分けをし、この関数を特定の列(今回は同乗した親族の数SibSp)に適用させてみます。float64みやすくするためにunstack関数をつけます。すると、一番内側のIndexが列のラベルに移動します。0.0無名関数でも適用できます。float64まとめ今回はPandasのDataFrameやSeriesに関数を適用させる方法をまとめました。applyやapplymap、map関数と、似たような関数名が並び混乱するかもしれませんがそれぞれの関数で扱う関数の種類が異なってくるのでこの辺りの違いはざっくりとでいいので押さえておくと処理の際にエラーにならず、スムーズに実装できるかと思います。groupbyメソッドにおいてapply関数は真価を発揮すると言ってもよく、是非色々と使ってみてください。documentationTweetDeepAgeではAIに関する厳選した内容を記事にしてお届けします。