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?Это библиотека: вы импортируете её в ячейке ноутбука, и она встраивает Graphic Walker — открытую альтернативу Tableau — как интерактивный интерфейс. Существует и отдельное приложение PyGWalker Desktop для работы офлайн и без программирования.
Как запустить это в своём ноутбуке?Установите через pip install pygwalker (можно и через conda-forge), затем импортируйте в Jupyter pygwalker и pandas и вызовите pygwalker на загруженном датафрейме — интерактивный интерфейс откроется прямо в ноутбуке.
С какими библиотеками датафреймов он работает?Поддерживаются pandas, polars и табличные данные pyarrow. Весь рабочий процесс построен вокруг Jupyter Notebook, а установка идёт через pip или conda.
Мне нужно быть дата-сайентистом, чтобы этим пользоваться?Ориентирован он на специалистов по данным, занимающихся разведочным анализом, но благодаря перетаскиванию обычный пользователь Python может загрузить датафрейм и начать строить визуализации, не написав ни строчки кода для графиков.
А можно использовать его вне Jupyter, например в веб-приложении?Да — в README показано, как строить приложения визуального анализа со Streamlit и с panel-graphic-walker для Panel. Есть также PyGWalker Desktop для работы офлайн и GWalkR — обёртка Graphic Walker для R.
Мои данные уходят с моего компьютера, пока я им пользуюсь?В README это подано как настраиваемый параметр: начиная с версии 0.3.10 можно задать настройки приватности через pygwalker config, подробности — в их отдельном руководстве по приватности.
Что конкретно я могу делать, когда интерфейс откроется?Вы строите графики, перетаскивая поля в строки и столбцы, меняете типы меток — например, линию или столбцы, объединяете несколько мер в concat-виды, разбиваете размерности на facet-виды, а данные смотрите в таблице с профилем распределений, фильтрами и редактируемыми типами данных.
Почему он называется PyGWalker?Это сокращение от 'Python binding of Graphic Walker', а в README отмечается, что произносится как 'Pig Walker' — просто для шутки.
Могу ли я задавать вопросы о своих данных обычным языком?Да — во вступлении сказано, что визуализировать, чистить и размечать данные можно перетаскиванием и даже запросами на естественном языке. Более продвинутые возможности на базе GPT входят в отдельный PyGWalker Cloud.
Что такое PyGWalker Cloud?Это сопутствующий сервис, представленный в README: можно сохранять графики в облако, публиковать интерактивную ячейку ноутбука как веб-приложение и пользоваться продвинутыми функциями на базе GPT. Сама основная библиотека остаётся бесплатной и открытой под лицензией Apache 2.0.
Creator
Kanaries
Size
73.4 MB
Stars
16K
Age
3y
Commits · 90 Days