【毎日Python】Pythonでデータフレームを指定しカラムごとに集計する方法|DataFrame.groupby

gloupby
こつこつPython
import pandas as pd

Pythonで指定のカラムごとにデータを集計する方法です。
使用するのは、Pythonのpandasライブラリのgroupbyメソッドです。
groupbyメソッドは単独で使用するのではなく、sumやmean等といったメソッドと組み合わせて使用します。

df = pd.read_csv('/content/sample.csv')
df

今回はこちらのcsvファイルのデータを使って試してみます。

df.groupby('商品名').size()

まず、商品名ごとの要素の個数を取得してみます。
.sizeで実行します。
商品名ごとに要素の個数を取得できました。

df.groupby('商品分類').sum()

次に、商品分類ごとに合計を算出してみましょう。
合計の場合にはsumで実行します。
商品分類ごとの合計を取得することができました。

df[['商品分類','社員ID','売上金額']].groupby(['商品分類','社員ID']).mean()
#df.groupby(['商品名','社員ID']).max()
pd.options.display.float_format = '{:.0f}'.format

カラムを複数指定することもできます。
商品分類、社員ID、売上金額のデータフレームを作って、商品分類と社員IDごとに集計してみましょう。
実行します。
社員IDと商品分類ごとの売上金額の平均を集計できました。
ただ、小数点以下も表示されてしまっているので、小数点以下を切り捨てにします。
このように、formatメソッドを使用して、小数点以下を0にします。
実行したら、こちらのコードを再度実行してみます。
小数点以下を切り捨てて、売上金額の平均を表示することができました。

df[['社員ID','売上金額']].groupby('社員ID', as_index=False).max()
#df.groupby('商品名', as_index=False).sum()

なお、カラムをインデックスに指定したくない場合には、groupbyの第二引数にas_index=Falseを指定します。
社員IDと売上金額のデータフレームを作って、社員IDごとに売上金額の最大値を集計します。
実行します。
インデックスを数字に指定することができました。

関連メソッド

【毎日Python】Pythonでデータフレームからピボットテーブルを作成する方法|DataFrame.pivot_table

【毎日Python】Pythonでデータフレームをカラムごとに集計する方法|DataFrame.agg

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト