LoginSignup
6
3

More than 3 years have passed since last update.

pandas0.25.0で新しくなったaggメソッド!

Last updated at Posted at 2019-08-22

概要

簡単に言うとマルチカラムをそもそもつくらないaggメソッドです!
7月の頭にpandasのaggメソッドによって生じるマルチカラムをいい感じに処理する方法について紹介しましたが, pandasの0.25.0でそこに近い機能があったので紹介します!

使用するDataFrame

公式サイトと同じものを使います

import pandas as pd


animals = pd.DataFrame(
    {
        "kind": ["cat", "dog", "cat", "dog"],
        "height": [9.1, 6.0, 9.5, 34.0],
        "weight": [7.9, 7.5, 9.9, 198.0],
    }
)

#   kind  height  weight
# 0  cat     9.1     7.9
# 1  dog     6.0     7.5
# 2  cat     9.5     9.9
# 3  dog    34.0   198.0

今まで通りやってみる

今まで通りaggにキーに統計の対象となるカラム名, 値に統計の種類のリストを指定した辞書を渡します.

df_old = animals.groupby('kind').agg({"height": ['min', 'max'], 'weight': ['mean']})


#      height        weight
#         min   max    mean
# kind                     
# cat     9.1   9.5    8.90
# dog     6.0  34.0  102.75

カラムがマルチカラムになっていますね.

新しくなったaggメソッド

新しくなったaggメソッドでは引数名に統計特徴量を計算した後につけたいカラム名, 引数に第1要素が統計の対象となるカラム名, 第2要素に統計の種類を指定したタプルを指定します.(言葉で見ると難しいから下のコードを見たほうがわかりやすいかも...)

df_new = animals.groupby("kind").agg(
    min_height=("height", "min"),
    height_max=("height", "max"),
    hogehoge=("weight", "mean"),
)


#       min_height  height_max  hogehoge
# kind                                  
# cat          9.1         9.5      8.90
# dog          6.0        34.0    102.75

マルチカラムになっていないですね!
いいかんじ!

感じたこと

「新しくなったaggメソッドを使うようにすれば超ハッピー!」ということではないなぁと感じました.
kaggleとかでminmaxmeanmedianvarskewも, とにかくたくさん統計特徴量を作るんだ!という場合には今まで通りのやり方がやりやすいのかなと思いました.
ただ, 2, 3個の統計特徴量をつくるぜってときは新しいaggメソッドのやり方がお手軽にできていいなと感じました.
状況に応じて臨機応変に使っていきましょう!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3