Сгруппируйте по каждому уникальному идентификатору, а затем найдите количество покупок для каждого бренда - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть данные о покупках за последние 3 года. Пример ниже:

 customer_id|date      |sales_amount|product_type
 479485     |20190120  | 500        | bags
 479485     |20180320  | 200        | clothes
 479485     |20180321  | 200        | clothes
 472848     |20191020  | 100        | clothes

Я хочу найти для каждого уникального идентификатора клиента количество транзакций, которые они провели за три года для другого типа продукта. В идеале значение рассчитывать на тип продукта для каждого уникального идентификатора клиента. Таким образом, для customer_id = 479485 вывод:

 customer_id
 479485     |bags      | 1       
            |clothes   | 2   

Я пытался сделать сводную таблицу, но она не дает мне идеальный результат:

pd.pivot_table(clusters, index=['customer_id', 'product_type'], aggfunc='sum')

бонус: если я хотел сделать то же самое, но посмотреть на это, но разделить его по годам, возможно ли это?

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Если исходные данные выглядят так:

df=pd.DataFrame({'cust_id':[479485,479485,479485,472848],
                 'date':['20190120','20180320','20180321','20191020'],
                 'sales_amount':[500,200,200,100],
                 'product_type':['bags','clothes','clothes','clothes']})

Я бы сделал что-то вроде этого:

df.groupby(['cust_id','product_type'])['sales_amount'].count()

Группировка по годам, конечно, возможна. Есть несколько вариантов, но вам нужно обратиться к библиотеке datetime, чтобы преобразовать столбец date в объект datetime, а затем поработать над этим.

0 голосов
/ 14 февраля 2020

Это должно работать:

temp = df.groupby(['customer_id', 'product_type'])['date'].count()

temp
customer_id  product_type
472848       clothes         1
479485       bags            1
             clothes         2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...