Pandas学習ノート8——データ透視表
データピボット
データ・ピボット・テーブルはGroupbyと同様の操作方法であり、Excelや同様のテーブル・アプリケーションでよく使用されます.データ・ピボット・テーブルは、各カラムを入力として使用し、データを複数の次元の累積情報に細分化する2 Dデータ・テーブルを出力します.データ・ピボット・テーブルは、Groupby操作よりも多次元GroupBy積算操作のように見えます.つまり、分割-適用-組合せもできますが、分割と組合せは1次元インデックスではなく、2次元ネットワーク上で発生します(行と列が同時にグループ化されます).
データピボット構文
その他のデータピボット・オプション aggfuncパラメータは、累積関数タイプを設定するために使用され、デフォルトはmean()です.groupbyの用法と同様に、積算関数はいくつかの一般的な文字列(「sum」,「mean」,「count」,「min」,「max」など)で表すことができ、標準的な積算関数(np.sum(),npであってもよい.min()、sum()など)で表します.また、辞書で異なるカラムに異なる積算関数を指定することもできます. 各グループの合計数を計算する必要がある場合は、marginsパラメータで設定できます.marginのラベルはmargins_nameパラメータを設定します.デフォルトは「All」 です.
データ・ピボット・テーブルはGroupbyと同様の操作方法であり、Excelや同様のテーブル・アプリケーションでよく使用されます.データ・ピボット・テーブルは、各カラムを入力として使用し、データを複数の次元の累積情報に細分化する2 Dデータ・テーブルを出力します.データ・ピボット・テーブルは、Groupby操作よりも多次元GroupBy積算操作のように見えます.つまり、分割-適用-組合せもできますが、分割と組合せは1次元インデックスではなく、2次元ネットワーク上で発生します(行と列が同時にグループ化されます).
#
import numpy as np
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
データピボット構文
# , mean()
titanic.pivot_table('survived', index='sex', columns='class')
#
class First Second Third
sex
female 0.968085 0.921053 0.500000
male 0.368852 0.157407 0.135447
#pivot_table ,
# pd.cut
age = pd.cut(titanic['age'], [1,18,80])
titanic.dropna('age').pivot_table('survived', ['sex', age], 'class')
#
class First Second Third
sex age
female (18, 80] 0.909091 1.000000 0.511628
NaN 0.972973 0.900000 0.423729
male (18, 80] 0.800000 0.600000 0.215686
NaN 0.375000 0.071429 0.133663
その他のデータピボット・オプション
#DataFrame pivot_table :
DataFrame.pivot_table(data, value=None, index=None, columns=None, aggfunc='mean',
fill_value=None, margins=False,dropna=True, margins_name='All')
titanic.pivot_table(index='sex', columns='class', aggfunc={'survived':sum, 'fare':mean})
# :
fare survived
class First Second Third First Second Third
sex
female 106.125798 21.970121 16.118810 91 70 72
male 67.226127 19.741782 12.661633 45 17 47
titanic.pivot_table('survived', index='sex', columns='class', margins=True)
# :
class First Second Third All
sex
female 0.968085 0.921053 0.500000 0.742038
male 0.368852 0.157407 0.135447 0.188908
All 0.629630 0.472826 0.242363 0.383838