pandasでピボットテーブルを扱う

pandasでピボットテーブルを扱う方法を紹介します。

今後、機械学習でデータを分析する際に多用しそうなのでメモします。

イラストのパンダとpandasは一切関係ありません!

ここから本題

何はともあれ、ピボットテーブルを生成するコードはこれです!!

テストデータの作成からピボットテーブルの作成までのコードは最後に載せておきます。

  • ピボットテーブルの生成

    pt = pd.pivot_table(df,
                # 集計したい縦のキー
                   index=['sex','pclass'],
    
                # 集計したい横のキー(複数指定化)
                   columns='survived',
    
                # 集計したい項目 (指定がなければ、上記のキーになっていない項目)
                   values='id',
    
                # 個数をカウントする。これがないとValuesの平均値になる。
                   aggfunc=lambda x : len(x),
    
                # # NaN を 0埋めする
                   fill_value = 0,
                )
    pt
    
  • 結果表示

survived 0 1
sex pclass
female 2 1 1
3 0 1
male 2 5 1
3 1 0

テストデータの作成からピボットテーブルの作成までのコードです。

  • 必要なライブラリを読み込み

    %matplotlib inline
    import pandas as pd
    import random
    
  • データの準備

    rg = range(0,10)
    title = ['id','sex','pclass','survived']
    sex = [random.choice(['female','male']) for i in rg]
    pclass = [random.choice([1,2,3]) for i in rg]
    survived = [random.choice([0,1]) for i in rg]
    survived_list = list(zip(rg, sex, pclass, survived))
    
  • データフレームに変換

    df = pd.DataFrame(survived_list, columns=title)
    df
    
  • テストデータの作成

id sex pclass survived
0 0 male 2 0
1 1 male 2 0
2 2 female 2 1
3 3 male 2 0
4 4 female 3 1
5 5 male 2 0
6 6 female 2 0
7 7 male 2 1
8 8 male 3 0
9 9 male 2 0
  • ピボットテーブルの生成

    pt = pd.pivot_table(df,
                # 集計したい縦のキー
                   index=['sex','pclass'],
    
                # 集計したい横のキー(複数指定化)
                   columns='survived',
    
                # 集計したい項目 (指定がなければ、上記のキーになっていない項目)
                   values='id',
    
                # 個数をカウントする。これがないとValuesの平均値になる。
                   aggfunc=lambda x : len(x),
    
                # # NaN を 0埋めする
                   fill_value = 0,
                )
    pt
    
  • 結果表示

survived 0 1
sex pclass
female 2 1 1
3 0 1
male 2 5 1
3 1 0
comments powered by Disqus