
172
3
章
pandas
を使ったデータ操作
ら生存率の平均を算出した上で、隠れた多次元性を明らかにするために
unstack()
で階層型インデ
クスを作ります。
In[4]: titanic.groupby(['sex', 'class'])['survived'].aggregate('mean').unstack()
Out[4]: class First Second Third
sex
female 0.968085 0.921053 0.500000
male 0.368852 0.157407 0.135447
これにより、性別と等級の両方がどのように生存に影響を与えたかがわかりますが、コードは複
雑になり始めています。このパイプラインの各ステップは、先に説明した手段を使う上で妥当なも
の
ではありますが、長いコード列は特に読みやすいわけでも、使いやすいわけでもありません。こ
の
2
次元の
GroupBy
は非常に一般的であるため、この種の多次元集約を簡潔に処理する便利な関数
pivot_table
を
pandas
は提供しているのです。
3.10.3
ピボットテーブルの文法
DataFrame
の
pivot_table
メソッドを使用して、先の例と同じ操作を行います。
In[5]: titanic.pivot_table('survived', index='sex', columns='class')
Out[5]: class First Second Third
sex
female 0.968085 ...