В этом руководстве мы покажем, как выйти за рамки статических графиков с большим количеством кода и создать по-настоящему интерактивный рабочий процесс для исследовательского анализа данных непосредственно с помощью PyGWalker.
Подготовка данных
Мы начнём с подготовки набора данных «Титаник» для крупномасштабных интерактивных запросов. Эти специально подготовленные для анализа признаки выявляют базовую структуру данных, позволяя одновременно исследовать данные как на уровне отдельных строк, так и на уровне агрегированных представлений.
Встраивание интерфейса перетаскивания в стиле Tableau непосредственно в блокнот позволяет быстро тестировать гипотезы, интуитивно сравнивать когорты и эффективно проверять качество данных — и всё это без необходимости переключения между кодом и инструментами визуализации.
Код для установки зависимостей
«`python
import sys, subprocess, json, math, os
from pathlib import Path
def pip_install(pkgs):
subprocess.check_call([sys.executable, «-m», «pip», «install», «-q»] + pkgs)
pip_install([
«pygwalker>=0.4.9»,
«duckdb>=0.10.0»,
«pandas>=2.0.0»,
«numpy>=1.24.0»,
«seaborn>=0.13.0»
])
«`
Предварительная обработка данных
«`python
import numpy as np
import pandas as pd
import seaborn as sns
dfraw = sns.loaddataset(«titanic»).copy()
print(«Raw shape:», df_raw.shape)
display(df_raw.head(3))
«`
Интеграция PyGWalker
Мы интегрируем PyGWalker для преобразования наших подготовленных таблиц в полностью интерактивный аналитический интерфейс с возможностью перетаскивания. Мы сохраняем спецификацию визуализации, чтобы макеты информационных панелей и кодировки сохранялись при перезапуске блокнотов. Это превращает блокнот в многократно используемую среду для изучения данных в стиле BI.
«`python
import pygwalker as pyg
SPECPATH = Path(«/content/pygwalkerspec_titanic.json»)
def load_spec(path):
if path.exists():
try:
return json.loads(path.read_text())
except Exception:
return None
return None
def savespec(path, specobj):
try:
if isinstance(spec_obj, str):
specobj = json.loads(specobj)
path.writetext(json.dumps(specobj, indent=2))
return True
except Exception:
return False
def launchpygwalker(df, specpath):
spec = loadspec(specpath)
kwargs = {}
if spec is not None:
kwargs[«spec»] = spec
try:
walker = pyg.walk(df, usekernelcalc=True, kwargs)
except TypeError:
walker = pyg.walk(df, kwargs) if spec is not None else pyg.walk(df)
captured = None
for attr in [«spec», «_spec»]:
if hasattr(walker, attr):
try:
captured = getattr(walker, attr)
break
except Exception:
pass
for meth in [«tospec», «exportspec», «get_spec»]:
if captured is None and hasattr(walker, meth):
try:
captured = getattr(walker, meth)()
break
except Exception:
pass
if captured is not None:
savespec(specpath, captured)
return walker
walkerrows = launchpygwalker(dfforui, SPEC_PATH)
walker_agg = pyg.walk(agg)
«`
Cloudflare выпускает Agents SDK v0.5.0
Cloudflare выпустила Agents SDK v0.5.0 для решения проблем, связанных с использованием бессерверных функций без состояния в разработке искусственного интеллекта. В стандартных бессерверных архитектурах каждый вызов LLM требует восстановления контекста сеанса с нуля, что увеличивает задержки и потребление токенов.
Управление состоянием с помощью Durable Objects
Agents SDK использует Durable Objects (DO) для обеспечения постоянной идентичности и памяти для каждого экземпляра агента. В традиционных бессерверных моделях функции не сохраняют память о предыдущих событиях, если они не запрашивают внешнюю базу данных, например, RDS или DynamoDB, что часто добавляет от 50 мс до 200 мс задержки.
Оптимизация вывода с помощью Infire
Для уровня вывода Cloudflare разработала Infire, движок LLM, написанный на Rust, который заменяет стеки на основе Python, такие как vLLM. Python-движки часто сталкиваются с узкими местами производительности из-за глобальной блокировки интерпретатора (GIL) и пауз при сборке мусора. Infire предназначен для максимального использования GPU на оборудовании H100 за счёт снижения нагрузки на процессор.
Код Mode и эффективность использования токенов
Стандартные агенты искусственного интеллекта обычно используют «вызов инструментов», когда LLM выводит объект JSON для запуска функции. Этот процесс требует взаимодействия между LLM и средой выполнения для каждого используемого инструмента. Режим кода Cloudflare меняет это, предлагая LLM написать программу на TypeScript, которая управляет несколькими инструментами одновременно.
Этот код выполняется в защищённом изолированном пространстве V8. Для сложных задач, таких как поиск в 10 разных файлах, режим кода обеспечивает сокращение использования токенов на 87,5%. Поскольку промежуточные результаты остаются в песочнице и не отправляются обратно в LLM на каждом шаге, процесс становится быстрее и экономичнее.
Ключевые выводы
- Состояние на границе: в отличие от традиционных бессерверных функций без состояния, Agents SDK использует Durable Objects для предоставления агентам постоянной идентичности и памяти.
- Высокоэффективный вывод на Rust: движок Infire, написанный на Rust, оптимизирует использование GPU, используя детальные графы CUDA для сокращения нагрузки на процессор на 82%.
- Оптимизация использования токенов через Code Mode: «Режим кода» позволяет агентам писать и выполнять программы на TypeScript в защищённом изолированном пространстве V8, что снижает потребление токенов на 87,5% для сложных задач.
- Универсальная интеграция инструментов: платформа полностью поддерживает протокол Model Context Protocol (MCP), стандарт, который действует как универсальный переводчик для инструментов искусственного интеллекта.
- Утилиты для производственных систем (v0.5.0): февральский выпуск 2026 года представил важные функции надёжности, включая утилиту this.retry() для асинхронных операций с экспоненциальным откатом и дрожанием.
1. Какие преимущества предоставляет использование PyGWalker для исследовательского анализа данных?
Использование PyGWalker позволяет создать интерактивный рабочий процесс для исследовательского анализа данных, который выходит за рамки статических графиков и большого количества кода. Это обеспечивает быстрое тестирование гипотез, интуитивное сравнение когорт и эффективную проверку качества данных без необходимости переключения между кодом и инструментами визуализации.
2. Какие шаги включает в себя предварительная обработка данных перед использованием PyGWalker?
Предварительная обработка данных включает в себя загрузку набора данных, например, «Титаник», с помощью pandas и печать информации о форме данных и первых нескольких строках. Это позволяет исследователю получить представление о структуре данных перед их анализом с помощью PyGWalker.
3. Какие инструменты и библиотеки используются для установки зависимостей в данном руководстве?
Для установки зависимостей используются следующие инструменты и библиотеки:
* `sys` для работы с системными функциями;
* `subprocess` для выполнения команд в подпроцессе;
* `json` для работы с JSON;
* `math` для математических функций;
* `os` для работы с операционной системой;
* `pathlib` для работы с путями файлов;
* `pip_install` для установки пакетов с помощью pip;
* `pygwalker` для создания интерактивного рабочего процесса;
* `duckdb`, `pandas`, `numpy`, `seaborn` для анализа данных.
4. Какие функции выполняет функция `load_spec` в данном коде?
Функция `load_spec` загружает спецификацию визуализации из указанного пути. Если файл существует, функция пытается загрузить его содержимое в формате JSON. Если файл не существует или возникает ошибка при чтении, функция возвращает `None`.
5. Какие преимущества предоставляет использование Agents SDK v0.5.0 для разработки искусственного интеллекта?
Agents SDK v0.5.0 использует Durable Objects для обеспечения постоянной идентичности и памяти для каждого экземпляра агента, что решает проблемы, связанные с использованием бессерверных функций без состояния. Это позволяет оптимизировать вывод с помощью Infire, движка LLM, написанного на Rust, который заменяет стеки на основе Python и обеспечивает максимальное использование GPU на оборудовании H100. Кроме того, режим кода Cloudflare позволяет агентам писать и выполнять программы на TypeScript в защищённом изолированном пространстве V8, что снижает потребление токенов на 87,5% для сложных задач.