Сервис по анализу продаж не требует узкоспециализированных знаний в области экономики, статистики, маркетинга.
Не требует узкоспециализированных знаний в области экономики, статистики, маркетинга, просто загрузите имеющиеся данные.
Библиотека обработает их с помощью классических статистических методов. Поможет эффективно распорядиться ресурсами, в том числе и собственным временем. ☺️
Сначала необходимо установить Go (требуется версия 1.15+), затем вы можете использовать приведенную ниже команду Go для установки Analysis.
go get github.com/Sales-Analysis/analysis
Импорт
import analysis "github.com/Sales-Analysis/analysis"
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 анализ продаж выявляет долю каждого из товаров (или категории) в общем обороте, ранжирует ассортиментные позиции (или категории) по степени значимости их вклада в общий оборот, присваивая условные классы: 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 |
// 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"