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関数内では、%値の集計処理を文字列では指定できないので、ラムダ式を利用して指定。