import pandas as pd
df=pd.DataFrame({'col01': ['A', 'C', 'A', 'C', 'A'],
'col02': ['a', 'a', 'c', 'c', 'a'],
'col03': [600, 800, 100, 120, 180]})
df
df.pivot_table(index='col01',columns='col02',values='col03')
Pythonでピボットテーブルを作成する方法です。
使用するのは、PythonのPandasライブラリのpivot_tableメソッドです。
ピボットテーブルとは、2つのカテゴリーデータを集計した、いわゆるクロス集計表のことです。
このようなデータフレームを用意します。
引数のindexに横方向、columnsに縦方向、valuesに集計したいデータを指定します。
実行します。
それぞれの要素を算出してピボットテーブルを作成できました。
col1が大文字のAかつcol2が小文字のaの場合の、それぞれの要素の平均、という構成になっています。
このように、pivot_tableメソッドのデフォルトの計算方法は平均です。
df.pivot_table(index='col01',columns='col02',values='col03',aggfunc='sum')
合計の値で作成したい場合にはaggfuncの引数にsumを指定します。
実行します。
合計の値でピボットテーブルを作成できました。
列ごと、行ごとの集計を出したい場合には引数marginsにTrueを指定します。
実行します。
Allという名前で合計値が追加できました。
df.pivot_table(index='col01',columns='col02',values='col03',aggfunc='sum',margins=True)
なお、引数margins_nameでこのようにAllの名前を変更することもできます。
df.pivot_table(index='col01',columns='col02',values='col03',aggfunc='sum',margins=True,margins_name='合計')
関連メソッド
【毎日Python】Pythonでデータフレームを指定しカラムごとに集計する方法|DataFrame.groupby