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

pivot_table
こつこつPython
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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト