Перейти к содержанию
Содержание

Причины возвратов по каналам: выберите знаменатель в crosstab

В одном канале больше возвратов с повреждениями, но и самих возвратов там больше. Чтобы сравнить структуру причин, считайте долю внутри канала. Доля канала среди всех повреждений отвечает на другой вопрос. В pandas эти расчёты переключаются параметром normalize функции crosstab.

Подготовьте реестр событий

Нужна таблица returns с полями channel и reason. Здесь одна строка означает один подтверждённый случай возврата с одной основной причиной. До расчёта выберите единицу: случай, товарную единицу или документ. Пример ниже считает строки, а не сумму количества. Если выгрузка содержит несколько товарных строк одного случая, сначала приведите её к выбранной единице.

Причины возвратов по каналам: выберите знаменатель в crosstab

Согласуйте причины: заявление покупателя и результат складского осмотра нельзя незаметно объединять в один справочник. Проверьте повторы по реальному идентификатору события. Пустые причины вынесите в список для разбора; если нужна полная структура, заранее присвойте им отдельную согласованную категорию «Не установлена». Это категория неизвестности, а не установленная причина.

Сохраните количества рядом с долями

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

0 / 1500

Популярные статьи