Комплексное решение для обработки и анализа данных, включающее:
- 🖥️ Графическое приложение (PyQt5)
- 🌐 Веб-сервис (FastAPI)
- 📊 Автоматизированную аналитику (ydata-profiling)
(Схема взаимодействия компонентов)
- Загрузка данных из CSV, Excel, JSON, Parquet
- Удаление дубликатов
- Обработка пропущенных значений (замена средним, медианой, константой)
- Обнаружение и удаление выбросов (методы IQR, Hampel и др.)
- Масштабирование данных (нормализация MinMax, стандартизация Z-score)
- Визуализация (гистограммы, boxplot, scatter-plot и др.)
- Автоматический анализ и обработка данных
- Удаление HTML-тегов и спецсимволов
- Токенизация (по словам/предложениям)
- Удаление стоп-слов
- Нормализация (стемминг, лемматизация)
- Анализ текста с рекомендациями
- Поддержка русского и английского языков
- Обработка для NLP-задач (анализ тональности, суммаризация и др.)
- 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
pip install DPro
# Клонировать репозиторий
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- Запускуаем bash-терминал в директории вашего проекта.
- Клонируем репозиторий.
# Клонировать репозиторий git clone https://github.com/Balots/DPro.git - Создаем окружение
python -m venv .venv
# Активировать (если окруджение создано, сразу переходим к этому шагу)
source .venv/bin/activate
# Установить зависисмости
pip install -r requirements.txt🔧 Базовый интерфейс для всех классов обработки данных. Этот класс задает общие методы и логику, которые должны быть реализованы в дочерних классах для выполнения различных типов обработки данных.
Методы:
-
__init__(data: pd.DataFrame)
🛠 Инициализация с копией переданного DataFrame. Создает внутреннюю копию данных, которую можно изменять без изменения исходных данных. -
run() -> pd.DataFrame
⚙️ Абстрактный метод для выполнения обработки данных. Должен быть переопределен в каждом дочернем классе для реализации конкретной логики обработки. -
info() -> str
📝 Возвращает описание выполняемой обработки данных, объясняя, что делает конкретный класс. -
get_answ() -> pd.DataFrame
📊 Возвращает результат обработки. Этот метод вызывается для получения окончательного результата после выполнения обработки. -
_select_numeric_columns() -> list
🔍 Вспомогательный метод для выбора числовых столбцов из DataFrame. Полезен для обработки данных, которые можно подвергнуть математическим операциям.
🧹 Удаляет дубликаты и сбрасывает индексы в DataFrame, очищая данные и упрощая их обработку.
Методы:
-
run()
🧼 Выполняет удаление дубликатов и сброс индексов, возвращая обновленный DataFrame. -
info()
📝 Возвращает описание выполнения операции — удаление дубликатов и сброс индексов. -
get_answ()
📊 Возвращает результат обработки, вызывая методrun(), если обработка еще не была выполнена.
🚨 Обрабатывает пропущенные значения в данных, заменяя их на значения по выбранной стратегии (среднее, медиану, моду или заданное значение).
Аргументы:
-
numeric_strategy:'mean' | 'median'
🧮 Стратегия для числовых столбцов. Определяет, как обрабатывать пропущенные значения (среднее или медиана). -
categorical_strategy:'mode' | 'constant'
📦 Стратегия для категориальных столбцов. Пропущенные значения могут быть заменены на моду или заданное значение. -
fill_value:dict
💡 Словарь значений для использования с константной стратегией. Если не указан, для каждой категории будет использована мода. -
columns: список столбцов
📋 Список столбцов для обработки. Если не указан, будут обработаны все столбцы в DataFrame.
Методы:
-
run()
🔄 Реализует логику заполнения пропущенных значений согласно выбранной стратегии. Возвращает обновленный DataFrame. -
info()
📝 Возвращает строку с описанием выполнения операции: какие стратегии были использованы для числовых и категориальных столбцов. -
get_answ()
📊 Возвращает результат обработки, вызывая методrun(), если обработка еще не была выполнена.
📏 Нормализует данные с использованием Min-Max scaling, приводя их в диапазон от минимального до максимального значения (по умолчанию от 0 до 1).
Аргументы:
-
columns
📋 Список столбцов для нормализации. Если не указан, будет применена нормализация ко всем числовым столбцам. -
feature_range:(min, max)
🔄 Диапазон, к которому будут приведены данные. По умолчанию от 0 до 1.
Методы:
-
run()
🔄 Применяет Min-Max нормализацию к указанным столбцам. Возвращает обновленный DataFrame с нормализованными значениями. -
info()
📝 Возвращает строку с описанием нормализации, включая выбранные столбцы и диапазон. -
get_answ()
📊 Возвращает результат обработки, вызывая методrun(), если обработка еще не была выполнена.
📐 Стандартизирует данные с использованием стандартного скейлинга (Standard Scaling). Приводит данные к среднему значению 0 и стандартному отклонению 1.
Аргументы:
columns
📋 Список столбцов для стандартизации. Если не указан, будет применена стандартизация ко всем числовым столбцам.
Методы:
-
run()
🔄 Применяет стандартизацию (среднее = 0, стандартное отклонение = 1) к указанным столбцам. Возвращает обновленный DataFrame. -
info()
📝 Возвращает строку с описанием стандартизации, включая выбранные столбцы. -
get_answ()
📊 Возвращает результат обработки, вызывая методrun(), если обработка еще не была выполнена.
🚫 Удаляет выбросы в данных с использованием метода IQR (Interquartile Range). Метод находит выбросы на основе межквартильного размаха и удаляет их.
Аргументы:
-
columns
📋 Список столбцов для удаления выбросов. Если не указан, метод будет применен ко всем числовым столбцам. -
method='IQR'
🧮 Метод для удаления выбросов. В текущей реализации поддерживается только метод IQR. -
factor=1.5
🔢 Множитель для вычисления пороговых значений для определения выбросов. Обычно используется значение 1.5.
Методы:
-
run()
🔄 Применяет метод IQR для обнаружения и удаления выбросов из данных. Возвращает обновленный DataFrame. -
info()
📝 Возвращает строку с описанием применения метода IQR для удаления выбросов, включая используемый множитель. -
get_answ()
📊 Возвращает результат обработки, вызывая методrun(), если обработка еще не была выполнена.
🔍 Предварительный анализ данных Включает в себя поиск дубликатов, пропусков, выбросов, а также рекомендации по нормализации и стандартизации.
Аргументы
-
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)
💡 Рекомендует метод масштабирования (нормализацию или стандартизацию) для каждого числового столбца. Возвращает словарь с рекомендациями для каждого столбца.
Аргументы
- 🔄 те же, что и у основоного класса.
Методы
logging_results(filename)
📝 Логирует результаты работы детектора.