Как же достала эта чёрная пятница!
Проскакивала эта мысль в голове за последнюю неделю? Каждый год одно и то же: тебя забрасывают рекламными сообщениями и говорят, что тебе невероятно повезло и ты можешь крупно сэкономить.
Что ж, возможно, кому-то это удавалось. Я же понял, что это очень хорошая возможность заработать для магазинов, и небольшая возможность купить что-то классное по действительно выгодной цене.
Тоже так думаете? Считаете, что никто не покупает в этот период? Как бы не так. И сегодня вы в этом убедитесь!
Сегодняшний датасет почти в 50 раз больше, чем в первом исследовании! В нём 537 577 наблюдений.
Это база данных одного из ритейлеров, в котором содержатся наблюдения покупок в период чёрной пятницы.
Посмотрим, какие наблюдения он содержит:
В описании данных не было расшифровки категорий продукта и профессий, а также точных критериев для размерности города. Также неизвестны страна и название ритейлера и за какой временной период собирались данные.
Мне удалось найти описание классификации городов по схожей схеме, и она учитывает размер заработных плат в этом городе. Будем считать, что город класса A выше по оплате труда, чем С.
Итого мы имеем:
## Observations: 537,577
## Variables: 12
## $ User_ID <int> 1000001, 1000001, 1000001, 1000001,...
## $ Product_ID <chr> "P00069042", "P00248942", "P0008784...
## $ Gender <chr> "F", "F", "F", "F", "M", "M", "M", ...
## $ Age <chr> "0-17", "0-17", "0-17", "0-17", "55...
## $ Occupation <int> 10, 10, 10, 10, 16, 15, 7, 7, 7, 20...
## $ City_Category <chr> "A", "A", "A", "A", "C", "A", "B", ...
## $ Stay_In_Current_City_Years <chr> "2", "2", "2", "2", "4+", "3", "2",...
## $ Marital_Status <int> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,...
## $ Product_Category_1 <int> 3, 1, 12, 12, 8, 1, 1, 1, 1, 8, 5, ...
## $ Product_Category_2 <int> NA, 6, NA, 14, NA, 2, 8, 15, 16, NA...
## $ Product_Category_3 <int> NA, 14, NA, NA, NA, NA, 17, NA, NA,...
## $ Purchase <int> 8370, 15200, 1422, 1057, 7969, 1522...
Какие у вас возникли вопросы при просмотре структуры датасета? У меня сразу же возникли следующие:
Их и будем проверять. Кстати, если вы хотели бы участвовать в формировании вопросов для анализа, напишите в комментарии или личные сообщения!
Формат будет такой: я публикую описание датасета, вы пишете вопросы, на которые хотели бы узнать ответы. Потом я ищу ответы на ваши вопросы в датасете.
Если вам не интересно, как сначала обрабатываются данные, можете смело переходить к блоку анализа.
Работа с датасетом происходит в R version 3.5.1 (2018-07-02).
Проверяем на наличие пропусков в записях, чтобы понимать, на каких данных столбцах могут некорректно отрабатывать функции:
## col_num na_nums
## User_ID 1 0
## Product_ID 2 0
## Gender 3 0
## Age 4 0
## Occupation 5 0
## City_Category 6 0
## Stay_In_Current_City_Years 7 0
## Marital_Status 8 0
## Product_Category_1 9 0
## Product_Category_2 10 166986
## Product_Category_3 11 373299
## Purchase 12 0
Можно сказать, что нам крупно повезло – основная часть данных не содержит пропусков, а та, что содержит, в контексте данного анализа неважна для нас. Поэтому удалим колонки Product_Category_2, Product_Category_3.
Дальше проверим, какие данные лучше превратить в факторы – это позволит быстрее группировать данные в дальнейшем:
## col_num freq
## User_ID 1 5891
## Product_ID 2 3623
## Gender 3 2
## Age 4 7
## Occupation 5 21
## City_Category 6 3
## Stay_In_Current_City_Years 7 5
## Marital_Status 8 2
## Product_Category_1 9 18
## Product_Category_2 10 18
## Product_Category_3 11 16
## Purchase 12 17959
Все колонки со значением freq меньше 25 преобразуем в фактор.
После первичных преобразований получаем следующий датасет:
## Observations: 537,577
## Variables: 10
## $ User_ID <int> 1000001, 1000001, 1000001, 1000001,...
## $ Product_ID <chr> "P00069042", "P00248942", "P0008784...
## $ Gender <fct> Female, Female, Female, Female, Mal...
## $ Age <fct> 0-17, 0-17, 0-17, 0-17, 55+, 26-35,...
## $ Occupation <fct> 10, 10, 10, 10, 16, 15, 7, 7, 7, 20...
## $ City_Category <fct> A, A, A, A, C, A, B, B, B, A, A, A,...
## $ Stay_In_Current_City_Years <fct> 2, 2, 2, 2, 4+, 3, 2, 2, 2, 1, 1, 1...
## $ Marital_Status <fct> Not Married, Not Married, Not Marri...
## $ Product_Category_1 <fct> 3, 1, 12, 12, 8, 1, 1, 1, 1, 8, 5, ...
## $ Purchase <int> 8370, 15200, 1422, 1057, 7969, 1522...
Чтобы ответить на первые три вопроса, нам понадобится выборка, сгруппированная по каждому пользователю. Всего в данных 537577 строк, а уникальных пользователей 5891 – это говорит о том, что в наборе данных на каждого пользователя по несколько покупок. Формируем сабсет:
## Observations: 5,891
## Variables: 9
## $ User_ID <int> 1004277, 1001680, 1002909, 1001941,...
## $ Gender <fct> Male, Male, Male, Male, Male, Male,...
## $ Age <fct> 36-45, 26-35, 26-35, 36-45, 26-35, ...
## $ Marital_Status <fct> Not Married, Married, Not Married, ...
## $ Stay_In_Current_City_Years <fct> 0, 3, 1, 1, 3, 0, 4+, 0, 3, 3, 1, 1...
## $ City_Category <fct> A, A, A, A, A, A, A, A, A, A, A, A,...
## $ purchases <int> 978, 1025, 717, 898, 694, 574, 739,...
## $ sum_p_thous <S3: formattable> $10,536.78, $8,699.23, ...
## $ avg_purch_thous <S3: formattable> $10.77, $8.49, $10.57, ...
Для удобства анализа все денежные данные приведены к формату валюты. Также для удобства восприятия сумма покупок представляется в тысячах.
На графике видим, что три последних значения сильно отклоняются от выборки – это выборсы. Так как они могут искажать выводы и результаты тестов, удаляем.
Данная выборка позволит понять абсолютную разницу между поведением покупателей в зависимости от семейного положения по целевым показателям:
## Observations: 12
## Variables: 5
## $ Age <fct> 18-25, 18-25, 26-35, 26-35, 36-45, 36-45, 46-50, 46...
## $ Gender <fct> Female, Male, Female, Male, Female, Male, Female, M...
## $ diff_p <dbl> -5, 14, 3, 0, 4, -3, -11, -6, 5, 0, 12, -2
## $ diff_avg_p <S3: formattable> $0.36, $-0.31, $-0.33, $0.12, $0.20, $0...
## $ diff_sum_p <S3: formattable> $7.84, $128.90, $-2.10, $10.79, $42.87,...
Благодаря этому датасету мы получим ответы на вопросы, связанные с типами городов:
## Observations: 376
## Variables: 10
## $ City_Category <fct> B, B, C, A, B, B, B, B, C, A, A, A,...
## $ Gender <fct> Male, Male, Male, Male, Male, Male,...
## $ Age <fct> 26-35, 26-35, 26-35, 26-35, 26-35, ...
## $ Marital_Status <fct> Not Married, Married, Not Married, ...
## $ Stay_In_Current_City_Years <fct> 1, 1, 1, 1, 3, 2, 1, 1, 1, 2, 3, 4+...
## $ users <int> 98, 71, 136, 69, 48, 59, 63, 57, 10...
## $ purchases <int> 14619, 9748, 8576, 9114, 8714, 8460...
## $ sum_p_thous <S3: formattable> $138,838.71, $92,520.21...
## $ avg_purch_thous <S3: formattable> $1,416.72, $1,303.10, $...
## $ avg_purch_per_order <S3: formattable> $9.50, $9.49, $10.02, $...
На этом обработка и предобработка данных завершена.
Для начала посмотрим, кто делает больше покупок?
На (Рис. 1) видим, что женщины совершают меньше покупок. В среднем женщины покупают 79 товаров, а мужчины 95.
Сделаем чуть более наглядный график: Тест Стьюдента показывает, что различия значимые, так как p-value – 0.014. Подробнее о тесте.
Те, кто не в браке – покупают больше (Рис. 2). Возможно, это связано с тем, что в браке добавляются такие статьи расходов, как ребёнок, ипотека и прочее.
Мужчины больше тратят, чем женщины, причём существенно – на 30% (Рис. 3). Женщины в среднем тратят $699.05, а мужчны $906.26 тысяч долларов.
Тест Стьюдента показывает, что различия значимые, так как p-value – 0.014. Подробнее о тесте.
На (Рис. 4) видим, что люди не в браке тратят больше. Возможно, это связано с тем, что количество покупок у них тоже больше. Давайте выявим корреляцию. Её коэффициент составляет: 0.9787397. Это говорит практически об абсолютной взаимосвязи (максимальное значение коэффициента – 1).
Тест Стьюдента показывает, что различия значимые, так как p-value – 0.028. Подробнее о тесте.
По среднему чеку видим (Рис. 5), что мужчины на каждую покупку тратят на 9% больше женщин.
Замужние женщины начинают тратить больше, а женатые мужчины незначительно меньше (Рис. 6). Возможно, это связано с тем, что в некоторых семьях присутствуют общие бюджеты, из которых женщина делает дополнительные покупки для быта, семьи или себя.
Давайте чуть глубже взглянем на разницу в совершении покупок для людей, которые вошли в брак и тех, кто ещё нет.
Для этого сделали отдельный датасет. Так как выше мы обнаружили, что люди не в браке тратят больше, то все следующие графики, будут представлены, как разница между внебрачными и брачными людьми.
Отрицательные значения на графике говорят о том, что до брака люди тратят меньше, чем в браке.
Здесь видим очень большую разницу для мужчин категории 18-25 лет (Рис. 7). Возможно, это связано с тем, что молодые мужчины вне брака тратят всё на своё развитие, развлечения и получение опыта. Мужчины же в браке могут быть обременены ипотекой, кредитами или расходами на ребёнка и жену.
Касательно остальных возрастных категорий пусть каждый сделает свои предположения и напишет их в комментариях, мы вместе обсудим и определим наиболее интересную догадку.
Главные отклонения наблюдаются по тем же категориям, что количество покупок (Рис. 7).
При этом видим (Рис. 8), что практически все люди, кроме категории 46-50, вне брака тратят больше, чем в браке.
С чем это может быть связано? Больше денег уходит на быт и ребёнка? Ответить сложно, так как мы не знаем конкретной страны и год, в которые собиралась данная статистика. Если бы у нас была данная информация, то мы согли бы её собрать и дополнить картину.
По среднему чеку видим любопытные отклонения (Рис. 9). Помним, что мужчины категории 18-25 делают больше покупок (Рис. 7), но при этом это менее дорогие покупки, чем у женщин.
Можно сделать предположение, что они тратят больше денег на безделушки или ещё не задумываются о качестве покупаемого товара, выбирая более дешёвые вещи.
Напомню, что в датасете города разбиты на три категории – A, B, C. Удалось найти похожую классификацию городов. Поэтому будем придерживаться позиции, что город класса A наполняют люди с большим доходом, чем в городе класса C. Соответственно, доходы жителей: A > B > C.
Предварительно поймём, сколько людей живёт в каждом типе городов:
Количество людей распределяется в зависимости от достатка – чем выше достаток, тем меньше людей (Рис. 10).
Видим, что в чёрную пятницу гораздо больше покупок совершают жители городов категории B (Рис. 11). Они делают на 60% больше покупок, чем жители городов типа A, и на 36% больше покупок, чем жители городов типа C.
В свою очередь жители городов типа C делают на 17% больше покупок, чем жители городов типа A.
Наблюдаем, что корреляция между количеством покупок и суммой продолжает сохраняться. Жители городов категории B делают на 64% больше покупок, чем жители городов типа A, и на 27% больше покупок, чем жители городов типа C (Рис. 12).
В свою очередь жители городов типа C делают на 29% больше покупок, чем жители городов типа A.
Cредний чек больше всего у жителей городов типа A и видим взаимосвязь – чем выше класс города, тем больше средний чек.
Средний чек значительно меньше в городах категории C: на 130%, чем у жителей городов типа A, и на 127%, чем у жителей городов типа B (Рис. 13).
Никак.
Почти.
Если вам интересно посмотреть на графики, показывающие это – листайте дальше. Если нет – переключайтесь к определению портрета самой платёжеспособной аудитории.
Видим, что наибольшее количество людей проживает в каждом типе городов около 1 года, а распределение по количеству лет одинаковое для каждого класса городов (Рис. 14).
Это может говорить о большом количестве приезжих людей. Всего людей, проживающих в городе дольше 4-х лет только 15.4%.
Тест Стьюдента показывает, что различия значимые, так как p-value – 0. Подробнее о тесте.
Тест Стьюдента показывает, что всё же различия значимые, так как p-value – 0. Подробнее о тесте.
Тест Стьюдента показывает, что всё же различия значимые, так как p-value – 0. Подробнее о тесте.
Итак, мы подошли к самому главному – на кого стоило бы таргетировать свою рекламу с точки зрения полученных денег? Графики ниже интерактивные. Вы можете выбрать нужную возрастную категорию:
На графике (Рис. 18) мы видим, что с точки зрения выручки самая привлекательная для нас аудитория – неженатые мужчины 26-35 лет из города категории B.
Убедимся в этом и для удобства упорядочим график и выстроим все категории людей в единую линию:
C точки зрения абсолютного дохода самыми привлекательными являются: Not Married, Male, 26-35, B, Not Married, Male, 26-35, A, Married, Male, 26-35, B.
Если же смотреть на метрику “доход на пользователя”, которая учитывает то, сколько людей находится в каждом типе города, то увидим другую картину:
Разрыв между категориями людей уже не такой большой, как в количестве покупок. И наиболее привлекательными являются категории: Not Married, Female, 0-17, A, Not Married, Female, 0-17, B, Not Married, Female, 0-17, C.
Холостые мужчины находятся лишь на 25 месте.
Если бы магазин привлёк больше таких пользователей, то в идеальном случае мог бы получить на $40,196,985.94 больше дохода. Конечно, это не учитывает изменение среднего чека при увеличении аудитории и многих других факторов.
В чёрную пятницу: