groupby の初歩と python(DataFrame)によるサンプル

groupby について、初歩的なことに絞って書いてみます。後半で、DataFrame の groupby を実際に使ってみます。

- 目次 -

スポンサーリンク

groupbyとは

そもそもの目的は、大量にあるデータを集計すること

groupby の目的は何かといえば、データの集計です。

ですが、集計といっても、ただ単純に合計や平均を知りたいだけなら groupby は不要です。sum や mean メソッドを呼ぶだけで済んでしまいます。

でも、月別とか顧客別でこまかく集計をとろうとすると、データのグルーピングが必要になります。その グルーピング を行うのが groupby です。

たとえば、通販サイトの販売データがあったとします。
groupby_sample1
顧客ごとに並べ替えます。

groupby_sample2

顧客でグルーピングしたわけですが、でも、これはデータを並べ替えただけで、このままではあまり意味がありません。

なんのためにグルーピング(groupby)したのかと言えば、集計するためです。では、集計するためにどうするかというと、グルーピング結果に関数を適用します。関数とは、たとえば、最大値を取得する max()、合計を計算する sum() などです。

ここで重要なポイントは、関数が赤枠ごとに実行されることです。

min を適用すると

groupby 結果に min 関数を適用すると、赤枠ごとの 最小値 が選択されます。
groupby_sample4

arrow_down
min

groupby_sample4b

次のことが読み取れます。

AA さんの買い物のうち

  • 最小の価格は 1000 円
  • 最小の値引きは 150 円

BB さんの買い物のうち

  • 最小の価格は 50000 円
  • 最小の値引きは 5000 円

max を適用すると

groupby 結果に max 関数を適用すると、赤枠ごとの 最大値 が選択されます。
groupby_sample3

arrow_down
max

groupby_sample3b

次のことが読み取れます。

AA さんの買い物のうち

  • 最大の価格は 150000 円
  • 最大の値引きは 20000 円

BB さんの買い物のうち

  • 最大の価格は 200000 円
  • 最大の値引きは 10000 円

sum を適用すると

groupby 結果に sum 関数を適用すると、赤枠ごとに 合算 されます。ただし、文字列は合算できないので商品は除外されます。
groupby_sample5

arrow_down
sum

groupby_sample5b

次のことが読み取れます。

AA さんの買い物は

  • 価格の合計が 156000 円
  • 値引き額の合計が 20550 円

BB さんの買い物は

  • 価格の合計が 320000 円
  • 値引き額の合計が 23000 円
◇◇◇

以上が groupby の基本的な使い方です。次節で実際に動かしてみます。

python で実行

pandas の DataFrame で簡単に groupby が使えるので試してみます。

groupby 実行

min

max

sum

値を取り出す

集計結果は DataFrame で返されます。欲しい情報は、カラムとインデックスを指定して取得します。

顧客すべての「価格の合計」を取り出す

特定顧客の「価格の合計」を取り出す

複数の項目で groupby

顧客と商品など、複数の項目でグルーピングすることもできます。項目を指定するために配列を使います。

count、size、mean、std

count、size(件数)や mean(平均)、std(標準偏差) といった関数も使えます。

スポンサーリンク

コメントはお気軽に