Содержание
Причины возвратов по каналам: выберите знаменатель в crosstab
В одном канале больше возвратов с повреждениями, но и самих возвратов там больше. Чтобы сравнить структуру причин, считайте долю внутри канала. Доля канала среди всех повреждений отвечает на другой вопрос. В pandas эти расчёты переключаются параметром normalize функции crosstab.
Подготовьте реестр событий
Нужна таблица returns с полями channel и reason. Здесь одна строка означает один подтверждённый случай возврата с одной основной причиной. До расчёта выберите единицу: случай, товарную единицу или документ. Пример ниже считает строки, а не сумму количества. Если выгрузка содержит несколько товарных строк одного случая, сначала приведите её к выбранной единице.
Согласуйте причины: заявление покупателя и результат складского осмотра нельзя незаметно объединять в один справочник. Проверьте повторы по реальному идентификатору события. Пустые причины вынесите в список для разбора; если нужна полная структура, заранее присвойте им отдельную согласованную категорию «Не установлена». Это категория неизвестности, а не установленная причина.
Сохраните количества рядом с долями
import pandas as pd
counts = pd.crosstab(returns['channel'], returns['reason'])
within_channel = pd.crosstab(
returns['channel'], returns['reason'], normalize='index'
)
within_reason = pd.crosstab(
returns['channel'], returns['reason'], normalize='columns'
)
По документации pandas, обычная crosstab считает частоты, normalize='index' нормирует строки, а normalize='columns' нормирует столбцы. При выбранном расположении каналов в строках первый вариант показывает состав причин внутри канала, второй распределяет каждую причину между каналами.
Проверьте вопрос к каждой таблице
Для within_channel выберите ячейку и разделите её исходное количество на сумму строки counts. Для within_reason разделите на сумму соответствующего столбца. Результат должен совпасть с таблицей долей до округления. Для отображения в процентах умножьте доли на 100; не подписывайте исходные значения от 0 до 1 как проценты.
Если таблица пустая или неполная, проверьте пропуски и индексы входных Series. Безопаснее брать оба поля из одного подготовленного DataFrame: crosstab выравнивает Series по индексам. Изменение индекса только одной серии может изменить состав наблюдений.
Ограничьте вывод
Эта таблица показывает состав уже зарегистрированных возвратов. Она не измеряет вероятность возврата покупки: для этого потребуются исходные продажи и связь с ними. Сохраните counts, период, единицу наблюдения, число исключённых записей и используемый знаменатель рядом с процентами. Небольшие группы рассматривайте по исходным случаям, а не ранжируйте по одному проценту.
Если в канале выделилась определённая причина, следующий шаг: открыть реальные случаи и проверить товар, упаковку и описание. Таблица указывает, что изучать; сама по себе она не доказывает причину различия каналов.
Комментарии 0