Skip to content

Balots/DPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Processing Toolkit

Комплексное решение для обработки и анализа данных, включающее:

  • 🖥️ Графическое приложение (PyQt5)
  • 🌐 Веб-сервис (FastAPI)
  • 📊 Автоматизированную аналитику (ydata-profiling)

Architecture Diagram (Схема взаимодействия компонентов)

🌟 Основные возможности графического приложения (PyQt5)

🔢 Обработка табличных данных:

  • Загрузка данных из CSV, Excel, JSON, Parquet
  • Удаление дубликатов
  • Обработка пропущенных значений (замена средним, медианой, константой)
  • Обнаружение и удаление выбросов (методы IQR, Hampel и др.)
  • Масштабирование данных (нормализация MinMax, стандартизация Z-score)
  • Визуализация (гистограммы, boxplot, scatter-plot и др.)
  • Автоматический анализ и обработка данных

📖 Обработка текстовых данных:

  • Удаление HTML-тегов и спецсимволов
  • Токенизация (по словам/предложениям)
  • Удаление стоп-слов
  • Нормализация (стемминг, лемматизация)
  • Анализ текста с рекомендациями
  • Поддержка русского и английского языков
  • Обработка для NLP-задач (анализ тональности, суммаризация и др.)

🌟 Основные возможности веб-сервиса (FastAPI)

  • REST API для обработки данных
  • Генерация автоматических отчетов (ydata-profiling)
  • Интерактивный интерфейс через Jupyter-подобный ноутбук
  • Загрузка файлов через веб-интерфейс

Ключевые эндпоинты:

Метод Путь Описание
GET / Веб-интерфейс ноутбука
POST /uploadfile/ Загрузка файлов (CSV/XLSX)
GET /DataFrame/ Обработка данных по ID метода
POST /generate_report/ Генерация HTML-отчета

🛠️ Технологический стек

Backend:

  • Python 3.10+
  • FastAPI (веб-сервис)
  • Uvicorn (ASGI-сервер)
  • Pandas (обработка данных)
  • ydata-profiling (анализ данных)

Графическое приложение:

  • PyQt5
  • Matplotlib
  • NLTK/spaCy

⚙️ Установка и запуск

PyPI установка библиотеки

pip install DPro

Наш проект на PyPI

Ubuntu/Debian

# Клонировать репозиторий
git clone https://github.com/Balots/DPro.git

# Перейти в папку с репозиторием
cd DPro

# Создать окруждение
python -m venv .venv

# Активировать окружение
source .venv/bin/activate

# Установить зависисмости
pip install -r requirements.txt

# Запуск приложения
python app.py

# Запуск веб-сервиса
python main.py

Windows

  1. Запускуаем bash-терминал в директории вашего проекта.
  2. Клонируем репозиторий.
    # Клонировать репозиторий
    git clone https://github.com/Balots/DPro.git
  3. Создаем окружение
  python -m venv .venv
  
  # Активировать (если окруджение создано, сразу переходим к этому шагу)
  source .venv/bin/activate

  # Установить зависисмости
   pip install -r requirements.txt

📦 Модули и классы


base.py

DataProcessing (абстрактный класс)

🔧 Базовый интерфейс для всех классов обработки данных. Этот класс задает общие методы и логику, которые должны быть реализованы в дочерних классах для выполнения различных типов обработки данных.

Методы:

  • __init__(data: pd.DataFrame)
    🛠 Инициализация с копией переданного DataFrame. Создает внутреннюю копию данных, которую можно изменять без изменения исходных данных.

  • run() -> pd.DataFrame
    ⚙️ Абстрактный метод для выполнения обработки данных. Должен быть переопределен в каждом дочернем классе для реализации конкретной логики обработки.

  • info() -> str
    📝 Возвращает описание выполняемой обработки данных, объясняя, что делает конкретный класс.

  • get_answ() -> pd.DataFrame
    📊 Возвращает результат обработки. Этот метод вызывается для получения окончательного результата после выполнения обработки.

  • _select_numeric_columns() -> list
    🔍 Вспомогательный метод для выбора числовых столбцов из DataFrame. Полезен для обработки данных, которые можно подвергнуть математическим операциям.


clean.py

CleanData

🧹 Удаляет дубликаты и сбрасывает индексы в DataFrame, очищая данные и упрощая их обработку.

Методы:

  • run()
    🧼 Выполняет удаление дубликатов и сброс индексов, возвращая обновленный DataFrame.

  • info()
    📝 Возвращает описание выполнения операции — удаление дубликатов и сброс индексов.

  • get_answ()
    📊 Возвращает результат обработки, вызывая метод run(), если обработка еще не была выполнена.


missing.py

HandleMissingValues

🚨 Обрабатывает пропущенные значения в данных, заменяя их на значения по выбранной стратегии (среднее, медиану, моду или заданное значение).

Аргументы:

  • numeric_strategy: 'mean' | 'median'
    🧮 Стратегия для числовых столбцов. Определяет, как обрабатывать пропущенные значения (среднее или медиана).

  • categorical_strategy: 'mode' | 'constant'
    📦 Стратегия для категориальных столбцов. Пропущенные значения могут быть заменены на моду или заданное значение.

  • fill_value: dict
    💡 Словарь значений для использования с константной стратегией. Если не указан, для каждой категории будет использована мода.

  • columns: список столбцов
    📋 Список столбцов для обработки. Если не указан, будут обработаны все столбцы в DataFrame.

Методы:

  • run()
    🔄 Реализует логику заполнения пропущенных значений согласно выбранной стратегии. Возвращает обновленный DataFrame.

  • info()
    📝 Возвращает строку с описанием выполнения операции: какие стратегии были использованы для числовых и категориальных столбцов.

  • get_answ()
    📊 Возвращает результат обработки, вызывая метод run(), если обработка еще не была выполнена.


normalize.py

NormalizeData

📏 Нормализует данные с использованием Min-Max scaling, приводя их в диапазон от минимального до максимального значения (по умолчанию от 0 до 1).

Аргументы:

  • columns
    📋 Список столбцов для нормализации. Если не указан, будет применена нормализация ко всем числовым столбцам.

  • feature_range: (min, max)
    🔄 Диапазон, к которому будут приведены данные. По умолчанию от 0 до 1.

Методы:

  • run()
    🔄 Применяет Min-Max нормализацию к указанным столбцам. Возвращает обновленный DataFrame с нормализованными значениями.

  • info()
    📝 Возвращает строку с описанием нормализации, включая выбранные столбцы и диапазон.

  • get_answ()
    📊 Возвращает результат обработки, вызывая метод run(), если обработка еще не была выполнена.


standardize.py

StandardizeData

📐 Стандартизирует данные с использованием стандартного скейлинга (Standard Scaling). Приводит данные к среднему значению 0 и стандартному отклонению 1.

Аргументы:

  • columns
    📋 Список столбцов для стандартизации. Если не указан, будет применена стандартизация ко всем числовым столбцам.

Методы:

  • run()
    🔄 Применяет стандартизацию (среднее = 0, стандартное отклонение = 1) к указанным столбцам. Возвращает обновленный DataFrame.

  • info()
    📝 Возвращает строку с описанием стандартизации, включая выбранные столбцы.

  • get_answ()
    📊 Возвращает результат обработки, вызывая метод run(), если обработка еще не была выполнена.


outliers.py

DetectAndRemoveOutliers

🚫 Удаляет выбросы в данных с использованием метода IQR (Interquartile Range). Метод находит выбросы на основе межквартильного размаха и удаляет их.

Аргументы:

  • columns
    📋 Список столбцов для удаления выбросов. Если не указан, метод будет применен ко всем числовым столбцам.

  • method='IQR'
    🧮 Метод для удаления выбросов. В текущей реализации поддерживается только метод IQR.

  • factor=1.5
    🔢 Множитель для вычисления пороговых значений для определения выбросов. Обычно используется значение 1.5.

Методы:

  • run()
    🔄 Применяет метод IQR для обнаружения и удаления выбросов из данных. Возвращает обновленный DataFrame.

  • info()
    📝 Возвращает строку с описанием применения метода IQR для удаления выбросов, включая используемый множитель.

  • get_answ()
    📊 Возвращает результат обработки, вызывая метод run(), если обработка еще не была выполнена.


Detector.py

Detector

🔍 Предварительный анализ данных Включает в себя поиск дубликатов, пропусков, выбросов, а также рекомендации по нормализации и стандартизации.

Аргументы

  • check_abnormal: bool
    🛠 Условие проверки на выбросы.

  • check_missing: bool
    🛠 Условие проверки на пропуски.

  • check_duplicates: bool
    🛠 Условие проверки на дубликаты.

  • check_scaling: bool
    🛠 Условие выдачи рекомендаций по масштабированию.

  • hampel_threshold: float = 3.0
    📦3начение порога для фильтра Хампеля.

  • iqr_multiplier: float = 1.5
    📦 Значение множителя для IQR метода.

  • skewness_threshold: float = 2.0
    📦 Значение порога для метода асимметрии.

  • curtosis_threshhold: float = 3.5
    📦 Значение порога для метода эксцесса.

Методы

  • check_dataframe(filename:str) -> outcome, abnormal, scaling
    📊 Основной метод, проверка на наличие пропущенные значений, дубликатов, выбросов и рекомендации по нормализации стандартизации данных в столбцах по заданным условиям проверки.

  • increase_threshold(increasing_multiplier:int)
    ⚙️ Повышает общую чувствительность проверки.

  • decrease_threshold(decreasing_multiplier:int)
    ⚙️ Понижает общую чувствительность проверки.

  • find_missing(profile)
    🔍 Поиск пропусков.

  • find_duplicates(profile)
    🔍 Поиск дубликатов.

  • find_abnormal(profile, df, hampel_threshold, iqr_multiplier, skewness_threshold, kurtosis_threshold)
    📐 Анализирует выбросы с помощью 5 различных методов: 1. IQR метод (межквартильный размах). 2. Модифицированный Z-score (фильтр Хемпеля). 3. 5й и 95й процентили. 4. Метод на основе коэффициента асимметрии. 5. Метод на основе эксцесса.

  • recommend_scaling_methods(df, profile)
    💡 Рекомендует метод масштабирования (нормализацию или стандартизацию) для каждого числового столбца. Возвращает словарь с рекомендациями для каждого столбца.


IDet

Аргументы

  • 🔄 те же, что и у основоного класса.

Методы

  • logging_results(filename)
    📝 Логирует результаты работы детектора.

📌 Пример использования

ЗАПИСЬ1.mov

ЗАПИСЬ2.mov

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5