【Pandas】ピボットテーブル(pivot_table)で計算方法を指定する方法

Python

前回は基本的なpivot_table()関数の使い方を説明いたしましたが、今回は集計の計算方法の指定について紹介したいと思います。

pivot_table()関数はデフォルトでmean(平均値)を使って算出しますが、aggfuncパラメータで指定することにより集計方法を任意のものに指定できます。

ad

集計の種類

今回、紹介するのは以下の集計となります

集計関数
件数len
合計np.sum
最小値np.min
最大値np.max
中央値np.median
平均値np.mean
標準偏差np.std

サンプルデータの取得

前回に引き続きタイタニックデータを例に説明いたします

import numpy as np
import pandas as pd

# タイタニックデータの取得
url='https://raw.githubusercontent.com/mwaskom/seaborn-data/master/raw/titanic.csv'
titanic=pd.read_csv(url)

# 年齢に欠損があるので欠損値に平均年齢を代入
titanic["age"] = titanic["age"].fillna(titanic["age"].median())

# データの確認
titanic.head(3)
asurvivedpclassnamesexagesibspparchticketfare
003Braund, Mr.male22.010A/57.25
111Cumings,female38.010PC17599
213Heikkinen,female26.000STO7.9250

客室ランク(pclass)と性別(sex)を掛け合わせた年齢(age)の集計を例といたします

件数、合計

件数

件数を算出するには組み込み関数のlen()を指定します。
ただし、関数を指定する場合は()をつけないように気をつけてください。

単純に件数を求めるのであればcrosstab()関数の方がオススメです。こちらの方が正規化(Normalize)指定が選択できるため、分布を測定するにはcrosstab()関数を使うことが多いです。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=len)

合計

values値の合計値を見るにはnp.sumを指定します。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.sum)

最大/最小/中央値

最大値

values値の最大値を見るにはnp.maxを指定します。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.max)

最小値

values値の最小値を見るにはnp.minを指定します。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.min)

中央値

values値の中央値を見るにはnp.medianを指定します。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.median)

平均値、標準偏差

平均値

values値の平均値を見るにはnp.meanを指定します。
aggfuncはnp.meanがデフォルト値なので平均値を取得したい場合はaggfuncを指定しないことの方が多いです。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.mean)

標準偏差

values値の標準偏差を見るにはnp.stdを指定します。

pd.pivot_table(titanic, index='pclass', columns='sex',  values='age', aggfunc=np.std)

コメント