Python

【Pandas】aggとgroupbyで列単位で集計関数を適用する

Pandasのデータフレームを操作するときに、各列に対して異なる集計関数を適用したいこともありますよね。

でも普通にデータフレームに対してmeanとかMaxなどを適用しても全数値列に対して適用されるだけで、異なる集計関数を同時に適用できません。

というわけで各列に異なる集計関数を適用する方法を備忘として残しておきたいと思います。

 

aggとgroupbyによる異なる集計関数の適用

まずは適当なPandasデータフレームを作ります。

 

 

 
今、ID列とcol1, col2列のあるデータフレームを作りました。

このcol1, col2列に対していろいろな集計関数を適用して、その結果をデータフレームに入れたいと思います。

ただ、まずは普通にというか直接データフレームに集計関数を適用するとこのような具合になります。

 

 
ここではmean関数がcol1, col2にそれぞれ適用されて、2つの列の平均が算出されています。

今回やりたいのはこういうことではありませんね。

次にid列でgroupbyしてcol1, col2の平均を出してみます。

 

 
このようになりました。

だいぶやりたいことに近づいてきました。

しかしまだid列ごとに集計ができたとはいえ、同じ集計関数しか適用できていません。

やりたいのは、id列でgroupbyして、同時にcol1列のカウント・合計、col2列の最大・平均の算出などです。

こちらはaggメソッドを使うことで実現できます(aggはaggregationの略ですね)。

 

 

 
結果もこのようになり、やりたいことができていると思います。

ちゃんと集計をしたあとの列名も指定の名前にできるので良いですね!

こんな感じでgroupbyとaggを使って、各列に対してidごとに複数の集計関数を適用することができます。

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2022 All Rights Reserved Powered by AFFINGER5.