python pandas 集計処理(pivot_table関数)
pandas 集計処理(pivot_table関数)について
■pivot_table処理について 集約処理と横軸変換が同時にできる。
■pivot_tableでやること① 1つ目の引数に対象テーブル、index引数にデータの集合を表すキー値、columns引数にデータ要素の 種類を表すキー値、values引数にデータの要素の値となる対象の列を指定する。 また、aggfunc引数にvalues引数で指定した列値をデータの要素の値に変換する関数を指定。 aggfuncは集計方法を指す。
values:集計対象のDataFrameの変量名.aggfunc='count'の場合はダミーとして任意の変量名を与える. index:行の変量 columns:列の変量 aggfunc:集計。sum、max、min、count、mean、medianが使える fill_value:該当する列の値がない場合のデータの要素の値を指定できる margins:集計行と集計列を付ける場合はTrueとする
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をグルーピングして、閲覧時間をカラム、値は要素の数をラムダでカウント、fill_valueで要素がなければ0に指定。
pd.pivot_table(sample,index="ID",columns="閲覧時間",values="セッション",aggfunc=lambda x: len(x),fill_value=0)
閲覧時間 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
ID | ||||||||
9460 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
72625 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 |
85657 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
86703 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
106015 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |