Форум сайта python.su
Добрый день! Подскажите пожалуйста, хотя бы в какую сторону смотреть для решения задачи:
“Какая пара различных товаров чаще всего встречается в различных покупках?”
Я преобразовал данные: левый столбец - покупки, справа от него - товары, которые в одной покупке.
Что делать дальше, не соображу. Как определить пару самых часто встречающихся в одной покупке товаров?
Как составить пары? Как определить что именно эта пара наиболее часто встречающаяся?
Буду рад даже маленькой подсказке, спасибо!)
Пример датафрейма с яндекс.диска почему-то не грузится Надеюсь, суть задачи понятна из описания. Есть столбец с номерами покупки, есть столбец с товарами, которые входят в ту или иную покупку, надо определить наиболее часто встречающуюся в покупках пару.
Отредактировано Z_e_e_k_ (Дек. 5, 2021 17:02:46)
Офлайн
чет нечего не понятно что где чего как?хотя … https://pythonworld.ru/tipy-dannyx-v-python/mnozhestva-set-i-frozenset.html мбыть а не
хз чет подобное (не пандас) хотя при большом количестве позиций такое
import itertools a = [1, 2, 3] b = [1, 3, 4, 5] c = set(a + b) print(c) d = [i for i in itertools.combinations(c, 2) if i[0] != i[1]] print(d) e = {i: j for i, j in enumerate(d)} print(e) f =[a, b] print(f) g = {i: 0 for i in e} for i in e: for j in f: if e[i][0] in j and e[i][1] in j: g[i] += 1 print(g) # e[1] or (1, 3)
{1, 2, 3, 4, 5} [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)] {0: (1, 2), 1: (1, 3), 2: (1, 4), 3: (1, 5), 4: (2, 3), 5: (2, 4), 6: (2, 5), 7: (3, 4), 8: (3, 5), 9: (4, 5)} [[1, 2, 3], [1, 3, 4, 5]] {0: 1, 1: 2, 2: 1, 3: 1, 4: 1, 5: 0, 6: 0, 7: 1, 8: 1, 9: 1}
Отредактировано AD0DE412 (Дек. 6, 2021 09:35:14)
Офлайн
AD0DE412Благодарю, это идея, пошёл читать и думать, как применить)
import itertools
var_unique = list(work5['InvoiceNo'].unique()) # Только уникальные покупки descr = [] buy = {} name = var[0][0] for n_buy in var_unique: work6 = work5[work5['InvoiceNo'] == n_buy] buy[n_buy] = list(work6['Description'].unique()) # Раскрываем комбинаторные итераторы new = {} for i in buy: new[i] = itr.combinations(buy[i], 2) # Раскрываем комбинаторные итераторы neww = {} for i in new: test = [] for j in new[i]: test.append(j) test.append((j[1], j[0])) neww[i] = test # Создадим полный список уникальных пар pairs = [] for i in neww: for j in neww[i]: pairs.append(j) pairs for i in pairs: if pairs.count(i) > 5: print('Пара: ', i) print('Встречается столько раз: ', pairs.count(i))
Отредактировано Z_e_e_k_ (Дек. 17, 2021 16:25:34)
Офлайн