python_analytics

主にpythonやライブラリーを使ったデータ解析、機械学習、統計学などについて書いていきます

python pandas 集計処理(agg関数)

pandas 集計処理について

■集約処理について
DataFrameからgroupby関数を呼び出し、引数に集約単位を設定し さらに集約関数を呼び出すことで可能。 データ数を算出する集約関数は、size関数。ユニークカウントする関数は nunique関数。 同じ集約単位に対する複数の処理を行う場合には、agg関数を利用することで 同時に集約処理が可能。

import numpy as np
import pandas as pd
index ID セッション 閲覧時間
0 328667572 31 16 38 5
1 70373573 24 23 37 7
2 1839656582 12 20 28 6
4 1471882803 10 22 22 7
5 302325623 20 8 22 2

↓閲覧時間をユニークカウントにして、IDをカウント↓

sample.groupby("ID").agg({"閲覧時間":"nunique","ID":"count"})
閲覧時間 ID
ID
9460 2 2
72625 1 2
85657 3 3
86703 1 2
106015 3 3
111931 2 3

リファレンス →pandas.core.groupby.DataFrameGroupBy.agg — pandas 0.22.0 documentation

■agg関数を使った代表値の算出 pythonでは、最大値はmax関数、最小値はmin関数、平均値はmean関数、中央値はmedian関数を利用する。 %はNumpyライブラリのquantile関数を利用。集約処理が複数あるため、agg関数で実施。

sample.groupby("閲覧時間").agg({"セッション":["max","min",
                                             lambda x:np.percentile(x,q=98)]}).reset_index()
閲覧時間 セッション
max min lambda
0 0 17 1 3
1 1 16 1 2
2 2 22 1 2
3 3 18 1 3
4 4 15 1 3
5 5 38 1 3

agg関数内では、%値の集計処理を文字列では指定できないので、ラムダ式を利用して指定。