1. ホーム
  2. python

pandas の agg 関数にパーセンタイルを渡す

2023-07-11 19:36:02

質問

numpyの percentile() 関数をpandasの agg() 関数を通して、他の様々なnumpyの統計関数で行うようにします。

今、私はこのようなデータフレームを持っています。

AGGREGATE   MY_COLUMN
A           10
A           12
B           5
B           9
A           84
B           22

そして、私のコードはこのようになります。

grouped = dataframe.groupby('AGGREGATE')
column = grouped['MY_COLUMN']
column.agg([np.sum, np.mean, np.std, np.median, np.var, np.min, np.max])

上記のコードは動作しますが、次のようなことをしたいのです。

column.agg([np.sum, np.mean, np.percentile(50), np.percentile(95)])

から返す様々なパーセンタイルを指定する。 agg() .

これはどのように行うべきでしょうか?

どのように解決するのですか?

あまり効率的ではありませんが、自分で関数を作ってしまうのも一つの方法です。

def percentile(n):
    def percentile_(x):
        return np.percentile(x, n)
    percentile_.__name__ = 'percentile_%s' % n
    return percentile_

そして、これを agg :

In [11]: column.agg([np.sum, np.mean, np.std, np.median,
                     np.var, np.min, np.max, percentile(50), percentile(95)])
Out[11]:
           sum       mean        std  median          var  amin  amax  percentile_50  percentile_95
AGGREGATE
A          106  35.333333  42.158431      12  1777.333333    10    84             12           76.8
B           36  12.000000   8.888194       9    79.000000     5    22             12           76.8

このような方法であることに注意してください であるべきです。 であるべきですが...