Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutomatedDataAnalysis

Веб-приложение для анализа табличных датасетов: от технического паспорта данных до подготовки обучающей выборки и сравнения ML-моделей — всё в одном рабочем пространстве.

Идея проекта простая: сначала обычный детерминированный Python-код извлекает проверяемые факты из данных, а интерфейс превращает их в понятный рабочий процесс аналитика. AI-слой (объяснение фактов и рекомендаций человеческим языком) — следующий запланированный этап поверх этого фундамента.

Стек

Слой Технологии
Backend Python 3.11+, FastAPI, Polars, scikit-learn, pandas
Frontend React 19, TypeScript, Vite
Тесты pytest

Frontend хранит только настройки и предпросмотры, а все тяжёлые преобразования (профилирование, ETL, обучение) выполняет backend — браузер не блокируется вычислениями.

Рабочие слои

Приложение разбито на четыре последовательных раздела.

1. Dataset Overview — паспорт датасета

Загрузка файлов (drag-and-drop или выбор), после чего backend строит технический профиль:

  • количество строк, колонок и полных дублей;
  • профиль каждой колонки: тип, пропуски, уникальность, доля уникальности;
  • автоматическое определение вероятных ID-колонок и константных колонок;
  • базовые числовые статистики (min/max/среднее/медиана/std/квартили/асимметрия);
  • выбросы по правилу межквартильного размаха (IQR);
  • определение дисбаланса категорий;
  • сводный Quality Score от 0 до 100 с явными весами по каждому сигналу качества.

Поддерживаемые форматы: .csv, .parquet, .json, .jsonl/.ndjson, .xlsx. CSV читается с автоопределением разделителя (, ; \t |) и кодировки (UTF-8/UTF-16, а также Windows-1251/1252 с эвристикой по доле кириллицы — для русскоязычных корпоративных выгрузок).

2. Data Viewer — просмотр датасета

Полный постраничный просмотр данных с фильтрами отображения и SQL:

  • вся таблица постранично (25/50/100 строк) — по сети передаётся только видимая страница, а не весь файл;
  • поиск подстроки по всем колонкам сразу (фильтр по всему датасету на backend);
  • скрытие/показ отдельных колонок в отображении;
  • окно SQL-запросов к датасету (таблица называется dataset) — фильтрация, агрегации, сортировка.

SQL выполняется движком Polars и работает только с загруженным датасетом: запрос не имеет доступа к файловой системе, поэтому не может прочитать посторонние данные.

3. ETL — подготовка обучающего датасета

Конструктор рецептов очистки и объединения данных:

  • объединение нескольких источников: один файл, добавление строк (concat) или join по ключу;
  • удаление полных дублей;
  • поколоночные правила: включение/исключение, приведение типа, обработка пропусков (среднее/медиана/мода/ноль/удаление), обработка выбросов (обрезка по IQR или удаление), one-hot кодирование, переименование;
  • вычисляемые колонки через безопасный SQL-парсер выражений Polars (без eval, поэтому формула не может читать файлы или выполнять системные команды);
  • предпросмотр результата с профилем качества «до → после»;
  • экспорт в CSV или передача датасета прямо в слой Models.

Режим «Собрать автоматически» формирует rule-based рекомендации (исключить ID и константы, заполнить пропуски по типу колонки, обрезать выбросы, предложить осмысленные бизнес-признаки) — но ничего не применяет скрытно: пользователь видит каждое предложение и может изменить любое правило перед сборкой.

4. Models — сравнение моделей

Один воспроизводимый ML-эксперимент на выбранном датасете:

  • выбор целевой колонки, типа задачи (авто / классификация / регрессия) и признаков;
  • обучение нескольких кандидатов на одном и том же train/test-разбиении: honest-baseline (Dummy), линейная модель (Logistic Regression / Ridge) и Random Forest;
  • сравнимые метрики: balanced accuracy, F1, accuracy для классификации; RMSE, MAE, R² для регрессии;
  • важность признаков лучшей модели и текстовые рекомендации.

Категориальные признаки кодируются внутри sklearn-пайплайна, target всегда исключается из признаков — защита от утечки ответа в модель. Baseline нужен, чтобы честно показать, действительно ли модель бьёт тривиальное предсказание.

5. Test Drive

Раздел для проверки экспериментов и сравнения результатов (в разработке).

Быстрый старт

Требуется Python 3.11+ и Node.js 18+.

Backend

pip install -e ".[dev]"
python -m uvicorn backend.api:app --host 127.0.0.1 --port 8505

Frontend

cd frontend
npm install
npm run dev

Интерфейс: http://127.0.0.1:5173/. Vite проксирует /api на backend, поэтому дополнительная настройка не нужна.

В папке examples/ лежат демонстрационные датасеты оттока клиентов (~460 строк с пропусками, дублями и выбросами) — их можно сразу загрузить, пройти путь Overview → ETL → Models и получить рабочее сравнение моделей.

CLI

Профилировщик доступен и как командная утилита без запуска веб-приложения:

python -m backend.dataset_analyzer.cli .\examples\sample_customers.csv --output .\reports\sample_profile.json

Тесты

pytest

Тесты покрывают все три слоя: профилировщик (форматы, кодировки, метрики качества), ETL (объединение, поколоночные правила, рекомендации) и обучение (классификация, регрессия, валидация конфигурации).

Структура проекта

backend/
  api.py                     # FastAPI-эндпоинты (analyze, data/view, etl, models)
  dataset_analyzer/
    profiler.py              # чтение файлов и построение профиля
    data_view.py             # постраничный просмотр, поиск и SQL
    etl.py                   # рецепты ETL и рекомендации
    training.py              # обучение и сравнение моделей
    models.py                # структуры данных профиля
    cli.py                   # CLI-обёртка профилировщика
frontend/
  src/
    App.tsx                  # Dataset Overview и общая оболочка
    DataViewerWorkspace.tsx  # раздел Data Viewer
    EtlWorkspace.tsx         # раздел ETL
    ModelsWorkspace.tsx      # раздел Models
examples/                    # демонстрационные датасеты
tests/                       # pytest

Дальнейшие планы

  • AI-слой: объяснение профиля, качества данных и результатов моделей естественным языком поверх уже собранных фактов.
  • Наполнение раздела Test Drive.
  • Сохранение обученной модели и предсказание на новых данных.

About

Веб-приложение позволяющее специалистам по данным выполнить быстрый анализ датасетов в любом формате, увидев зависимости на детализированном дашборде.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages