【Python Coding】pandas “agg” を使ってデータ集計を効率化する方法を解説します
こんにちは、たなです。
今回は、pythonのpandasを用いて「agg」という方法を紹介していきたいと思います。
pandasでグルーピングした後に使える
「aggって…なに?」という人も多いかと思いますが、Aggregationの略で「集約」を意味する言葉です。pandasにはグルーピング機能もありますが、それを一段階進化させたようなイメージを持っておいてください。
かなり便利な方法で、僕は結構好きな方法です。詳しくコードを使って解説していきます。ちなみに「グルーピング」については【Python Coding】pandasでデータフレームをグループ化する方法で解説しているので、使い方を知りたい人は参考にしてください。
本記事の内容
- pandas “agg” に関する基本的な使い方
- pandas “agg” を使ってカラムごとにデータ統計量を算出する方法
僕のブログでは【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】という記事も公開しています。より高みを目指したい人は参考にしてみてください。
pythonの学習ロードマップへpandas “agg” を使ってデータ集計を効率的しよう
pandas “agg” を使えば列ごとに異なる統計量を算出できる
グルーピングに関する記事で紹介したように、データフレームをグルーピングした後には、「sum」や「mean」を適用することで「合計」や「平均」といった統計量を求めることが出来ます。
このように、グループごとに値を求めることをAggregationと呼ぶので、基本的な役割自体は今回の「agg」も同じになります。言葉だけだとわかりにくいので、この後紹介するコード結果を通じて理解を深めてもらえればと思いますが、「カラム(列)ごと」に異なる統計量を算出させることが出来る点が特徴です。
今回使うライブラリのインポート
import pandas as pd
まず最初に、今回使うライブラリをインポートしておきます。
pandasだけあればOKです。
利用データの作成
今回は、シンプルなデータを作っていきたいと思います。
ある一定期間におけるユーザーの購買行動を示したデータを想定します。
上記データになるように、pandasを用いて以下のようにデータフレームを作成しておきます。
これから「id」でグルーピングし、その際に「agg」を適用する方法を合計「4つ」紹介していきます。
pandas “agg” の使い方①:1カラムに適用する
【具体例①の目的】 「amount」の合計を「id」別に算定する
まずは、「agg」の基本的な使い方を見ていきます。
「id」でグルーピングをし、「amount」の合計を求めたコードが以下です。
上記コードのように、「groupby」を適用した後に「agg()」を加えるだけです。
(reset_indexはなくでも大丈夫です。)
この後のコードでも出てきますが、「sum」以外にも「mean」や「max」などの統計量も使えます。
pandas “agg” の使い方②:複数カラムに適用する(同じ統計量)
【具体例②の目的】 「amount」と「coupon」の合計を「id」別に算定する
先ほどは「amount」だけのカラムを対象としていましたが、今度は「amount」と「coupon」の複数カラムを対象として「agg」を適用させてみたいと思います。
「id」でグルーピングをし、「amount」「coupon」の合計を求めたコードが以下となります。
同じ統計量(合計)を求めているので、グルーピング時にカラムを指定し、その後aggを適用した方が(今回のケースでは)効率的ですが、「辞書型」で指定する方法をここでは知っておいてください。
「key」部分に「カラム」を指定し、「value」部分に「集計関数」を指定することがポイントとなります。
この後、具体例④でも紹介しますが、「集計関数」部分に「自作関数」を適用することも可能です。
pandas “agg” の使い方③:複数カラムに適用する(異なる統計量)
【具体例③の目的】 「amountの平均」と「couponの最大値」を「id」別に算定する
続いては、複数カラムに「異なる統計量」を適用する方法を見ていきます。
先ほどは、「amount」と「coupon」の「合計」を求めていましたが、今回は「amount」の「平均」と「coupon」の「最大値」を求めていきます。
カラムごとに異なる統計量を求める方法を示したコードが以下となります。
具体例②と同じように、「辞書型」でカラム指定と集計関数の指定をすることで、カラムごとに異なる統計量を適用することが可能となります。
この使い方が理解出来れば、以下のような使い方も可能となります。
【応用例】 「amountの合計・平均・標準偏差」「couponの最大値・最小値」を「id」別に算出
カラムごとに異なる統計量を自由に算出することが出来るので、非常に便利ですね。
pandas “agg” の使い方④:カラムに自作関数を適用する方法
【具体例④の目的】 「amountの個数」と「couponの個数」を「id」別に算定する
最後に、aggに関数を適用する方法を紹介しておきます。
ここでは、lambda式(無名関数)を用いていますが、defで定義した関数でも適用可能です。
この例では、単に値をカウントするような関数を定義しているので、処理結果にあまり意味はないですが、「aggに関数も適用出来るのね」と知ってもらえれば十分です。
lambda式(無名関数)の使い方は【Python Coding】lambda式(無名関数)とは?概要と使い方を紹介で紹介しています。
【Python Coding】lambda式(無名関数)とは?概要と使い方を紹介
こんにちは、TAKです。今回は、pythonのlambda式(無名関数)の概要と使い方を紹介していきたいと思います。 「lambda」は「ラムダ」と読み、pythonで関数を作れる便利な機能となります。ただ、「lambda式って今一つ使い方…
まとめ:pandas “agg”を使えばカラムごとに異なる統計量を算出できてデータ集計に役立つ
今回は、pythonのpandasで使える「agg」という方法を紹介してきました。
データフレームをグルーピングする方法はよく使える手法なので、「カラムごとに様々な統計量を算出したい」といった場面では、今回の方法を使ってみてください。
冒頭でも紹介しましたが、pythonの学習方法を【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】でまとめています。良ければあわせて読んでみてください。
【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】
pythonを極めたいすべての人に贈る学習ロードマップ。おすすめの学習サイトをレベル別に紹介しているので、pythonのレベルをあげていきたいと考えるすべての人に読んで欲しい記事です。これさえ読めば、自分に合っている学習方法やこれから目指すべき方向性がわかります。pythonライフ、楽しんでいきましょう。
よいpythonライフを。