レバレジーズ データAIブログ

インハウスデータ組織のあたまのなか

【Python】pygwalkerの使い方|ノーコードデータ可視化

はじめに

こんにちは! レバレジーズデータ戦略室、データアナリティクスグループの内田です。

普段の業務では、TableauやPython(matplotlib/seaborn)を中心に使用していますが、最近は可視化ライブラリーの「pygwalker」をよく使用しています。

今回は、実際に使ってみた率直な感想と使い方についてお話しします。

pygwalkerとは

pygwalkerは、プログラミング不要でドラッグ&ドロップによる直感的な操作でデータを可視化できるPythonライブラリです。Jupyter Notebook上で動作し、pandasのDataFrameを引数として渡すだけで、簡単に可視化を行うことが可能です。

Python binding of Graphic Walker」の略称で、従来のmatplotlibやseabornでは複数行のコードが必要だった複雑な可視化も、マウス操作だけで簡単に作成できることを目指して開発されました。

基本的な使い方

インストールと起動

# インストール
!pip install pygwalker

# 基本的な使用例
import pandas as pd
import pygwalker as pyg

# サンプルデータの読み込み
df = pd.read_csv('your_data.csv')

# pygwalker起動
walker = pyg.walk(df)

UI画面の基本構成

pygwalkerを起動すると、以下のような画面が表示されます。

① 左側パネル: データセットの変数一覧(ディメンション/メジャーに自動分類)
② 右側パネル: フィルターや詳細設定
③ 中央エリア: 可視化結果を表示
④ 上部ツールバー: グラフタイプの変更、設定オプション

基本的な操作方法

1. 変数の配置

  • 左側の変数リストから、X軸・Y軸・色・サイズなどにドラッグ&ドロップ
  • 自動的にグラフが更新される。

2. グラフタイプの変更

  • 上部の「Mark Type」から点・線・棒・ヒートマップなどを選択。
  • 「Auto」モードでは最適なグラフタイプが自動選択される。

3. フィルターの適用

  • 変数をFiltersエリアにドラッグしてデータを絞り込み。
  • 数値範囲やカテゴリの選択が可能。

使用例

自転車シェアリングデータの分析

UCI Machine Learning Repositoryの自転車シェアリングデータセットを使用した分析の例を紹介します。
このデータセットは2011-2012年のワシントンD.C.のバイクシェアリングシステムの利用状況と天候・季節情報を含んでいます。

# インストール
!pip install pygwalker

# インポート
import pandas as pd
import pygwalker as pyg
import zipfile
import io
import requests
import os

# UCI自転車シェアリングデータセットを自動ダウンロード・読み込み
def load_bike_sharing_data():
    url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00275/Bike-Sharing-Dataset.zip'
   
    # ローカルにファイルが既に存在するかチェック
    if os.path.exists('./hour.csv'):
        print("既存のファイルを読み込みます")
        return pd.read_csv('hour.csv')
    
    print("データセットをダウンロード中...")
    response = requests.get(url)
    
    # zipファイルを展開してCSVを保存
    with zipfile.ZipFile(io.BytesIO(response.content)) as zip_file:
        # hour.csvを現在のディレクトリに保存
        zip_file.extract('hour.csv', '.')
        print("hour.csvを保存しました")
    
    # CSVファイルを読み込み
    df = pd.read_csv('hour.csv')
    print(f"データ読み込み完了: {df.shape[0]}行 × {df.shape[1]}列")
    return df

# データ読み込み
df = load_bike_sharing_data()

# pygwalkerで可視化画面を起動
walker = pyg.walk(df)

pygwalkerを使って以下のような可視化を簡単に作成できました。

・時系列グラフ:季節別の利用者数推移を可視化

日付(dteday)をX軸、利用者数(cnt)をY軸、季節(season)を色分けに設定。 日別の合計利用者数が表示され、季節ごとの利用傾向が一目で把握できました。

・散布図:気温と利用者数の相関関係を探索

気温(temp*)をX軸、利用者数(cnt)をY軸に配置し、マークタイプを「点」に設定。正の相関関係が視覚的に確認でき、気温が高いほど利用者が増える傾向を発見できました。

*temp = (実際の気温 - 最低気温) / (最高気温 - 最低気温)

・ヒートマップ:曜日×時間帯別の利用パターンを分析

曜日(weekday)を列、時間(hr)を行、利用者数(cnt)を色の濃淡で表現。

黄色からオレンジが利用者数が多い時間帯を示しており、平日の通勤時間帯(8時、17-18時)と週末の昼間に利用が集中するパターンが明確に可視化されました。

従来なら複数のmatplotlibのコードを書く必要があった分析が、ドラッグ&ドロップだけで完了し、作業時間を大幅に短縮できました。

pygwalkerのメリット

学習コストの低さ

直感的なドラッグ&ドロップ操作により、プログラミング知識やBIツールの経験がなくても複雑な可視化が可能です。初めて使う方でも短時間で操作を習得でき、チーム内での導入ハードルが非常に低いと感じました。

スピード感のある探索的データ分析(EDA

従来のmatplotlibやseabornでは、散布図一つ作るにも複数行のコードとグラフの調整が必要でしたが、pygwalkerならドラッグ&ドロップだけで同等の可視化が瞬時に完成します。「この変数とあの変数の関係を見てみたい」と思った瞬間に、ノーコードで検証できるため、仮説検証のサイクルが劇的に高速化されました。

pygwalkerのデメリット

大規模データでの制約

デフォルトのJavaScript計算エンジンでは、大容量データで動作が重くなることがあります。ただし、「kernel_computation=True」オプションを使用することでDuckDBエンジンが有効になり、より大きなデータセットを扱えるようになります。それでも非常に大きなデータの場合は、サンプリングなどの対応が推奨されます。

*参考リンク:pygwalker公式ドキュメント - パフォーマンス設定

カスタマイズ性の限界

企業カラーに合わせたデザイン調整が困難で、フォントやレイアウトの自由度も低いです。プレゼン用の資料作成には別途調整が必要になることが多かったです。

まとめ

今回、pygwalkerを使用してみましたが、探索的データ分析における効率性の向上は想像以上でした。

特に印象的だったのは、「思いついたらすぐに検証できる」というスピード感です。従来のmatplotlibやseabornでは、グラフを一つ作るたびにコードを書いて実行する必要がありましたが、pygwalkerではドラッグ&ドロップだけで瞬時に可視化が完成し、仮説検証のサイクルが劇的に短縮されました。

大規模データの処理やカスタマイズ性には制約もありますが、これらを考慮しても、データ分析の初期段階や仮説生成フェーズにおけるpygwalkerの価値は非常に高いと感じています。インストールも簡単で、すぐに試すことができますので、ぜひ一度使ってみてください。