( New ) 新連載スタート!2人の会話形式でPythonを学ぶ「週末Pythonゆる講座」はこちら ▶▶

ポケモンで学ぶPython|#6 最強ピボットテーブル

ポケモンのデータで学ぶPython

Python(パイソン)というプログラミング言語を、ポケモンという誰もが知っているコンテンツで学んでいく企画です

今回はPythonのDataFrameにあるデータをピボットテーブルで集計する方法をご紹介します

データの集計のほとんどはピボットテーブルで実施できるため、必ずマスターしてみてください

今回利用するデータについてや、Pythonのセットアップは下記記事をご覧ください

ポケモンで学ぶデータ分析|データの中身を知ろう ポケモンで学ぶPython|#1 セットアップを始めよう
ポケモンのデータ一覧

事前準備

Pandasを事前にインポートしておきます

import pandas as pd

ポケモンのデータ(Excel:105 KB)をダウンロードし、Pythonで読み取ってください

# Pokemon_1のシートを変数(df)に格納する
df = pd.read_excel('pokemon_data.xlsx', sheet_name='Pokemon_1')
df = pd.read_excel('pokemon_data.xlsx', sheet_name='Pokemon_1')

ピボットテーブルで集計する

Pythonでピボットテーブル集計を実施していきます

今回は一問一答形式ですが、使い方が知りたい方はこちらの記事をご覧ください

【Python】Pythonピボットテーブルを完全攻略|pivot_table

「タイプ1」ごとに数値データの平均値を求めてください

df.pivot_table(index='タイプ1')
df.pivot_table(index='タイプ1')

indexに列名を指定することで、特定列ごとの数値を集計することができます

valuesに設定が無い場合は、数値型のデータがすべて集計対象となります

MEMO

Pythonのピボットテーブルでは、集計方法の指定が無い場合は「平均」が算出されます

「タイプ1」ごとの「高さ」の平均値を求めてください

df.pivot_table(index='タイプ1', values='高さ')
df.pivot_table(index='タイプ1', values='高さ')

valuesに列を指定することで、特定の列のデータのみ対象にして集計することができます

「タイプ1」ごとの「高さ」と「重さ」の平均値を求めてください

df.pivot_table(index='タイプ1', values=['高さ','重さ'])
df.pivot_table(index='タイプ1', values=['高さ','重さ'])

valuesに複数の列を指定するときは、[ ]リスト型で指定をしましょう

「タイプ1」と「タイプ2」ごとの「高さ」の平均値を求めてください

df.pivot_table(index='タイプ1',
               columns='タイプ2',
               values='高さ')
df.pivot_table(index='タイプ1',
               columns='タイプ2',
               values='高さ')

indexcolumnsに列を指定することでクロス集計表を作成することができます

df.pivot_table(index=['タイプ1','タイプ2'])
df.pivot_table(index=['タイプ1','タイプ2'])

index[ ]リスト型で複数の列を記載することで、マルチインデックス(2つの階層)で抽出することができます

「タイプ1」ごとの「高さ」の「最大値」を求めてください

df.pivot_table(index='タイプ1',
               values='高さ',
               aggfunc='max')
df.pivot_table(index='タイプ1',
               values='高さ',
               aggfunc='max')

aggfuncに集計手法を指定することで、「平均」以外のクロス集計表を作成することができます

最大値は「max」で、最小値を「min」、合計を「sum」で算出することができます

「タイプ1」ごとの「高さ」の平均を「総計あり」で表示してください

df.pivot_table(index='タイプ1',
               values='高さ',
               aggfunc='mean',
               margins=True).tail()
df.pivot_table(index='タイプ1',
               values='高さ',
               aggfunc='mean',
               margins=True).tail()

クロス集計表の総計を表示するにはmarginsを「True」で設定します

「All」に総計が算出されました(平均の場合は、全体の平均)

まとめ

今回はデータの集計の中で非常に便利な「ピボットテーブル」をご紹介してきました

Pythonのピボットテーブルは非常に簡単に設定できるので、使いこなしてみてください

ポケモンで学ぶPython|#7 文字列を扱う
お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。