【毎日Python】Pythonでデータフレームからピボットテーブルを作成する方法|DataFrame.pivot_table

【毎日Python】Pythonでデータフレームからピボットテーブルを作成する方法|DataFrame.pivot_table
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

【毎日Python】Pythonでデータフレームを縦持ちデータから横持ちに整形する方法|pandas.pivot

【毎日Python】Pythonでデータの出現回数をクロス集計する方法|pandas.crosstab