Sales-Analysis
Не требует узкоспециализированных знаний в области экономики, статистики, маркетинга, просто загрузите имеющиеся данные.
Библиотека обработает их с помощью классических статистических методов. Поможет эффективно распорядиться ресурсами, в том числе и собственным временем. ☺️
Контент
Установка
- Сначала необходимо установить Go (требуется версия 1.15+), затем вы можете использовать приведенную ниже команду Go для установки Analysis.
go get github.com/Sales-Analysis/analysis
- Импорт
import analysis "github.com/Sales-Analysis/analysis"
For developers
Pre-commit-Go
A set of git pre-commit hooks for Golang.
Requires the Pre-Commit.com Hook Management Framework.
Установка pre-commit hook скриптов:
pre-commit install --hook-type pre-commit --hook-type commit-msg
Запуск конкретного pre-commit hook:
pre-commit run <hook_id>
Запуск pre-commit hooks для всех файлов проекта:
pre-commit run --all-files
Типы анализов
- ABC
XYZ
ABC-XYZ
FMR
RFM
VEN
ABC
Что такое АВС анализ?
ABC анализ продаж выявляет долю каждого из товаров (или категории) в общем обороте, ранжирует ассортиментные позиции (или категории) по степени значимости их вклада в общий оборот, присваивая условные классы: A, B, C
A – имеющие максимальную долю в обороте, суммарно составляющие 80% от общего оборота
B – следующие по степени важности вносимой доли, суммарно составляющие 15% оборота
C – наименее эффективные товары с минимально вносимой долей в оборот, суммарно 5%
Для расчёта требуется
Список товаров (и/или товарных категорий) с указанием продаж/прибыли по каждому
Пример исходных данных:
Наименование |
Продажи |
Коробка 20*20 |
5 850,00р. |
Коробка 20*12 |
4 500,00р. |
Коробка 10*10 |
2 000,00р. |
Схема расчёта
-
Сортируется список по убыванию значения продаж
-
Определяется общая сумму продаж
-
Определяется доля продаж по каждой анализируемой позиции (продажи по каждой делим на общую сумму, выводятся значение в %). Значения выносятся новым столбцом «доля»
-
Считается накопленная доля нарастающим итогом. Для первой позиции (первая – с максимальной долей, учитывая убывающую сортировку!) накопленная доля равнозначна доли, рассчитанной ранее. Начиная со второй, накопленная доля определяется суммой доли данной позиции и накопительной доли предыдущей позиции. Значения выносятся новым столбцом «накопленная доля»
-
Присваиваются категории A/B/C:
Группа A – позиции, наколенный итог, которых составляет до 80% (начиная с первой позиции в списке до той, значение, которой приближено или равно 80% присваивается «А»)
Группа B – позиции, накопленный итог которых от 80% до 95% (первая позиция, которой будет присвоена группа «B» - следующая, за нижней границей группы «А», последняя - значение, которой приближено или равно 95%)
Группа C – позиции, накопленный итог 95% - 100% (начиная с первой позиции после нижней границы группы B до последней в списке присваивается «С»)
Наименование |
Продажи |
Доля продаж |
Накопительная доля |
Категории |
Коробка 1 |
100,00р |
57% |
57% |
A |
Коробка 2 |
50,00р |
28% |
85% |
B |
Коробка 3 |
20,00р |
11% |
97% |
C |
Коробка 4 |
5,00р |
2% |
100% |
C |
Получение отчета ABC
Функция для расчета анализа abc
// pluID - код идентификатор PLU (артикулы, любые коды и тд)
// measures - наименование анализируемых позиций
// dimensions - данные по анализируемому критерию (продажи/оборот/прибыль)
func ABC(pluID []int64, measures []string, dimensions []float64) (*abc.ABC, error)
Формат возвращаемой структуры
type ABC struct {
Measures []string // Наименование анализируемых позиций
Dimensions []float64 // Данные по анализируемому критерию (продажи/оборот/прибыль)
Deposit []float64 // Доля продаж
CumulativeShare []float64 // Накопительная доля
Group []string // Категории
Duplicates []duplicate // Дубликаты анализируемых позиций, которые не попали в расчет
}
Коды ошибок
measuresNotEqualZero = "Measure size is 0"
dimensionsNotEqualZero = "Dimension size is 0"
measuresNotEqualDimensions = "Size measure and dimension to equal"
negativeValueDimensions = "In the dimensions is a negative value"