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…

What is this?PyGWalker is a Python library that turns your pandas dataframe into an interactive UI for visual analysis, so you can explore and chart data with drag-and-drop right inside Jupyter Notebook.
So is it a library I import, or a separate Tableau-style app?A library: you import it in a notebook cell and it embeds Graphic Walker, an open-source alternative to Tableau, as an interactive UI. A separate PyGWalker Desktop app for offline, no-code use also exists.
How do I get it running in my notebook?Install with pip install pygwalker (conda-forge also works), then import pygwalker and pandas in Jupyter and call pygwalker on your loaded dataframe — the interactive UI opens right in the notebook.
Which dataframe libraries does it work with?pandas, polars and pyarrow table data are all supported. The workflow is built around Jupyter Notebook, and installation goes through pip or conda.
Do I need to be a data scientist to use it?It targets data scientists doing exploratory analysis, but the drag-and-drop interface means an ordinary Python user can load a dataframe and start visualizing without writing chart code.
Can I use it outside Jupyter, for example in a web app?Yes — the README shows building visual analysis apps with Streamlit and with panel-graphic-walker for Panel. There is also PyGWalker Desktop for offline use and GWalkR, the R wrapper of Graphic Walker.
Does my data leave my machine while I use it?The README treats this as configurable: from version 0.3.10 you can set your privacy configuration via pygwalker config, with details in their separate privacy guide.
What can I actually do once the UI opens?You build charts by dragging fields onto rows and columns, switch mark types such as line or bar, stack multiple measures into concat views, split dimensions into facet views, and inspect data in a table with distribution profiling, filters and editable data types.
Why is it called PyGWalker?It is short for 'Python binding of Graphic Walker', and the README notes it is pronounced like 'Pig Walker' — just for fun.
Can I ask questions about my data in plain English?Yes — the intro says you can visualize, clean and annotate data with drag-and-drop operations and even natural language queries. More advanced GPT-powered features are part of the separate PyGWalker Cloud.
What is PyGWalker Cloud?A companion service announced in the README: you can save charts to the cloud, publish an interactive notebook cell as a web app, and use advanced GPT-powered features. The core library itself stays free and open source under Apache 2.0.
Creator
Kanaries
Size
73.4 MB
Stars
16K
Age
3y
Commits · 90 Days