Как посчитать «оттекших» клиентов в Pandas? (Клиенты, которые перестали покупать регулярно) - PullRequest
0 голосов
/ 03 августа 2020

Я почистил и отформатировал некоторые данные. Среди прочего, у меня есть следующие столбцы: Имя, Дата заказа и Подписка (с логическими значениями).

Как бы вы достигли этого в pandas?

Пример DataFrame:

    Date    Name                Subscription
2020/06     Super Mario             False   

2020/06     Princess Peach      False 

2020/06     Bowser              False   

2020/06     Koopa               False   

2020/06     Yoshi               False   

Многие из этих клиентов приходят с несколькими датами.

1 Ответ

1 голос
/ 03 августа 2020

Отток клиентов - это когда существующие клиенты перестают вести с вами бизнес. Это может означать разные вещи в зависимости от характера вашего бизнеса. Примеры включают:

Отмена подписки

  1. Закрытие учетной записи
  2. Непродление контракта или соглашения об обслуживании
  3. Решение потребителя совершайте покупки в другом магазине / пользуйтесь услугами другого поставщика услуг

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

Примеры данных:

import pandas as pd
import datetime as dt
df = pd.DataFrame({'Date':['2020-06-30','2020-05-05','2020-04-10','2020-02-26'],'Name':['Super Mario','Princess Peach','Bowser','Super Mario'],'Subscription':['False','False','False','False']})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

Используя данные, мы получим макс. даты транзакции для каждого клиента и решить, ушел ли клиент или выжил.

last_trans=df.groupby('Name')['Date'].max().reset_index()

Получить Текущая дата для расчета продолжительности последней покупки.

today=pd.to_datetime(dt.date.today())
last_trans['last_purchase']=today-last_trans['Date']
last_trans['last_purchase']=last_trans['last_purchase'].apply(lambda x: x.days)

Я рассматриваю 90-дневный интервал подумать о том, ушел ли клиент. (т. е. если клиент не совершил покупку в течение последних 90 дней, я считаю, что это было оставлено, иначе выжило).

last_trans.loc[last_trans['last_purchase']>90,'Category']='Churned'
last_trans.loc[last_trans['last_purchase']<=90,'Category']='Survived'
...