Связаться с нами
Закрыть
Назад в блог
Назад в блог

Визуальный анализ данных RFM-сегментации

#аналитика
19 ноября 214 просмотра 7 минут на чтение
Рассказывает
Иван Барченков
Коммерческий директор

Существует тип людей, которых принято называть визуалами. У них активна зрительно-ассоциативная функция мозга, поэтому поступающую информацию проще воспринимается через изображения, графики, таблицы и т.п. Статистика говорит о том, что к данному типу людей относится 80-85% жителей нашей планеты. 

Порой именно графики помогают определить некие закономерности между различными показателями. Построить их можно не только вручную, но и автоматически благодаря знаниям программирования. Для тех, кто слаб в данной сфере, предлагаем действовать по инструкции, указанной в статье.

Мы построим графики на основе результатов RFM-анализа. Они помогут понять, сколько клиентов находится в каждом из сегментов, сколько ежедневно осуществлялось покупок, зависимость заказов от выручки и другие. Ранее в блоге MediaNation было описано, как грамотно произвести RFM-анализ на языке программирования Python. Продолжим знакомиться с его возможностями.

Подготовительный этап

Для начала определим, какие файлы и программы пригодятся для построения графиков.

Что должно быть на компьютере перед началом работы:
  • Программный пакет Anaconda (версии 3 и выше)
  • Программа Jupyter Notebook
  • Библиотека RFMizer
  • Библиотека Plotly
  • Файлы RFM-анализа
  • Файл выгрузки из CRM в формате csv

Первым делом необходимо запустить Anaconda Navigator и программу Jupyter Notebook.

В открывшейся вкладке браузера кликаем по команде “New” и выбираем Python. 

Перед нами открывается командная строка, в которой будут прописываться все предложенные в статье команды. Для их активации кликаем по кнопке “Run”.

Переходим к построению. Создадим график для визуализации содержимого файлов:
  • исходного order.csv - файл выгрузки из CRM
  • RFM_3-3-3-365-182_mapping.csv - файл, полученный в результате проведения RFM-анализа благодаря RFMizer. 

Далее в статье будут указана последовательность команд, которые необходимо прописать в командной строке для построения соответствующих графиков. Для визуализации данных можно использовать множество библиотек на Python, но наиболее удобной нам кажется Plotly.  Перед началом создания каждого из графиков необходимо произвести импорт библиотеки и включить оффлайн мод:

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

import plotly.graph_objs as go

import pandas as pd

from plotly.subplots import make_subplots

Ниже прописываем указанные команды.


Создание графика количества заказов по дням

#активируем библиотеку на Юпитере

init_notebook_mode(connected=True)

#обращаемся к исходному файлу

df = pd.read_csv('/Users/ivanbarchenkov/Documents/rfm-test/orders.csv') 

#агрегируем данные для построения графика

count_order_date_df = df.groupby('order_date', as_index = False).user_id.count()

#задаем оси и значения

trace = go.Bar(

    x = count_order_date_df.order_date,

    y = count_order_date_df.user_id

)

#указываем название диаграммы

layout = go.Layout(

    title='Заказы по дням',

)

#выводим график

fig = go.Figure(data = [trace], layout = layout)

iplot(fig)

В результате получим наглядную статистику по количеству ежедневных заказов.

Создание графика ежедневной выручки

count_order_date_df = df.groupby('order_date', as_index = False).order_value.sum()

trace = go.Bar(

    x = count_order_date_df.order_date,

    y = count_order_date_df.order_value

)

layout = go.Layout(

    title='Выручка по дням',

)

fig = go.Figure(data = [trace], layout = layout)

iplot(fig)

Результат:

Создание графика зависимости заказов и выручки

compare_userid_df = df.groupby('order_date', as_index = False).user_id.count()

compare_value_df = df.groupby('order_date', as_index = False).order_value.sum()

fig = make_subplots(specs=[[{"secondary_y": True}]])

fig.add_trace(

go.Scatter(

x = compare_userid_df.order_date,

y = compare_userid_df.user_id,

name = 'Заказы'

 ),

secondary_y=False

)

fig.add_trace(

go.Scatter(

x = compare_value_df.order_date,

y = compare_value_df.order_value,

name = 'Выручка'

 ),

secondary_y=True

)

fig.update_layout(

title_text="Заказы и выручка по дням"

)

# Set x-axis title

fig.update_xaxes(title_text="Дни")

# Set y-axes titles

fig.update_yaxes(title_text="Заказы", secondary_y=False)

fig.update_yaxes(title_text="Выручка", secondary_y=True)

fig.show()

Результат:

Создание графика количества клиентов в каждом из сегментов R, F, M

count_frequency_df = df.groupby('frequency', as_index = False).user_id.count()

count_monetary_df = df.groupby('monetary', as_index = False).user_id.count()

count_recency_df = df.groupby('recency', as_index = False).user_id.count()

trace_frequency = go.Bar(

    x = count_frequency_df.frequency,

    y = count_frequency_df.user_id,

    name = 'frequency'

)

trace_monetary = go.Bar(

    x = count_monetary_df.monetary,

    y = count_monetary_df.user_id,

    name = 'monetary'

)

trace_recency = go.Bar(

    x = count_recency_df.recency,

    y = count_recency_df.user_id,

    name = 'recency'

)

layout = go.Layout(

    title='Количество пользователей внутри RFM',

)

fig = go.Figure(data = [trace_frequency, trace_monetary, trace_recency], layout = layout)

iplot(fig)

Результат:

Создание графика для изучения соотношения сегментов

Данные этого графика пригодятся, чтобы в дальнейшем понять какие RFM-сегменты необходимо объединить между собой в целях создания загружаемого файла для Яндекс.Аудиторий или любых других сервисах.

Напоминаем!

В Яндекс.Аудитории должно быть загружено минимум 1000 записей. 

Если в сегменте нет нужного количества пользователей, то следует либо объединить между собой пользователей из разных сегментов, либо переделать RFM-анализ с меньшим количеством сегментов.


import plotly.express as px

tips = df.groupby(['frequency', 'recency','monetary'], as_index = False).user_id.count()

fig = px.scatter(tips, x="frequency", y="recency", color="user_id", size='user_id', facet_col="monetary",

render_mode="webgl")

fig.update_yaxes(dtick=1) #делаем шаг оси равный 1

fig.show()

Результат:

Создание 3D графика

Для любителей 3D предлагаем следующую визуализацию:

tips = df.groupby(['frequency', 'recency','monetary'], as_index = False).user_id.count()

fig = px.scatter_3d(tips, x='frequency', y='recency', z='monetary',

              color='user_id', size='user_id', opacity=1)

# tight layout

fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))

fig.show()

Результат:

Потребительский рынок динамичен, поэтому требует постоянного совершенствования маркетинговых стратегий. Визуализация статистики рекламных кампаний, финансовых показателей бизнеса, покупательской активности позволяет произвести более глубокий анализ своей деятельности и взглянуть на ее результаты под иным углом. Это, в свою очередь, поможет ускорить процесс поиска новых и оптимальных идей. Кроме этого, если клиент требует наглядно продемонстрировать динамику эффективности рекламной кампании, то данная статья поможет вам автоматизировать процесс построения графиков и сократить время на выполнение поставленной задачи.

Другие статьи по теме
15 января 432 просмотра 6 минут
#аналитика
Цели в Google Analytics: как создать, настроить и установить
06 октября 222 просмотра
#аналитика
Что такое Big Data простыми словами
Большие данные становятся неотъемлемой частью нашей жизни. Все мы ежедневно используем какие-либо технологии и контактируем с продуктами и крупными компаниями. Компании предлагают нам свои продукты и, в свою очередь, используют данные, которые мы им предоставляем (начиная от отслеживания переходов на сайте и заканчивая персональной информацией при оформлении заказов). Настал момент подробнее разобраться, как собираются эти огромные потоки информации и что с ними делают.
10 сентября 180 просмотров
#аналитика
Customer Journey Map: что это, зачем, источники информации, где и как визуализировать
«Клиент редко покупает то, что бизнес ему продает», – сказал Питер Друкер, один из известных теоретиков менеджмента. Многие клиенты вкладывают другие смыслы в ваши товары и приходят к покупке с помощью тех каналов, которым вы, возможно, не уделяли внимание.
22 июля 444 просмотра 4 минуты
#аналитика
CRM-системы: что это такое и зачем они нужны
Автоматизация рабочих процессов сейчас – это привилегия не только крупного бизнеса. IT-технологии развились до такой степени, что различные аналитические системы и другие нужные продукты стали доступны малым и средним компаниям. В том числе и программы для автоматизации работы с клиентами. Если вы все еще сомневаетесь в необходимости внедрения CRM-системы, то эта статья для вас.
20 июля 154 просмотра 4 минуты
#аналитика
Применение машинного обучения в Google таблицах с помощью библиотеки Tensorflow.js и Google Apps скрипта
Тема машинного обучения сейчас очень актуальна и продолжает набирать обороты. Машинное обучение — это алгоритм, с помощью которого система распознает данные и их закономерности, предсказывает значения на основе обученной модели.
02 июня 211 просмотр 3 минуты
#аналитика
Сервис передачи расходов из Яндекс.Маркета в Яндекс.Метрику
MediaNation начала работу над созданием собственного сервиса стриминга данных – StreamMyData. Первый коннектор, который представлен в системе, позволяет передавать данные о расходах из Яндекс.Маркета в Яндекс.Метрику. Это означает, что в Метрике вы сможете видеть расходы по Яндекс.Маркету, сопоставлять их с данными по продажам и доходу и принимать решения о том, как повысить эффективность размещения на Яндекс.Маркете.
27 мая 141 просмотр 1 минута
#аналитика
Как в Google BigQuery разделить значение столбца по символу
Часто в UTM-метках используется символ вертикальной черты (|), который разделяет параметры визуально. В результате при передаче таких данных в базу два важных параметра попадают в один столбец, что затрудняет их дальнейший анализ. Возникает вопрос: как их “физически” разделить, если работа с данными ведется в Google BigQuery?
20 мая 529 просмотров 8 минут
#аналитика
Кейс: сквозная аналитика для Tilda-сайта и нестандартной CRM
Мы привыкли, что сквозная аналитика востребована в крупном ритейле, и для ее обеспечения используются большие сложные CRM. Однако этот кейс демонстрирует, что связь транзакций и источников лидов интересует всех, кто хочет грамотно подходить к маркетингу. Даже модных блогеров, чьи сайты созданы на Tilda, а используемая CRM ограничена в функционале.
23 апреля 137 просмотров 8 минут
#аналитика
Маркетинговая аналитика во времена COVID-19 – опыт Google
На днях Thinkwithgoogle.com опубликовал материал своего руководителя отдела стратегической аналитики, Авинаша Кошика, где тот рассказывает, от какой аналитической работы его отдел отказался на период пандемии, а какую продолжает вести. Любопытный материал с точки зрения отношения (очень) крупного бизнеса к текущей ситуации. Приводим наиболее интересные тезисы.
18 февраля 478 просмотров 10 минут
#аналитика
Как анализировать данные продаж с помощью Google BigQuery и Data Studio
Давайте работать?
Мы верим в ваш бизнес
Наверх