Digitscape Analyzer - это инструмент для анализа числовых данных из Excel-файлов, специализирующийся на поиске отклонений от математической модели и анализе равномерности распределения.
- Загрузка данных из Excel-файлов (.xlsx, .xls)
- Анализ распределения данных на нормальность и равномерность
- Проверка случайности последовательности чисел
- Визуализация распределения данных
- Генерация выводов о потенциальных аномалиях в данных
-
Проверка на нормальность распределения: Использует тест D'Agostino-Pearson для определения, соответствует ли распределение данных нормальному закону.
-
Анализ равномерности распределения: Применяет тест Колмогорова-Смирнова для проверки гипотезы о равномерном распределении данных.
-
Тест на случайность последовательности: Использует Run test для определения, является ли последовательность чисел случайной.
-
Визуализация распределения: Создает гистограммы с наложенной кривой плотности вероятности для наглядного представления распределения данных.
-
Статистические пороги:
- p_value < 0.05: Используется для определения статистической значимости в нескольких тестах
if p_value_normal < 0.05: conclusions.append(" Распределение значимо отличается от нормального (p < 0.05)") else: conclusions.append(" Распределение не отличается значимо от нормального (p >= 0.05)")
- p_value < 0.05: Используется для определения статистической значимости в нескольких тестах
-
Анализ выбросов:
- Используется метод межквартильного размаха (IQR)
- Нижняя граница: Q1 - 1.5 * IQR
- Верхняя граница: Q3 + 1.5 * IQR
Q1 = np.percentile(data, 25) Q3 = np.percentile(data, 75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR
-
Анализ периодичности:
- Используется автокорреляция с лагом до 50 или половины длины данных
autocorr = [pd.Series(data).autocorr(lag=i) for i in range(1, min(len(data) // 2, 50))]
- Используется автокорреляция с лагом до 50 или половины длины данных
-
Визуализация:
- Используется 20 бинов для гистограммы
sns.histplot(self.analyzer.data[column_name], bins=20, kde=True, ax=ax)
- Используется 20 бинов для гистограммы
-
Многопоточность:
- Используется ThreadPoolExecutor для асинхронных операций
self.executor = ThreadPoolExecutor()
- Используется ThreadPoolExecutor для асинхронных операций
-
Обработка данных:
- Используется pandas для чтения Excel-файлов
- numpy для статистических вычислений
- scipy для статистических тестов (normaltest, kstest, mannwhitneyu)
- seaborn для визуализации
- Использование асинхронного программирования (asyncio) для улучшения производительности при работе с файлами и анализе данных.
- Применение статистических тестов для анализа распределения, трендов и периодичности.
- Комбинирование различных библиотек (pandas, numpy, scipy, matplotlib) для комплексного анализа данных.
- Использование объектно-ориентированного подхода для структурирования кода (классы DigitscapeAnalyzer и DigitscapeGUI).
- Применение обработки исключений для повышения устойчивости программы к ошибкам.
- Python 3.7+
- pandas
- numpy
- matplotlib
- seaborn
- scipy
- customtkinter
-
Клонируйте репозиторий:
git clone https://github.com/GendByteMaster/digitscape.git -
Перейдите в директорию проекта:
cd digitscape -
Установите необходимые зависимости:
pip install -r requirements.txt
Запустите программу, выполнив следующую команду в терминале:
python main.py
- Выберите Excel-файл с данными для анализа.
- Укажите столбцы, которые необходимо проанализировать.
- Нажмите кнопку "Анализировать".
- Просмотрите результаты анализа и сгенерированные графики.
- Программа выдает p-значения для каждого проведенного теста. P-значение менее 0.05 указывает на статистически значимое отклонение от ожидаемой модели.
- Визуальные графики помогают интуитивно оценить распределение данных.
- Выводы программы указывают на потенциальные аномалии или интересные паттерны в данных, которые могут требовать дальнейшего исследования.
Мы приветствуем вклад в развитие проекта! Если у вас есть идеи по улучшению Digitscape Analyzer, пожалуйста, создайте issue или отправьте pull request.
Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.