Найти - Пользователи
Полная версия: Pandas, определить пару наиболее часто встречающихся значений
Начало » Python для новичков » Pandas, определить пару наиболее часто встречающихся значений
1
Z_e_e_k_
Добрый день! Подскажите пожалуйста, хотя бы в какую сторону смотреть для решения задачи:
“Какая пара различных товаров чаще всего встречается в различных покупках?”
Я преобразовал данные: левый столбец - покупки, справа от него - товары, которые в одной покупке.
Что делать дальше, не соображу. Как определить пару самых часто встречающихся в одной покупке товаров?
Как составить пары? Как определить что именно эта пара наиболее часто встречающаяся?
Буду рад даже маленькой подсказке, спасибо!)


Пример датафрейма с яндекс.диска почему-то не грузится Надеюсь, суть задачи понятна из описания. Есть столбец с номерами покупки, есть столбец с товарами, которые входят в ту или иную покупку, надо определить наиболее часто встречающуюся в покупках пару.


AD0DE412

чет нечего не понятно что где чего как?
хотя … 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}

и при равном колчстве лидеров тоже не пнятно че делать
зы сорян за названия переменных но чет в голову не че не пришло говорящего
Z_e_e_k_
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))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB