Найти наиболее часто встречающуюся пару значений Python Pandas
Есть следующий DataFrame:
Транзакция Сумма Товар
1 500 1
1 600 2
1 500 1
1 548 3
1 849 1
2 654 4
2 654 1
2 321 2
2 469 2
2 465 5
3 564 1
3 465 6
3 444 7
3 123 6
3 648 7
Необходимо найти пару самых часто встречающихся товаров в каждой транзакции и указать количество этих транзакции. В данном примере ответ должен быть товар 1 , 2 , встретился в 2 транзакциях
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Векторизированные Pandas / Numpy решения в вашем случае будут сильно уступать по скорости обработки специализированным библиотекам, которые реализуют "Apriori" алгоритм и ему подобные.
Ссылки на модули:
Автор решения: strawdog
→ Ссылка
Можно сделать группировкой (если я понял вопрос правильно):
res = df.groupby("Товар", as_index=False)["Транзакция"].nunique().sort_values("Транзакция", ascending=False).head(2)["Товар"].tolist()
res:
[1, 2]