---
title: #29 ピボットテーブル（１）
tags: 
author: [猫のタロー](https://convert.docswell.com/user/Cat_Taro)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJ1MW25DEG.jpg?width=480
description: データを可視化する方法は、グラフだけではありません。  2つのカテゴリのデータを同時に集計した結果を示す表をクロス集計表と言いますが、このクロス集計表によって、様々な考察を得ることができます。  このセクションでは、クロス集計表を作成するピボットテーブルを解説します。  75　pd.pivot_table(データ名, index=“列名1”, columns=“列名2”, 　  　　　　　　　, values=“列名3”, aggfunc=’関数’, 他の引数)  75のプログラムの引数を何度か他の列名と書き換えたり、省略したりして、ピボットテーブルによるクロス集計表の作り方を身に付けていきましょう。  1st STEP同様、動画のテキスト、追加情報は下記のブログを参考にしてください！  ■この動画のブログ  ●データサイエンス チュートリアル   https://tutorial4datascience.blogspot.com/  ■参考URL  ●株式会社Spotの「Pandasでピボットテーブルを手軽に作成するpivot_table関数の使い方」    https://deepage.net/features/pandas-pivot.html
published: October 13, 23
canonical: https://convert.docswell.com/s/Cat_Taro/5JLNMN-2023-10-13-232722
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LJ1MW25DEG.jpg)

1
2nd STEP 集計とグラフ描画
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJW36R58J2.jpg)

2
Section 27 ピボットテーブル（１）
１．クロス集計表
2つのカテゴリのデータを同時に集計した結果を示す表をクロス集計表と言います。例えば、
下記のようにある団体に所属する職員の居住国と性別をまとめた表のことです。
表の上部の見出しの部分を「表頭（ひょうとう）」、左側の見出しの部分を「表側（ひょうそ
く）」と言い、クロス集計表は、表側の変数と表頭の変数の関係を理解するために使います。
例えば、下のクロス集計表では、英国、オランダの居住者は双方ともに全体の50％ですが、
英国の女性比率は40％（20人）、オランダの女性比率は80％（40人）とオランダの女
性比率の高さが際立ちます。このような考察を得るために、クロス集計表を作成します。
表 頭
単位：人
英国
オランダ
計
表
男性
30
10
40
側
女性
20
40
60
計
50
50
100
出典：星野崇宏,上田雅夫. 「マーケティング・リサーチ入門 」. 有斐閣, 2018, p53


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4EZVYRN9J3.jpg)

3
Section 27 ピボットテーブル（１）
２．ピボットテーブル 必須項目
Pandasの「pivot_table」は、クロス集計表を作成する機能を持つプログラムです。
「pivot_table」は、大量のデータをすばやく集計でき、柔軟な（思い通りに）集計を行う
ことができます。
75 pd.pivot_table(データ名, index=“列名1”, columns=“列名2”,
, values=“列名3”, aggfunc=’関数’, 他の引数)
列名1
「表側」、すなわち、「まとめる」項目にしたい列を指定。
列名2
「表頭」すなわち、「分割」する項目にしたい列を指定。
列名3
「計算する値」にしたい列を指定。
「列名1」、「列名2」は、集計したい表によって、どちらかを省略することが可能です。
■「列名1」を省略すると、表側は「列名3」になります。
■「列名2」を省略すると、表頭は「列名3」になります。


# Page. 4

![Page Image](https://bcdn.docswell.com/page/Y765DR8DEV.jpg)

4
Section 27 ピボットテーブル（１）
３．ピボットテーブル aggfunc
75 pd.pivot_table(データ名, index=“列名1”, columns=“列名2”,
, values=“列名3”, aggfunc=‘関数’, 他の引数)
「aggfunc=‘関数’」には、「values=」で指定した「列名3」に対して、どのような計算をす
るかを指示する関数を指定することができます。
「aggfunc=‘関数’」を省略すると、「mean」、すなわち「列名3」の平均値が計算されます。
４．ピボットテーブル 他の引数
margins=True
小計を表示します。省略すると「margins=False」となり小計は表示されません。
margins_name=“小計の名称&quot;
小計の名称を指定することができます。省略すると「margins_name=False」とな
り、小計の名称は「All」になります。


# Page. 5

![Page Image](https://bcdn.docswell.com/page/G75Y389874.jpg)

5
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
,aggfunc=‘関数’, 他の引数)
まずは、ピボットテーブルを作る元データ「id_pos11」を確認してみましょう。元データの確認
は、新しいプログラムを書く時には、常に心がけましょう。


# Page. 6

![Page Image](https://bcdn.docswell.com/page/9J2GZK2VJR.jpg)

6
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
ピボットテーブルを作成していきます。データを「id_pos11」、index（まとめる項目）に「価
格帯」、 columns（分割する項目）に「Country」、values（計算する値）に「Total」、
関数に「sum」を使います。


# Page. 7

![Page Image](https://bcdn.docswell.com/page/DEYVRNYQEM.jpg)

7
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
columns（分割する項目）を省略してみましょう。表頭は、 values（計算する値）に
指定した「Total」になります。index（まとめる項目）で指定した「価格帯」ごとの「Total」
の合計値を算出した集計表になりました。


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJNMDXP278.jpg)

8
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
今度は、 index（まとめる項目）を省略してみましょう。 表頭は、values（計算する
値）に指定した「Total」になりました。 今度は、columns（分割する項目）で指定した
「Country」ごとの「Total」の合計値を算出した集計表になります。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YE9NG83DE3.jpg)

9
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
次に、aggfuncを省略してみましょう。「id_pos12_1」と同じような表ですが、数値がかなり
小さな値になっています。


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GE8KV8M57D.jpg)

10
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
「aggfunc=‘mean‘」を追加してみます。「id_pos12_4」と「 id_pos12_5」の数値はす
べて同じになりました。 aggfuncを省略すると、 「aggfunc=‘mean‘」と同じ結果にな
ることがわかりました。


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LELZ5R33JR.jpg)

11
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
「他の引数」を書き加えていきます。まずは、「margins=True」。行と列の小計が「All」と
いう名称で加えられました。


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4JMV3RDMJW.jpg)

12
Section 27 ピボットテーブル（１）
75 データ名.pivot_table(index=“列名1”, value=“列名2”
, aggfunc=‘関数’, 他の引数)
「margins_name=“計”」を追加して、小計の「All」の名称を「計」に変更しましょう。


# Page. 13

![Page Image](https://bcdn.docswell.com/page/PJR2QR4LE9.jpg)

13
Section 27 ピボットテーブル（１）
参 考
株式会社Spotの「Pandasでピボットテーブルを手軽に作成するpivot_table関数の
使い方」を参照して、様々なクロス集計表を作成してみましょう。
https://deepage.net/features/pandas-pivot.html


