私が実務でよく使うものの1つがgroupbyで、例えば商品カテゴリー毎に合計やばらつきを確認したい場合などが挙げられます。無論、SQLでも同様のことは大抵できてしまいますが、例えば形態素解析した結果の単語ごとの集計を書けたい場合などPythonで一気通貫でやる場合にはpandasを使うのが便利ですね。
groupby
その名の通りDataFrameをgroupbyで集計します。groupbyの戻り値で得られるGroupByオブジェクトに対しmean(), min(), max(), sum()などのメソッドを適用すると、グループごとの平均、最小値、最大値、合計などの統計量を算出することが可能です。使い方は簡単ですので、サンプルを見てみましょう。カテゴリーとタグ毎になんらかの量が設定されているDataFrameに対し、集計をかけてみます。引数に集計対象の列名を設定します。複数でgroupbyを書けたい場合はリストで設定します。
df = pd.DataFrame([['cate1', 'tag1', 150],['cate1', 'tag2', 210],['cate2', 'tag2', 80],['cate2', 'tag1', 310], ], columns=['category', 'tag', 'value'])
# category tag value
# 0 cate1 tag1 150
# 1 cate1 tag2 210
# 2 cate2 tag2 80
# 3 cate2 tag1 310
# categoryごとの合計を算出する
df.groupby('category').sum()
# value
# category
# cate1 360
# cate2 390
# category、tagごとの件数を算出する
df.groupby(['category', 'tag']).count()
# value
# category tag
# cate1 tag1 1
# tag2 1
# cate2 tag1 1
# tag2 1
# tagごとのばらつきを算出する
df.groupby(['tag']).std()
# value
# tag
# tag1 113.137085
# tag2 91.923882
いかがでしょうか。集計が簡単に使用できますので便利ですね。
