pygwalker README

The project's README from github.com/Kanaries/pygwalker. As one markdown file: README.md.

English | Español | Français | Deutsch | 中文 | Türkçe | 日本語 | 한국어 | Русский

[!NOTE] The English README is the source of truth for the API reference, installation, and development instructions. Translated READMEs are community-maintained and may lag behind this file.

PyGWalker: A Python Library for Exploratory Data Analysis with Visualization

PyPI version binder PyPI downloads conda-forge

discord invitation link Twitter Follow Join Kanaries on Slack

PyGWalker can simplify your Jupyter Notebook data analysis and data visualization workflow, by turning your pandas dataframe into an interactive user interface for visual exploration.

PyGWalker (pronounced like "Pig Walker", just for fun) is named as an abbreviation of "Python binding of Graphic Walker". It integrates Jupyter Notebook with Graphic Walker, an open-source alternative to Tableau. It allows data scientists to visualize / clean / annotates the data with simple drag-and-drop operations and even natural language queries.

https://github.com/Kanaries/pygwalker/assets/22167673/2b940e11-cf8b-4cde-b7f6-190fb10ee44b

[!TIP] If you want more AI features, we also build runcell, an AI Code Agent in Jupyter that understands your code/data/cells and generate code, execute cells and take actions for you. It can be used in jupyter lab with pip install runcell

https://github.com/user-attachments/assets/9ec64252-864d-4bd1-8755-83f9b0396d38

Visit Google Colab, Kaggle Code or Graphic Walker Online Demo to test it out!

If you prefer using R, check GWalkR, the R wrapper of Graphic Walker. If you prefer a Desktop App that can be used offline and without any coding, check out PyGWalker Desktop.

Features

PyGWalker is a Python library that simplifies data analysis and visualization workflows by turning pandas, polars, and pyarrow table data into interactive visual interfaces. It offers a variety of features that make it a powerful tool for data exploration:

Getting Started

Check our video tutorial about using pygwalker, pygwalker + streamlit and pygwalker + snowflake, How to explore data with PyGWalker in Python

Run in Kaggle Run in Colab
Kaggle Code Google Colab

Setup pygwalker

Before using pygwalker, make sure to install the packages through the command line using pip or conda.

pip

pip install pygwalker

Note

For an early trial, you can install with pip install pygwalker --upgrade to keep your version up to date with the latest release or even pip install pygwalker --upgrade --pre to obtain latest features and bug-fixes.

Conda-forge

conda install -c conda-forge pygwalker

or

mamba install -c conda-forge pygwalker

See conda-forge feedstock for more help.

Use pygwalker in Jupyter Notebook

Quick Start

Import pygwalker and pandas to your Jupyter Notebook to get started.

import pandas as pd
import pygwalker as pyg

You can use pygwalker without breaking your existing workflow. For example, you can call up PyGWalker with the dataframe loaded in this way:

df = pd.read_csv('./bike_sharing_dc.csv')
walker = pyg.walk(df)

That's it. Now you have an interactive UI to analyze and visualize data with simple drag-and-drop operations.

Cool things you can do with PyGwalker:

pygwalker-data-preview

Better Practices

There are some important parameters you should know when using pygwalker:

df = pd.read_csv('./bike_sharing_dc.csv')
walker = pyg.walk(
    df,
    spec_path="./chart_meta_0.json",  # local file used to load and save chart state.
    computation="kernel",          # use DuckDB in the Python kernel for larger datasets.
)

For new code on the 0.6 line, prefer a reusable Walker object and choose where to render it:

walker = pyg.Walker(df, spec_path="./chart_meta_0.json", computation="browser")
walker.show()       # auto-detects notebook or script mode
html = walker.to_html()
html = pyg.to_html(walker)

See PyGWalker 0.6 Release Notes for the compatibility policy, deprecation timeline, and tested runtime support.

After exploring in the UI, export the current chart state as reproducible Python code:

code = walker.to_code(dataset_name="df")
print(code)

If you have an older saved spec, migrate it to the current schema before committing it:

migrated_spec = pyg.spec.migrate(open("./old_chart_meta.json").read())

Example in local notebook

Example in cloud notebook

Programmatic Export of Charts

After saving a chart from the UI, you can retrieve the image directly from Python.

walker = pyg.walk(df, spec_path="./chart_meta_0.json")
# edit the chart in the UI and click the save button
walker.save_chart_to_file("Chart 1", "chart1.svg", save_type="svg")
png_bytes = walker.export_chart_png("Chart 1")
svg_bytes = walker.export_chart_svg("Chart 1")

Use pygwalker in Streamlit

Streamlit allows you to host a web version of pygwalker without figuring out details of how web application works.

Here are some of the app examples build with pygwalker and streamlit:

from pygwalker.api.streamlit import StreamlitRenderer
import pandas as pd
import streamlit as st

# Adjust the width of the Streamlit page
st.set_page_config(
    page_title="Use Pygwalker In Streamlit",
    layout="wide"
)

# Add Title
st.title("Use Pygwalker In Streamlit")

# You should cache your pygwalker renderer, if you don't want your memory to explode
@st.cache_resource
def get_pyg_renderer() -> "StreamlitRenderer":
    df = pd.read_csv("./bike_sharing_dc.csv")
    # If you want to use feature of saving chart config, set `spec_io_mode="rw"`
    return StreamlitRenderer(df, spec_path="./gw_config.json", spec_io_mode="rw")


renderer = get_pyg_renderer()

renderer.explorer()

If you already created a reusable Walker, Streamlit can render it directly:

import pygwalker as pyg
from pygwalker.api.streamlit import StreamlitRenderer

walker = pyg.Walker(df, spec_path="./gw_config.json", computation="kernel")
renderer = StreamlitRenderer(walker)
renderer.explorer()

API Reference

pygwalker.walk

Parameter Type Default Description
dataset Union[DataFrame, pyarrow.Table, Connector, str, Walker] - DataFrame, pyarrow table, database connector, SQL/data source string, or reusable Walker object to explore.
gid Union[int, str] None ID for the GraphicWalker container div, formatted as gwalker-{gid}.
env Literal['JupyterAnywidget', 'Jupyter', 'JupyterWidget'] 'JupyterAnywidget' Notebook rendering environment. Use JupyterAnywidget or omit env; Jupyter and JupyterWidget are deprecated aliases to the anywidget transport and are scheduled for removal in PyGWalker 0.7.0.
field_specs Optional[List[FieldSpec]] None Field specifications. They will be inferred from dataset if not specified.
theme_key Literal['vega', 'g2', 'streamlit'] 'g2' Theme type for Graphic Walker.
appearance Literal['media', 'light', 'dark'] 'media' Theme appearance. media follows the operating system preference.
spec str "" Chart configuration data. Can be a configuration ID, JSON string, local file path, or remote file URL.
spec_path Optional[str] None Local chart configuration file path. Prefer this over passing a local file path through spec.
computation Optional[Literal['auto', 'browser', 'kernel', 'cloud']] None Computation backend. Omit it for automatic behavior; use browser, kernel, or cloud to choose explicitly.
use_kernel_calc Optional[bool] None Deprecated; scheduled for removal in PyGWalker 0.7.0. Use computation="kernel" or computation="browser" instead.
kernel_computation Optional[bool] None Legacy boolean for local DuckDB-backed kernel computation; scheduled for removal in PyGWalker 0.7.0. Prefer computation.
cloud_computation bool False Legacy boolean for Kanaries cloud computation; scheduled for removal in PyGWalker 0.7.0. Prefer computation="cloud".
show_cloud_tool bool True Whether to show the Kanaries cloud tool when available.
kanaries_api_key str "" Kanaries API key used by cloud features.
default_tab Literal['data', 'vis'] 'vis' Default tab to show when the UI opens.
**kwargs Any - Additional keyword arguments.

Development

Local development is documented in this repository:

See also the hosted guide: local-development.

Tested Environments

Configuration And Privacy Policy(pygwalker >= 0.3.10)

You can use pygwalker config to set your privacy configuration.

$ pygwalker config --help

usage: pygwalker config [-h] [--set [key=value ...]] [--reset [key ...]] [--reset-all] [--list]

Modify configuration file. (default: ~/Library/Application Support/pygwalker/config.json) 
Available configurations:

- privacy  ['offline', 'update-only', 'events'] (default: update-only).
    "offline": fully offline, no data is send or api is requested
    "update-only": only check whether this is a new version of pygwalker to update
    "events": share which events about which feature is used in pygwalker, it only contains events data about which feature you arrive for product optimization. No DATA YOU ANALYSIS IS SEND. Events data will bind with a unique id, which is generated by pygwalker when it is installed based on timestamp. We will not collect any other information about you.
    
- kanaries_token  ['your kanaries token'] (default: empty string).
    your kanaries token, you can get it from https://kanaries.net.
    refer: https://space.kanaries.net/t/how-to-get-api-key-of-kanaries.
    by kanaries token, you can use kanaries service in pygwalker, such as share chart, share config.
    

options:
  -h, --help            show this help message and exit
  --set [key=value ...]
                        Set configuration. e.g. "pygwalker config --set privacy=update-only"
  --reset [key ...]     Reset user configuration and use default values instead. e.g. "pygwalker config --reset privacy"
  --reset-all           Reset all user configuration and use default values instead. e.g. "pygwalker config --reset-all"
  --list                List current used configuration.

More details, refer it: How to set your privacy configuration?

License

Apache License 2.0

Contribution Guideline

You are encouraged to contribute to PyGWalker in any way that suits your interests. This may include:

Resources

PyGWalker Cloud is released! You can now save your charts to cloud, publish the interactive cell as a web app and use advanced GPT-powered features. Check out the PyGWalker Cloud for more details.

pygwalker (Kanaries/pygwalker)

Searching Database…

这是什么东西?PyGWalker 是一个 Python 库,能把你的 pandas 数据框变成一个可视化的交互界面,让你在 Jupyter Notebook 里直接用拖拽的方式探索数据、画图表。
那它是一个要导入的库,还是一个像 Tableau 那样的独立软件?它是一个库:在 notebook 单元格里导入后,它会把 Graphic Walker(Tableau 的开源替代品)以交互界面的形式嵌入进来。另外也有一个独立的 PyGWalker Desktop 应用,可以离线、零代码使用。
我怎么在我的 notebook 里把它跑起来?先用 pip install pygwalker 安装(用 conda-forge 也可以),然后在 Jupyter 里导入 pygwalker 和 pandas,对加载好的数据框调用 pygwalker,交互界面就会直接在 notebook 里打开。
它支持哪些数据框库?pandas、polars 和 pyarrow 的表格数据都支持。整个工作流程是围绕 Jupyter Notebook 设计的,安装通过 pip 或 conda 进行。
我得是数据科学家才能用它吗?它主要是为做探索性分析的数据科学家设计的,但因为界面是拖拽式的,普通 Python 用户也能加载数据框后直接开始可视化,不用写画图的代码。
我能在 Jupyter 之外用吗,比如在网页应用里?可以。README 里介绍了用 Streamlit 构建可视化分析应用,以及用 panel-graphic-walker 配合 Panel 使用。此外还有可离线使用的 PyGWalker Desktop,以及 Graphic Walker 的 R 语言封装 GWalkR。
我使用它的时候,数据会离开我的电脑吗?README 把这一点写成可配置的:从 0.3.10 版本起,你可以通过 pygwalker config 设置隐私配置,详细说明在他们单独的隐私指南里。
界面打开之后,我具体能做些什么?你可以把字段拖到行和列上来生成图表,切换折线、柱形等标记类型,把多个度量堆叠成 concat 视图,把维度拆分成 facet 视图,还能在数据表里查看数据,带有分布分析、筛选器和可修改的数据类型。
它为什么叫 PyGWalker?它是 'Python binding of Graphic Walker' 的缩写,README 里还提到它的读音像 'Pig Walker',纯粹是图个好玩。
我能用日常说话的方式向数据提问吗?可以。项目介绍里说,你可以通过拖拽操作来可视化、清洗和标注数据,甚至可以用自然语言查询。更高级的 GPT 功能则属于单独的 PyGWalker Cloud。
PyGWalker Cloud 是什么?它是 README 里介绍的一项配套服务:你可以把图表保存到云端,把交互式的 notebook 单元格发布成网页应用,并使用更高级的 GPT 功能。核心库本身仍然是免费开源的,采用 Apache 2.0 许可证。
Creator
Kanaries
Size
73.4 MB
Stars
16K
Age
3y
Commits · 90 Days