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