Разделение данных по различным группам по дате для каждого уникального клиента - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть поездки клиентов на 100 000 клиентов.Путешествие клиента отображает каждое взаимодействие с клиентом в нашей программе, начиная с даты, когда он зарегистрировался, до того, как он покинул программу или перестал работать.

customer_id| event_name  | event_date

1          | entered     |2019-07

1          | purchase = 2|2019-07

1          | purchase = 2|2019-07

1          |went_inactive|2019-02

2          | entered     |2019-07

2          | purchase = 0|2019-07

2          | purchase = 2|2019-07

3          | went_inactive|2018-08

Я пытаюсь разделить данные на тестовые и обучающие на основе даты

Я хочу создать функцию для разделения данных, чтобы у меня была группа клиентов, которые былиактивен в январе 2019 года. Данные охватывают период с 2010 года по настоящее время.Люди в группе X - это клиенты, у которых после 31 января 2019 года есть неактивные данные, и те, у кого нет неактивной даты.Затем для всех клиентов в группе XI я хочу создать подмножество пациентов, которые перешли в неактивное состояние в феврале 2019 года.

Я не знаю, как отфильтровать каждый уникальный путь клиента и принимать людей только в определенную дату.

Цель состоит в том, чтобы создать функцию, которая могла бы проследить путь клиента для 100 000 пациентов и затем разбить данные на группы. Так что у X будет клиент 1 + 2, а не 3. Ценю всю помощь.

1 Ответ

0 голосов
/ 19 сентября 2019

Начните с вычисления набора customer_id для клиентов, которые неактивны в 2019-01 или ранее:

inact = set(df.query('event_name == "went_inactive" and event_date <= "2019-01"')\
    .customer_id)

Для данных образца это {3}.

Затем вычислите результат следующим образом:

act = list(set(df.customer_id).difference(inact))

Результат просто [1, 2].

Или, может быть, просто set (...) достаточно?Позже вы можете, например, захотеть получить строки для активных клиентов, выполнив:

df.query('customer_id in @act')

Он будет работать, когда act является либо списком , либо набором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...