Tableau風にデータ操作できるPythonライブラリーPyGWalker

Tableau風にデータ操作できるPythonライブラリーPyGWalker

データを手に入れたとき、どのようなデータなのか理解する必要があります。

そのとき求められるのが、データを簡単に探索し分析できるユーザーフレンドリーなTableauのようなツールです。

しかし、それには多大なコストがかかります。

PandasPolarsデータフレーム(DataFrame)を、Tableau風のユーザーインターフェイスで操作できるようにするPythonライブラリーがあります。

PyGWalkerです。

PyGWalkerを利用すると、Notebook上でほぼドラッグ&ドロップ操作のみで、効率的かつ効果的にデータを探索したり分析したりすることができます。

PyGWalkerは、Tableauの代替品とも言われているオープンソースであるGraphic Walkerを利用したものです。

要は、Python上でGraphic Walkerを利用する、という感覚です。

今回は、Tableau風にデータ操作できるPythonライブラリーPyGWalkerを紹介します。

PyGWalkerのインストール

まずは、PyGWalkerをインストールしましょう。

condaでインストールするときは、以下です。

conda install -c conda-forge pygwalker

 

pipでインストールするときは、以下です。

pip install pygwalker

 

Jupyter Notebook で pygwalker を使用する準備

利用するには、必要なモジュールを読み込む必要があります。

Pandasデータフレーム(DataFrame)を扱うときは、以下です。

import pandas as pd
import pygwalker as pyg

 

Polarsデータフレーム(DataFrame)を扱うときは、以下です。

import polars as pl
import pygwalker as pyg

 

以後、Pandasのデータフレーム(DataFrame)を扱うことを前提に話しを進めます。

 

データの読み込み

KaggleBike Sharing Demandのデータセット使います。

以下、データ項目です。

  • datetime – 日時
  • season 
    • 1 = 春
    • 2 = 夏
    • 3 = 秋
    • 4 = 冬
  • holiday – その日が休日であるかどうか
  • workingday – その日が週末でも休日でもない日かどうか
  • weather 
    • 1:晴れ、雲少ない、部分的に曇り、部分的に曇り
    • 2: 霧+曇り、霧+切れ落ちた雲、霧+少ない雲、霧
    • 3:小雪、小雨+雷雨+雲が散らばる、小雨+雲が散らばる
    • 4:大雨+氷柱+雷雨+霧、雪+霧
  • temp – 気温(摂氏)。
  • atemp – 体感温度
  • humidity – 相対湿度
  • windspeed – 風の速さ
  • casual – 非登録ユーザーによるレンタル開始数
  • registered – 登録ユーザーによるレンタル開始数
  • count – 総レンタル数

データセット(CSV)そのものは、DAT8コース(2015年にワシントンDCで開催されたデータサイエンスコース)のリポジトリのものを利用します。

 

PandasCSVファイルを読み込み、データフレーム「df」に格納し、それをGraphic Walkerで操作します。

以下、コードです。

url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/bikeshare.csv'
df = pd.read_csv(url, index_col='datetime', parse_dates=True)
gwalker = pyg.walk(df)

 

以下、実行結果です。

 

Data(データ)Visualization(視覚化)の2つのメニュー(タブ)があります。

 

Data(データ)

Data(データ)をクリックすると、ローデータの内容をテーブル形式で確認することができます。※クリックすると拡大します

 

各変数が、どのようなデータなのか設定することもできます。

  • この変数は、「集計軸」(dimension)なのか? 「集計対象」( measure)なのか?
  • この変数は、「名義変数」(nominal)なのか? 「順序変数」(ordinal)なのか? 「量的変数」(quantitative)なのか? それ以外(temportal)なのか?

 

Visualization(視覚化)

散布図を作ってみます。※クリックすると拡大します

 

折れ線グラフを作ってみます。※クリックすると拡大します

 

積み上げグラフを作ってみます。※クリックすると拡大します

 

まとめ

今回は、Tableau風にデータ操作できるPythonライブラリーPyGWalkerを紹介しました。

何かしらデータを入手したら、取り急ぎPyGWalkerでデータ理解をするのがいいでしょう。

PyGWalker と Streamlit で12行コードでTableau風ダッシュボードを作成