Pythonでインタラクティブにピボット集計

Pythonでインタラクティブにピボット集計

データを手にしたとき、データの理解のために、とりあえずデータを集計してみるということは多いです。

かっこよく言うと「探索的データ分析」(Exploratory data analysis)の1つです。

なんだかんだ言って、Excelで実施されている方も多いことでしょう。

なぜならば、RPythonなどのツールで実施するのが、ちょっと面倒に感じる方が多いからです。面倒と感じる方の多くは、おそらく、ちょっとしたインタラクティブな集計が出来ないから、という理由も多いのではないかと思います。

では、RPythonExcelのピボットテーブルのような集計ができればいいだろう、ということで、前回「Rでインタラクティブにピボット集計」について話ししました。

ということで今回は、「Pythonでインタラクティブにピボット集計」です。

利用するライブラリー

利用するライブラリーのご紹介をします。

他にもあるかもしれませんが、インタラクティブにピボット集計するならという視点で考えると、以下です。

準備

先ずは、パッケージ「pivottablejs」をインストールしておきます。

以下、コードです。

pip install pivottablejs

 

Pythonの場合には、Jupyter Notebookを使いますので、Jupyter Notebook上でPythonが動かせる状態になってるものとしてお話しを進めます。

Jupyter Notebookをインストールされていない方は、インストールしておいてください。

以下、コードです。

pip install jupyter

 

サンプルデータとして、前回「Rでインタラクティブにピボット集計」同じデータセット(warpbreaks)を使いたいため、Rのサンプルデータセットが使えるライブラリー「pydataset」をインストールしておきます。

pydatasetをインストールされていない方は、インストールしておいてください。

以下、コードです。

pip install pydataset

PyDataset
https://github.com/iamaziz/PyDataset

サンプルデータ

今回は、サンプルデータとしてRにあらかじめ用意されている「warpbreaks」(織機ごとの糸の切れ目の数)のデータに対し、ピボット集計してみます。

サンプルデータ「warpbreaks」は、ライブラリー「pydataset」を使うことで、データフレーム型としてPython上で利用することができます。

以下、コードです。

from pydataset import data
testData = data("warpbreaks")

 

どのようなデータなのか確かめたい場合には、以下のコードを入力し実行してください。

testData.info()

 

以下、実行結果です

  • breaks 切れ目の数
  • wool ウールのタイプ (A or B)
  • tension 張りの強さレベル (L, M, H)

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとに9つの織機のデータが取得されています。そのため、レコード数は54(=6×9)です。

ピボット集計の実行

では実際にピボット集計してみます。

以下、コードです。

# パッケージの読み込み
import pivottablejs
from pydataset import data #Rのサンプルデータセットを利用するためのもの

#データセット
testData = data("warpbreaks")

# ピボット集計実行
pivottablejs.pivot_ui(testData)

 

以下、実行結果です。

 

Jupyter Notebook上でインタラクティブに集計していきます。

カウント

次のように、表側と表頭を設定しデータをカウントしてみます。

  • 表側 wool:ウールのタイプ (A or B)
  • 表頭 tension:張りの強さレベル (L, M, H)

 

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとに9つの織機のデータがあることが分かります。

平均値

次に、ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとにbreaks(切れ目の数)の平均値を集計してみます。

 

次に、標準偏差です。

グラフ表現

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとにbreaks(切れ目の数)の平均値に、棒グラフを追加したピボットテーブルです。

 

次に、ヒートマップで表現し直してみます。

 

もっとたくさんの種類の集計ができます。興味のある方は、色々なデータで色々といじってみてください。

Rでインタラクティブにピボット集計