PyGWalkerをGradioと一緒に使う方法
pygwalkerは、データを対話型の可視化アプリ(TableauやPowerBIのようなもの)に変換するためのPythonライブラリです。たとえば、Jupyter Notebookでは、データサイエンティストはよくpygwalkerを使ってデータを対話型モジュールに変換し、Jupyterに埋め込んで可視化を探索します。このとき、コードを書くことなく、他のツールに切り替えることなく、ドラッグアンドドロップや自然言語を使って可視化を探索できます。
しかし、対話型の可視化を他の人と共有するにはどうすればよいでしょうか?ユーザーにデータを自分自身で探索させる方法はありますか?このチュートリアルでは、PyGWalkerをGradioと一緒に使用してデータ探索と共有アプリを構築する方法を紹介します。
Gradioとは何ですか?
Gradio (opens in a new tab)は、機械学習モデル、ディープラーニングモデル、その他の関数の周りにカスタマイズ可能なUIコンポーネントを簡単に作成できるPythonライブラリです。わずか数行のコードでモデルのためのシンプルで共有可能なUIを作成することができます。Gradioは、モデルを他の人と共有するためのウェブアプリを素早く作成するための優れたツールです。
PyGWalkerをGradioと一緒に使う方法
PyGWalkerをGradioと一緒に実行する前に、コンピュータでPython環境が設定されているか確認しましょう(バージョン3.6以上が必要です)。準備ができたら、以下の簡単な手順に従ってください:
素晴らしいです!すでにかなりの進歩を遂げました。提供された情報を使って、チュートリアル記事を完成させるのをお手伝いします。
PyGWalkerをGradioと統合する手順
1. インストール
まずはじめに、pygwalker
とgradio
のライブラリがインストールされていることを確認してください。まだインストールしていない場合は、以下のコマンドで簡単に行えます:
pip install pygwalker gradio
2. 必要なライブラリをインポートする
コード内で以下のように必要なモジュールをすべてインポートします:
import gradio as gr
import pygwalker as pyg
from datasets import load_dataset
3. データセットを読み込む
このチュートリアルでは、GradioのNYC-Airbnbデータセットを使用していますが、自分の選んだデータセットに置き換えても構いません:
dataset = load_dataset("gradio/NYC-Airbnb-Open-Data", split="train")
df = dataset.to_pandas()
4. PyGWalkerでGradioのインターフェースを構築する
次に、GradioのBlocks機能を使用してユーザーインターフェースコンポーネントをカプセル化します。提供されたコードに示すように行います:
with gr.Blocks() as demo:
gr.Label("Visual Explore NYC-Airbnb data in PyGWalker and Gradio")
gr.Markdown("This is a data app built with pygwalker and gradio library. You can use drag-and-drop operations to explore the data. Start your analysis now!")
gr.HTML(pyg.walk(dataset=df, spec="./viz-config.json", debug=False, return_html=True))
以下は各行の説明です:
gr.Label()
: Gradioインターフェースのラベルまたはタイトルを提供します。gr.Markdown()
: 詳細な説明や情報にマークダウン形式のテキストを含めることができます。gr.HTML()
: ここでpygwalker
が活躍します。pyg.walk()
関数はデータセットを対話型の可視化に変換し、その後このHTMLコンポーネントを介してGradioインターフェースにレンダリングされます。
5. アプリを起動する
最後に、次の単純なコマンドでウェブアプリを起動できます:
demo.launch()
スクリプトを実行すると、対話型のデータ可視化がブラウザで利用できるようになります。ドラッグアンドドロップの機能や自然言語を使ってデータセットを探索することができます(日本語入力にはkanaries APIキーが必要です)。
PyGWalkerとGradioをよりネイティブに統合する方法
pygwalkerにはカーネル計算などの高度な機能があり、データ探索を高速化するためにduckDBパワードエンジンを活用することができます。pygwalker version>=0.3.10
以降、gradioへのネイティブサポートが提供されています。
from pygwalker.api.gradio import PYGWALKER_ROUTE, get_html_on_gradio
with gr.Blocks() as demo:
# データセットを読み込む
dataset = load_dataset("gradio/NYC-Airbnb-Open-Data", split="train")
df = dataset.to_pandas()
pyg_app = get_html_on_gradio(df, spec="./viz-config.json")
gr.HTML(pyg_app)
app = demo.launch(app_kwargs={
"routes": [PYGWALKER_ROUTE]
})
結論
pygwalker
とgradio
のパワーを組み合わせることで、対話型のデータ可視化を迅速に作成して共有することができます。データ探索を簡素化するだけでなく、データの洞察へのアクセスを民主化し、非技術者でも調査結果と対話できるようになります。ぜひ試してみて、自分の洞察を世界と共有してください!
参考文献
[1] Gradio (opens in a new tab) [2] PyGWalker documents (opens in a new tab) [3] pygwalker + gradio playground (opens in a new tab) [4] pygwalker github (opens in a new tab)